vibedoc 1.11.0 → 1.12.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/app-path-routes-manifest.json +2 -0
- package/.next/build-manifest.json +3 -3
- package/.next/prerender-manifest.json +14 -14
- package/.next/routes-manifest.json +12 -0
- 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.js.nft.json +1 -1
- package/.next/server/app/(app)/board/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(app)/chat/page.js.nft.json +1 -1
- package/.next/server/app/(app)/chat/page_client-reference-manifest.js +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.js.nft.json +1 -1
- package/.next/server/app/(app)/explorer/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(app)/graph/page.js.nft.json +1 -1
- package/.next/server/app/(app)/graph/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(app)/manual-tests/page.js.nft.json +1 -1
- package/.next/server/app/(app)/manual-tests/page_client-reference-manifest.js +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.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.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.js.nft.json +1 -1
- package/.next/server/app/(app)/setup/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_global-error.html +1 -1
- package/.next/server/app/_global-error.rsc +1 -1
- package/.next/server/app/_global-error.segments/__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.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 +6 -6
- package/.next/server/app/activity.segments/!KGFwcCk/activity/__PAGE__.segment.rsc +5 -5
- package/.next/server/app/activity.segments/_full.segment.rsc +6 -6
- package/.next/server/app/activity.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/api/activity/route.js +1 -1
- package/.next/server/app/api/activity/route.js.nft.json +1 -1
- package/.next/server/app/api/chat/route.js +1 -1
- package/.next/server/app/api/chat/route.js.nft.json +1 -1
- package/.next/server/app/api/context/route.js +1 -1
- package/.next/server/app/api/context/route.js.nft.json +1 -1
- package/.next/server/app/api/conversations/route.js +1 -1
- package/.next/server/app/api/conversations/route.js.nft.json +1 -1
- package/.next/server/app/api/decisions/route.js +1 -1
- package/.next/server/app/api/decisions/route.js.nft.json +1 -1
- package/.next/server/app/api/docs/graph/route.js +1 -1
- package/.next/server/app/api/docs/graph/route.js.nft.json +1 -1
- package/.next/server/app/api/docs/links/route.js +1 -1
- package/.next/server/app/api/docs/links/route.js.nft.json +1 -1
- package/.next/server/app/api/docs/route.js +1 -1
- package/.next/server/app/api/docs/route.js.nft.json +1 -1
- package/.next/server/app/api/explorer/route.js +1 -1
- package/.next/server/app/api/explorer/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/route.js +1 -1
- package/.next/server/app/api/mcp/route.js.nft.json +1 -1
- package/.next/server/app/api/memory/entries/delete/route.js +1 -1
- package/.next/server/app/api/memory/entries/delete/route.js.nft.json +1 -1
- package/.next/server/app/api/memory/entries/merge/route.js +1 -1
- package/.next/server/app/api/memory/entries/merge/route.js.nft.json +1 -1
- package/.next/server/app/api/memory/entries/merge/undo/route.js +1 -1
- package/.next/server/app/api/memory/entries/merge/undo/route.js.nft.json +1 -1
- package/.next/server/app/api/memory/entries/restore/route.js +1 -1
- package/.next/server/app/api/memory/entries/restore/route.js.nft.json +1 -1
- package/.next/server/app/api/memory/entries/route.js +1 -1
- package/.next/server/app/api/memory/entries/route.js.nft.json +1 -1
- package/.next/server/app/api/memory/entries/save/route.js +1 -1
- package/.next/server/app/api/memory/entries/save/route.js.nft.json +1 -1
- package/.next/server/app/api/memory/graph/route.js +1 -1
- package/.next/server/app/api/memory/graph/route.js.nft.json +1 -1
- package/.next/server/app/api/memory/health/dismiss/route.js +1 -1
- package/.next/server/app/api/memory/health/dismiss/route.js.nft.json +1 -1
- package/.next/server/app/api/memory/health/route.js +1 -1
- package/.next/server/app/api/memory/health/route.js.nft.json +1 -1
- package/.next/server/app/api/memory/history/route.js +1 -1
- package/.next/server/app/api/memory/history/route.js.nft.json +1 -1
- package/.next/server/app/api/memory/restore/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/memory/restore/route/build-manifest.json +12 -0
- package/.next/server/app/api/memory/restore/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/memory/restore/route.js +9 -0
- package/.next/server/app/api/memory/restore/route.js.map +5 -0
- package/.next/server/app/api/memory/restore/route.js.nft.json +1 -0
- package/.next/server/app/api/memory/restore/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/memory/route.js +1 -1
- package/.next/server/app/api/memory/route.js.nft.json +1 -1
- package/.next/server/app/api/memory/versions/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/memory/versions/route/build-manifest.json +12 -0
- package/.next/server/app/api/memory/versions/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/memory/versions/route.js +8 -0
- package/.next/server/app/api/memory/versions/route.js.map +5 -0
- package/.next/server/app/api/memory/versions/route.js.nft.json +1 -0
- package/.next/server/app/api/memory/versions/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/plan/apply/route.js +1 -1
- package/.next/server/app/api/plan/apply/route.js.nft.json +1 -1
- package/.next/server/app/api/projects/route.js +1 -1
- package/.next/server/app/api/projects/route.js.nft.json +1 -1
- package/.next/server/app/api/registry/route.js +1 -1
- package/.next/server/app/api/registry/route.js.nft.json +1 -1
- package/.next/server/app/api/roadmap/create/route.js +1 -1
- package/.next/server/app/api/roadmap/create/route.js.nft.json +1 -1
- package/.next/server/app/api/roadmap/delete/route.js +1 -1
- package/.next/server/app/api/roadmap/delete/route.js.nft.json +1 -1
- package/.next/server/app/api/roadmap/generate/route.js +1 -1
- package/.next/server/app/api/roadmap/generate/route.js.nft.json +1 -1
- package/.next/server/app/api/roadmap/layout/route.js +1 -1
- package/.next/server/app/api/roadmap/layout/route.js.nft.json +1 -1
- package/.next/server/app/api/roadmap/restore/route.js +1 -1
- package/.next/server/app/api/roadmap/restore/route.js.nft.json +1 -1
- package/.next/server/app/api/roadmap/route.js +1 -1
- package/.next/server/app/api/roadmap/route.js.nft.json +1 -1
- package/.next/server/app/api/roadmap/update/route.js +1 -1
- package/.next/server/app/api/roadmap/update/route.js.nft.json +1 -1
- package/.next/server/app/api/sessions/route.js +1 -1
- package/.next/server/app/api/sessions/route.js.nft.json +1 -1
- package/.next/server/app/api/settings/route.js +1 -1
- package/.next/server/app/api/settings/route.js.nft.json +1 -1
- package/.next/server/app/api/setup/generate/route.js +1 -1
- package/.next/server/app/api/setup/generate/route.js.nft.json +1 -1
- package/.next/server/app/api/setup/write/route.js +1 -1
- package/.next/server/app/api/setup/write/route.js.nft.json +1 -1
- package/.next/server/app/api/summary/route.js +1 -1
- package/.next/server/app/api/summary/route.js.nft.json +1 -1
- package/.next/server/app/api/tasks/bulk/route.js +1 -1
- package/.next/server/app/api/tasks/bulk/route.js.nft.json +1 -1
- package/.next/server/app/api/tasks/create/route.js +1 -1
- package/.next/server/app/api/tasks/create/route.js.nft.json +1 -1
- package/.next/server/app/api/tasks/delete/route.js +1 -1
- package/.next/server/app/api/tasks/delete/route.js.nft.json +1 -1
- package/.next/server/app/api/tasks/manual-tests/route.js +1 -1
- package/.next/server/app/api/tasks/manual-tests/route.js.nft.json +1 -1
- package/.next/server/app/api/tasks/restore/route.js +1 -1
- package/.next/server/app/api/tasks/restore/route.js.nft.json +1 -1
- package/.next/server/app/api/tasks/review/route.js +1 -1
- package/.next/server/app/api/tasks/review/route.js.nft.json +1 -1
- package/.next/server/app/api/tasks/route.js +1 -1
- package/.next/server/app/api/tasks/route.js.nft.json +1 -1
- package/.next/server/app/api/tasks/update/route.js +1 -1
- package/.next/server/app/api/tasks/update/route.js.nft.json +1 -1
- package/.next/server/app/api/views/route.js +1 -1
- package/.next/server/app/api/views/route.js.nft.json +1 -1
- package/.next/server/app/board.html +1 -1
- package/.next/server/app/board.rsc +7 -7
- package/.next/server/app/board.segments/!KGFwcCk/board/__PAGE__.segment.rsc +5 -5
- package/.next/server/app/board.segments/_full.segment.rsc +7 -7
- package/.next/server/app/board.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/chat.html +1 -1
- package/.next/server/app/chat.rsc +6 -6
- package/.next/server/app/chat.segments/!KGFwcCk/chat/__PAGE__.segment.rsc +6 -6
- package/.next/server/app/chat.segments/_full.segment.rsc +6 -6
- package/.next/server/app/chat.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/docs.html +1 -1
- package/.next/server/app/docs.rsc +7 -7
- package/.next/server/app/docs.segments/!KGFwcCk/docs/__PAGE__.segment.rsc +5 -5
- package/.next/server/app/docs.segments/_full.segment.rsc +7 -7
- 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 +6 -6
- package/.next/server/app/explorer.segments/!KGFwcCk/explorer/__PAGE__.segment.rsc +9 -11
- package/.next/server/app/explorer.segments/_full.segment.rsc +6 -6
- package/.next/server/app/explorer.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/graph.html +1 -1
- package/.next/server/app/graph.rsc +6 -6
- package/.next/server/app/graph.segments/!KGFwcCk/graph/__PAGE__.segment.rsc +5 -5
- package/.next/server/app/graph.segments/_full.segment.rsc +6 -6
- package/.next/server/app/graph.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/manual-tests.html +1 -1
- package/.next/server/app/manual-tests.rsc +6 -6
- package/.next/server/app/manual-tests.segments/!KGFwcCk/manual-tests/__PAGE__.segment.rsc +9 -11
- package/.next/server/app/manual-tests.segments/_full.segment.rsc +6 -6
- package/.next/server/app/manual-tests.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/memory.html +1 -1
- package/.next/server/app/memory.rsc +7 -7
- package/.next/server/app/memory.segments/!KGFwcCk/memory/__PAGE__.segment.rsc +5 -5
- package/.next/server/app/memory.segments/_full.segment.rsc +7 -7
- package/.next/server/app/memory.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/page.js.nft.json +1 -1
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app/roadmap.html +1 -1
- package/.next/server/app/roadmap.rsc +6 -6
- package/.next/server/app/roadmap.segments/!KGFwcCk/roadmap/__PAGE__.segment.rsc +5 -5
- package/.next/server/app/roadmap.segments/_full.segment.rsc +6 -6
- 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 +6 -6
- package/.next/server/app/settings.segments/!KGFwcCk/settings/__PAGE__.segment.rsc +11 -9
- package/.next/server/app/settings.segments/_full.segment.rsc +6 -6
- 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 +6 -6
- package/.next/server/app/setup.segments/!KGFwcCk/setup/__PAGE__.segment.rsc +9 -11
- package/.next/server/app/setup.segments/_full.segment.rsc +6 -6
- package/.next/server/app/setup.segments/_tree.segment.rsc +2 -2
- package/.next/server/app-paths-manifest.json +2 -0
- package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0-r4g2t._.js → 11mp_@anthropic-ai_sdk_013qeb4._.js} +1 -1
- package/.next/server/chunks/{11mp_@anthropic-ai_sdk_02lx_j3._.js → 11mp_@anthropic-ai_sdk_05ck8py._.js} +1 -1
- package/.next/server/chunks/{11mp_@anthropic-ai_sdk_01gyja3._.js → 11mp_@anthropic-ai_sdk_05w8m72._.js} +1 -1
- package/.next/server/chunks/{11mp_@anthropic-ai_sdk_05iv23g._.js → 11mp_@anthropic-ai_sdk_086oevc._.js} +1 -1
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_08rl0hf._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_09ujrsu._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_0c3_7p7._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_0cto43x._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_0fgisb_._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_0fy8wd3._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_0fyvizf._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_0hg0i2g._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_0i0sz05._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_0l0j9c6._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_0lcm61d._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_0qtva5j._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_0r4fkdu._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_0wbae0t._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_0wxyz1t._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_0y2cods._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_0zu0fj1._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_0zxpgt0._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_10_cxcd._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_10gb7d1._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_12q70bs._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_149ltk3._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_165_uiw._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_19w4zh6._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_1adck-s._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_1c2dwoi._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_1d9lw_2._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_1db6a7p._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_1h2f90s._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_1k5_i1z._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_1p3mv6i._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_1qoom5s._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_1qsbcbe._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_1rk0x59._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_1sd98mi._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_1sumqg8._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_1t-rt4q._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_1tr-k4y._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_1xk3c39._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_206l10_._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_20giys9._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_20xrvvy._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_20xrvvy._.js.map +1 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_215tg00._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_215tg00._.js.map +1 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_018s_10._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_08d6i7w._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_09_fd9g._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_0eopml6._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_0f5epel._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_0okfnhu._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_0s8-ha8._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_0ujs27r._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_0uo7rs8._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_0vyq_2d._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_0w3js74._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_0xa4-uq._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_113y3so._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_12qcr96._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_13ixdy8._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1708vst._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1_rdguq._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1bgpe23._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1f-tphn._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1h1pqdh._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1hfj_1d._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1ih2qzz._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1jatyl1._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1v1zbha._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1vyqs5z._.js +3 -0
- package/.next/server/chunks/{[root-of-the-server]__0xldguc._.js → [root-of-the-server]__00usbi3._.js} +2 -2
- package/.next/server/chunks/{[root-of-the-server]__0i1yba1._.js → [root-of-the-server]__04cwur0._.js} +2 -2
- package/.next/server/chunks/{[root-of-the-server]__1yh-4vk._.js → [root-of-the-server]__04ri_ci._.js} +2 -2
- package/.next/server/chunks/{[root-of-the-server]__06ndlro._.js → [root-of-the-server]__05-be3n._.js} +2 -2
- package/.next/server/chunks/{[root-of-the-server]__08v3p50._.js → [root-of-the-server]__0756_60._.js} +2 -2
- package/.next/server/chunks/{[root-of-the-server]__0pz59qo._.js → [root-of-the-server]__089ay-q._.js} +2 -2
- package/.next/server/chunks/{[root-of-the-server]__0cxmrop._.js → [root-of-the-server]__0d4t4q6._.js} +2 -2
- package/.next/server/chunks/{[root-of-the-server]__1ef-hw_._.js → [root-of-the-server]__0dgwykw._.js} +2 -2
- package/.next/server/chunks/[root-of-the-server]__0fn-a8c._.js +22 -43
- package/.next/server/chunks/[root-of-the-server]__0fn-a8c._.js.map +1 -1
- package/.next/server/chunks/{[root-of-the-server]__0zy73pu._.js → [root-of-the-server]__0n0myt9._.js} +2 -2
- package/.next/server/chunks/[root-of-the-server]__0n0myt9._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__0pe1qih._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0pe1qih._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__0pvi3ku._.js +22 -43
- package/.next/server/chunks/[root-of-the-server]__0pvi3ku._.js.map +1 -1
- package/.next/server/chunks/{[root-of-the-server]__1qcy2l0._.js → [root-of-the-server]__0s-j6z-._.js} +2 -2
- package/.next/server/chunks/{[root-of-the-server]__1zhd93r._.js → [root-of-the-server]__0yaxn8g._.js} +2 -2
- package/.next/server/chunks/{[root-of-the-server]__0rh8yfn._.js → [root-of-the-server]__162_l0k._.js} +2 -2
- package/.next/server/chunks/{[root-of-the-server]__0hk-9ll._.js → [root-of-the-server]__16smlkg._.js} +2 -2
- package/.next/server/chunks/{[root-of-the-server]__11rp-qx._.js → [root-of-the-server]__19yo85m._.js} +2 -2
- package/.next/server/chunks/[root-of-the-server]__1lxrobr._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__1lxrobr._.js.map +1 -0
- package/.next/server/chunks/{[root-of-the-server]__1sn6-7a._.js → [root-of-the-server]__1mnzsbh._.js} +2 -2
- package/.next/server/chunks/{[root-of-the-server]__11nbc9e._.js → [root-of-the-server]__1ntu_6r._.js} +2 -2
- package/.next/server/chunks/[root-of-the-server]__1p4ws5z._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__1p4ws5z._.js.map +1 -0
- package/.next/server/chunks/{[root-of-the-server]__1wbho9e._.js → [root-of-the-server]__1s0t8r3._.js} +2 -2
- package/.next/server/chunks/{[root-of-the-server]__1r67yrn._.js → [root-of-the-server]__1sd3l-d._.js} +2 -2
- package/.next/server/chunks/[root-of-the-server]__1vnine1._.js +22 -43
- package/.next/server/chunks/[root-of-the-server]__1vnine1._.js.map +1 -1
- package/.next/server/chunks/{[root-of-the-server]__0rikmqn._.js → [root-of-the-server]__1vzxnjb._.js} +2 -2
- package/.next/server/chunks/{[root-of-the-server]__0wc_gnr._.js → [root-of-the-server]__1zeys20._.js} +2 -2
- package/.next/server/chunks/_04byth9._.js +4 -4
- package/.next/server/chunks/_04byth9._.js.map +1 -1
- package/.next/server/chunks/_next-internal_server_app_api_memory_restore_route_actions_0679kmo.js +3 -0
- package/.next/server/chunks/_next-internal_server_app_api_memory_restore_route_actions_0679kmo.js.map +1 -0
- package/.next/server/chunks/_next-internal_server_app_api_memory_versions_route_actions_13mix75.js +3 -0
- package/.next/server/chunks/_next-internal_server_app_api_memory_versions_route_actions_13mix75.js.map +1 -0
- package/.next/server/chunks/ssr/{_0me5_6x._.js → _0-_04ia._.js} +1 -1
- package/.next/server/chunks/ssr/{_190c11r._.js → _0cv0ugs._.js} +1 -1
- package/.next/server/chunks/ssr/_0ghj-vx._.js +1 -1
- package/.next/server/chunks/ssr/_0ghj-vx._.js.map +1 -1
- package/.next/server/chunks/ssr/_0o8t6j-._.js +3 -0
- package/.next/server/chunks/ssr/_0o8t6j-._.js.map +1 -0
- package/.next/server/chunks/ssr/_128p7pz._.js +3 -0
- package/.next/server/chunks/ssr/_128p7pz._.js.map +1 -0
- package/.next/server/chunks/ssr/{_1feybpz._.js → _1hm7p_8._.js} +1 -1
- package/.next/server/chunks/ssr/{_1cz8dnu._.js → _1s-2jub._.js} +1 -1
- package/.next/server/chunks/ssr/src_app_(app)_memory_page_tsx_19jhb1c._.js +2 -2
- package/.next/server/chunks/ssr/src_app_(app)_memory_page_tsx_19jhb1c._.js.map +1 -1
- package/.next/server/chunks/ssr/src_components_chat_ChatView_tsx_0h5j-e2._.js +1 -1
- package/.next/server/chunks/ssr/src_components_chat_ChatView_tsx_0h5j-e2._.js.map +1 -1
- package/.next/server/middleware-build-manifest.js +3 -3
- 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/05qw7-fs1exlt.js +1 -0
- package/.next/static/chunks/0eax07u1ta6tp.css +1 -0
- package/.next/static/chunks/0lfd3aomz4wv4.js +1 -0
- package/.next/static/chunks/{3rtr962aa09nh.js → 0po8atank1p02.js} +2 -2
- package/.next/static/chunks/11ou9nrpdg4qo.js +3 -0
- package/.next/static/chunks/1g7st54huk4if.js +1 -0
- package/.next/static/chunks/40diykjra8f9n.js +2107 -0
- package/README.md +4 -2
- package/package.json +1 -1
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_05oneea._.js +0 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_07fgg-l._.js +0 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_0_5gzfy._.js +0 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_0_jynr-._.js +0 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_0aykesf._.js +0 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_0br_1fc._.js +0 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_0cd5lu7._.js +0 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_0ckxhy7._.js +0 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_0e5qkuv._.js +0 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_0el8pm6._.js +0 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_0i4w8fv._.js +0 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_0i7ckik._.js +0 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_0l1p4c6._.js +0 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_0m-xqs_._.js +0 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_0nltdmf._.js +0 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_0qxmzg8._.js +0 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_0spr_aj._.js +0 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_0th0pyh._.js +0 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_0x21fif._.js +0 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_1-7bj56._.js +0 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_1-efoj1._.js +0 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_13vu693._.js +0 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_13w62gi._.js +0 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_1887ce1._.js +0 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_1_jq3yb._.js +0 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_1agvp6h._.js +0 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_1b1-3vt._.js +0 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_1ekldtb._.js +0 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_1ezcndt._.js +0 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_1gr-orf._.js +0 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_1hf-884._.js +0 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_1ndwnmb._.js +0 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_1rdesfd._.js +0 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_1s8h60-._.js +0 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_1tgk9wk._.js +0 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_1uugb45._.js +0 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_1vcxmui._.js +0 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_1x63qpm._.js +0 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_1y5oj_h._.js +0 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_1z0q4jj._.js +0 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_20j6dn7._.js +0 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_00nr0dy._.js +0 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_06kgcr0._.js +0 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_07kod-g._.js +0 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_0_va-1q._.js +0 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_0dr79hc._.js +0 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_0ew4_uw._.js +0 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_0iy714m._.js +0 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_0n6aq49._.js +0 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_0ncvuil._.js +0 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_0vilstf._.js +0 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_0ybdfbv._.js +0 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_0z31-c0._.js +0 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_0zu51ny._.js +0 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_13-fsm5._.js +0 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_13lk7wf._.js +0 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1ao3e3l._.js +0 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1ck6z1z._.js +0 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1dm3so9._.js +0 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1jxtz_6._.js +0 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1pdl5qg._.js +0 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1tzpss1._.js +0 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1x_0sf4._.js +0 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1x_fy5x._.js +0 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1xx8_-m._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__0usdydm._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__0usdydm._.js.map +0 -1
- package/.next/server/chunks/ssr/_0pg63il._.js +0 -3
- package/.next/server/chunks/ssr/_0pg63il._.js.map +0 -1
- package/.next/server/chunks/ssr/_16b4hkt._.js +0 -3
- package/.next/server/chunks/ssr/_16b4hkt._.js.map +0 -1
- package/.next/server/chunks/ssr/_1t8it2w._.js +0 -3
- package/.next/server/chunks/ssr/_1t8it2w._.js.map +0 -1
- package/.next/static/chunks/036fex6o238at.css +0 -1
- package/.next/static/chunks/1c5ibgojv8jdi.js +0 -3
- package/.next/static/chunks/1pmgcotwq-_yh.js +0 -1
- package/.next/static/chunks/1xxzt2y2ttqql.js +0 -2107
- package/.next/static/chunks/263i_dcdizuvd.js +0 -1
- package/.next/static/chunks/2mf5us3y9wd9g.js +0 -1
- package/.next/static/chunks/42c9smmpcu4re.js +0 -1
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_20j6dn7._.js.map → 11mp_@anthropic-ai_sdk_013qeb4._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1z0q4jj._.js.map → 11mp_@anthropic-ai_sdk_05ck8py._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1y5oj_h._.js.map → 11mp_@anthropic-ai_sdk_05w8m72._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1x63qpm._.js.map → 11mp_@anthropic-ai_sdk_086oevc._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1vcxmui._.js.map → 11mp_@anthropic-ai_sdk_08rl0hf._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1uugb45._.js.map → 11mp_@anthropic-ai_sdk_09ujrsu._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1tgk9wk._.js.map → 11mp_@anthropic-ai_sdk_0c3_7p7._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1s8h60-._.js.map → 11mp_@anthropic-ai_sdk_0cto43x._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1rdesfd._.js.map → 11mp_@anthropic-ai_sdk_0fgisb_._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1ndwnmb._.js.map → 11mp_@anthropic-ai_sdk_0fy8wd3._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1hf-884._.js.map → 11mp_@anthropic-ai_sdk_0fyvizf._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1gr-orf._.js.map → 11mp_@anthropic-ai_sdk_0hg0i2g._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1ezcndt._.js.map → 11mp_@anthropic-ai_sdk_0i0sz05._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1ekldtb._.js.map → 11mp_@anthropic-ai_sdk_0l0j9c6._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1b1-3vt._.js.map → 11mp_@anthropic-ai_sdk_0lcm61d._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1agvp6h._.js.map → 11mp_@anthropic-ai_sdk_0qtva5j._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1_jq3yb._.js.map → 11mp_@anthropic-ai_sdk_0r4fkdu._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1887ce1._.js.map → 11mp_@anthropic-ai_sdk_0wbae0t._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_13w62gi._.js.map → 11mp_@anthropic-ai_sdk_0wxyz1t._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_13vu693._.js.map → 11mp_@anthropic-ai_sdk_0y2cods._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1-efoj1._.js.map → 11mp_@anthropic-ai_sdk_0zu0fj1._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1-7bj56._.js.map → 11mp_@anthropic-ai_sdk_0zxpgt0._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0x21fif._.js.map → 11mp_@anthropic-ai_sdk_10_cxcd._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0th0pyh._.js.map → 11mp_@anthropic-ai_sdk_10gb7d1._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0spr_aj._.js.map → 11mp_@anthropic-ai_sdk_12q70bs._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0qxmzg8._.js.map → 11mp_@anthropic-ai_sdk_149ltk3._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0nltdmf._.js.map → 11mp_@anthropic-ai_sdk_165_uiw._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0m-xqs_._.js.map → 11mp_@anthropic-ai_sdk_19w4zh6._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0l1p4c6._.js.map → 11mp_@anthropic-ai_sdk_1adck-s._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0i7ckik._.js.map → 11mp_@anthropic-ai_sdk_1c2dwoi._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0i4w8fv._.js.map → 11mp_@anthropic-ai_sdk_1d9lw_2._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0el8pm6._.js.map → 11mp_@anthropic-ai_sdk_1db6a7p._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0e5qkuv._.js.map → 11mp_@anthropic-ai_sdk_1h2f90s._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0ckxhy7._.js.map → 11mp_@anthropic-ai_sdk_1k5_i1z._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0cd5lu7._.js.map → 11mp_@anthropic-ai_sdk_1p3mv6i._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0br_1fc._.js.map → 11mp_@anthropic-ai_sdk_1qoom5s._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0aykesf._.js.map → 11mp_@anthropic-ai_sdk_1qsbcbe._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0_jynr-._.js.map → 11mp_@anthropic-ai_sdk_1rk0x59._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0_5gzfy._.js.map → 11mp_@anthropic-ai_sdk_1sd98mi._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_07fgg-l._.js.map → 11mp_@anthropic-ai_sdk_1sumqg8._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_05oneea._.js.map → 11mp_@anthropic-ai_sdk_1t-rt4q._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_05iv23g._.js.map → 11mp_@anthropic-ai_sdk_1tr-k4y._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_02lx_j3._.js.map → 11mp_@anthropic-ai_sdk_1xk3c39._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_01gyja3._.js.map → 11mp_@anthropic-ai_sdk_206l10_._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0-r4g2t._.js.map → 11mp_@anthropic-ai_sdk_20giys9._.js.map} +0 -0
- /package/.next/server/chunks/{[root-of-the-server]__0zy73pu._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_018s_10._.js.map} +0 -0
- /package/.next/server/chunks/{[root-of-the-server]__06ndlro._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_08d6i7w._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_1xx8_-m._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_09_fd9g._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_1x_fy5x._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_0eopml6._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_1x_0sf4._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_0f5epel._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_1tzpss1._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_0okfnhu._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_1pdl5qg._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_0s8-ha8._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_1jxtz_6._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_0ujs27r._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_1dm3so9._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_0uo7rs8._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_1ck6z1z._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_0vyq_2d._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_1ao3e3l._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_0w3js74._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_13lk7wf._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_0xa4-uq._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_13-fsm5._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_113y3so._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_0zu51ny._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_12qcr96._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_0z31-c0._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_13ixdy8._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_0ybdfbv._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_1708vst._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_0vilstf._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_1_rdguq._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_0ncvuil._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_1bgpe23._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_0n6aq49._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_1f-tphn._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_0iy714m._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_1h1pqdh._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_0ew4_uw._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_1hfj_1d._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_0dr79hc._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_1ih2qzz._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_0_va-1q._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_1jatyl1._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_07kod-g._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_1v1zbha._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_06kgcr0._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_1vyqs5z._.js.map} +0 -0
- /package/.next/server/chunks/{[root-of-the-server]__0xldguc._.js.map → [root-of-the-server]__00usbi3._.js.map} +0 -0
- /package/.next/server/chunks/{[root-of-the-server]__0i1yba1._.js.map → [root-of-the-server]__04cwur0._.js.map} +0 -0
- /package/.next/server/chunks/{[root-of-the-server]__1yh-4vk._.js.map → [root-of-the-server]__04ri_ci._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_00nr0dy._.js.map → [root-of-the-server]__05-be3n._.js.map} +0 -0
- /package/.next/server/chunks/{[root-of-the-server]__0wc_gnr._.js.map → [root-of-the-server]__0756_60._.js.map} +0 -0
- /package/.next/server/chunks/{[root-of-the-server]__0pz59qo._.js.map → [root-of-the-server]__089ay-q._.js.map} +0 -0
- /package/.next/server/chunks/{[root-of-the-server]__0cxmrop._.js.map → [root-of-the-server]__0d4t4q6._.js.map} +0 -0
- /package/.next/server/chunks/{[root-of-the-server]__1ef-hw_._.js.map → [root-of-the-server]__0dgwykw._.js.map} +0 -0
- /package/.next/server/chunks/{[root-of-the-server]__1qcy2l0._.js.map → [root-of-the-server]__0s-j6z-._.js.map} +0 -0
- /package/.next/server/chunks/{[root-of-the-server]__1zhd93r._.js.map → [root-of-the-server]__0yaxn8g._.js.map} +0 -0
- /package/.next/server/chunks/{[root-of-the-server]__0rh8yfn._.js.map → [root-of-the-server]__162_l0k._.js.map} +0 -0
- /package/.next/server/chunks/{[root-of-the-server]__0hk-9ll._.js.map → [root-of-the-server]__16smlkg._.js.map} +0 -0
- /package/.next/server/chunks/{[root-of-the-server]__11rp-qx._.js.map → [root-of-the-server]__19yo85m._.js.map} +0 -0
- /package/.next/server/chunks/{[root-of-the-server]__1sn6-7a._.js.map → [root-of-the-server]__1mnzsbh._.js.map} +0 -0
- /package/.next/server/chunks/{[root-of-the-server]__11nbc9e._.js.map → [root-of-the-server]__1ntu_6r._.js.map} +0 -0
- /package/.next/server/chunks/{[root-of-the-server]__1wbho9e._.js.map → [root-of-the-server]__1s0t8r3._.js.map} +0 -0
- /package/.next/server/chunks/{[root-of-the-server]__1r67yrn._.js.map → [root-of-the-server]__1sd3l-d._.js.map} +0 -0
- /package/.next/server/chunks/{[root-of-the-server]__0rikmqn._.js.map → [root-of-the-server]__1vzxnjb._.js.map} +0 -0
- /package/.next/server/chunks/{[root-of-the-server]__08v3p50._.js.map → [root-of-the-server]__1zeys20._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{_0me5_6x._.js.map → _0-_04ia._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{_190c11r._.js.map → _0cv0ugs._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{_1feybpz._.js.map → _1hm7p_8._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{_1cz8dnu._.js.map → _1s-2jub._.js.map} +0 -0
- /package/.next/static/{5hNes2Kijr5IvUPPw-ez9 → P1gxTEpKVh-OOtIXC432U}/_buildManifest.js +0 -0
- /package/.next/static/{5hNes2Kijr5IvUPPw-ez9 → P1gxTEpKVh-OOtIXC432U}/_clientMiddlewareManifest.js +0 -0
- /package/.next/static/{5hNes2Kijr5IvUPPw-ez9 → P1gxTEpKVh-OOtIXC432U}/_ssgManifest.js +0 -0
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[712125,544428,a=>{"use strict";var b=a.i(662145),c=a.i(174897),d=a.i(913975),e=a.i(498053),f=a.i(256857);let g={name:"arrow-up-right",size:24,node:[["path",{d:"M7 7h10v10",key:"1tivn9"}],["path",{d:"M7 17 17 7",key:"1vkiza"}]]};g.node;let h=(0,f.default)(g);a.s(["ArrowUpRight",0,h],544428);let i={name:"maximize-2",size:24,node:[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"m21 3-7 7",key:"1l2asr"}],["path",{d:"m3 21 7-7",key:"tjx5ai"}],["path",{d:"M9 21H3v-6",key:"wtvkvv"}]]};i.node;let j=(0,f.default)(i),k={name:"square",size:24,node:[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}]]};k.node;let l=(0,f.default)(k);var m=a.i(28386),n=a.i(544394),o=a.i(685698),p=a.i(149350),q=a.i(368114),r=a.i(107742);function s({proposal:a,onResolve:d}){let{rootParam:e,openDoc:f}=(0,n.useApp)(),[g,h]=(0,c.useState)(null),[i,j]=(0,c.useState)(null),[k,l]=(0,c.useState)(!1);(0,c.useEffect)(()=>{fetch(`/api/docs${e}&read=${encodeURIComponent(a.path)}`).then(a=>a.ok?a.json():null).then(b=>h(b?.path===a.path.replace(/^\.\//,"")&&"string"==typeof b.content?b.content:"")).catch(()=>h(""))},[a.path,e]);let m=(0,c.useMemo)(()=>null===g?null:function(a,b){let c=a;for(let[a,d]of b.entries()){if("string"!=typeof d?.old_string||"string"!=typeof d?.new_string)return{error:`Edit ${a+1}: old_string and new_string must be strings`};if(""===d.old_string){if(""!==c)return{error:`Edit ${a+1}: empty old_string is only allowed for a new, empty doc`};c=d.new_string;continue}let b=c.indexOf(d.old_string);if(-1===b)return{error:`Edit ${a+1}: old_string not found in the doc`};if(-1!==c.indexOf(d.old_string,b+1))return{error:`Edit ${a+1}: old_string matches more than once; include more surrounding text`};c=c.slice(0,b)+d.new_string+c.slice(b+d.old_string.length)}return{content:c}}(g,a.edits),[g,a.edits]),o=null!==m&&"error"in m?m.error:null,p=(0,c.useMemo)(()=>{var a;let b,c;return null===g||!m||"error"in m?[]:(b=(a=function(a,b){let c=a.split("\n"),d=b.split("\n"),e=0;for(;e<c.length&&e<d.length&&c[e]===d[e];)e++;let f=c.length,g=d.length;for(;f>e&&g>e&&c[f-1]===d[g-1];)f--,g--;let h=c.slice(e,f),i=d.slice(e,g),j=Array.from({length:h.length+1},()=>Array(i.length+1).fill(0));for(let a=h.length-1;a>=0;a--)for(let b=i.length-1;b>=0;b--)j[a][b]=h[a]===i[b]?j[a+1][b+1]+1:Math.max(j[a+1][b],j[a][b+1]);let k=[],l=0,m=0;for(;l<h.length||m<i.length;)l<h.length&&m<i.length&&h[l]===i[m]?(k.push({op:" ",text:h[l]}),l++,m++):l<h.length&&(m===i.length||j[l+1][m]>=j[l][m+1])?(k.push({op:"-",text:h[l]}),l++):(k.push({op:"+",text:i[m]}),m++);return[...c.slice(0,e).map(a=>({op:" ",text:a})),...k,...c.slice(f).map(a=>({op:" ",text:a}))]}(g,m.content)).map(()=>!1),a.forEach((c,d)=>{if(" "!==c.op)for(let c=Math.max(0,d-2);c<=Math.min(a.length-1,d+2);c++)b[c]=!0}),c=[],a.forEach((a,d)=>{b[d]?c.push(a):"number"==typeof c[c.length-1]?c[c.length-1]=c[c.length-1]+1:c.push(1)}),c)},[g,m]),r=p.filter(a=>"number"!=typeof a&&"+"===a.op).length,t=p.filter(a=>"number"!=typeof a&&"-"===a.op).length;async function u(){l(!0),j(null);try{let b=await fetch(`/api/docs${e}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:a.path,edits:a.edits,actor:"ai"})});if(!b.ok)throw Error((await b.json().catch(()=>null))?.error??"Save failed");d("accepted")}catch(a){j(a.message)}finally{l(!1)}}return(0,b.jsxs)("div",{className:"my-2 rounded-md border border-border overflow-hidden",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2 px-2 py-1.5 bg-surface2 border-b border-border",children:[(0,b.jsx)("button",{onClick:()=>f(a.path),className:"text-xs font-mono text-accent truncate hover:underline",title:a.path,children:a.path}),(0,b.jsxs)("span",{className:"text-[10px] font-mono text-teal-400",children:["+",r]}),(0,b.jsxs)("span",{className:"text-[10px] font-mono text-red-400",children:["-",t]})]}),a.summary&&(0,b.jsx)("div",{className:"px-2 py-1 text-xs text-muted border-b border-border",children:a.summary}),(0,b.jsxs)("div",{className:"max-h-72 overflow-auto text-[11px] font-mono leading-5",children:[null===g&&(0,b.jsx)("div",{className:"px-2 py-1 text-muted",children:"Loading diff…"}),o&&(0,b.jsxs)("div",{className:"px-2 py-1 text-red-400",children:["Doc changed since this proposal (",o,"). Ask the agent to propose again."]}),null!==g&&!o&&0===p.length&&(0,b.jsx)("div",{className:"px-2 py-1 text-muted",children:"No changes"}),p.map((a,c)=>"number"==typeof a?(0,b.jsxs)("div",{className:"px-2 text-muted bg-surface2/50",children:["⋯ ",a," unchanged line",a>1?"s":""]},c):(0,b.jsxs)("div",{className:(0,q.cn)("px-2 whitespace-pre-wrap break-words","+"===a.op&&"bg-teal-500/10 text-teal-300","-"===a.op&&"bg-red-500/10 text-red-300 line-through decoration-red-400/40"),children:[a.op," ",a.text||" "]},c))]}),(0,b.jsxs)("div",{className:"flex items-center gap-2 px-2 py-1.5 border-t border-border",children:["pending"===a.status?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("button",{onClick:u,disabled:k||null===g||!!o,className:"text-xs px-2 py-0.5 rounded-sm bg-accent/20 text-accent hover:bg-accent/30 disabled:opacity-50",children:k?"Applying…":"Accept"}),(0,b.jsx)("button",{onClick:()=>d("rejected"),disabled:k,className:"text-xs px-2 py-0.5 rounded-sm text-muted hover:text-txt",children:"Reject"})]}):(0,b.jsx)("span",{className:(0,q.cn)("text-xs","accepted"===a.status?"text-teal-400":"text-muted"),children:"accepted"===a.status?"✓ Applied":"Rejected"}),i&&(0,b.jsx)("span",{className:"text-xs text-red-400 truncate",children:i})]})]})}function t({proposal:a,onResolve:d}){let{rootParam:e,openDoc:f}=(0,n.useApp)(),g=a.plan,h="breakdown"===g.kind?g.tasks:[],i="roadmap"===g.kind?g.horizons??[]:[],j="roadmap"===g.kind?g.epics??[]:[],k="breakdown"===g.kind?(g.epic??"").trim().toUpperCase():"",l="breakdown"===g.kind?g.newEpic:void 0,[m,o]=(0,c.useState)(new Map),[p,q]=(0,c.useState)(new Set),[r,s]=(0,c.useState)(null),[v,w]=(0,c.useState)(null),[x,y]=(0,c.useState)(!1);(0,c.useEffect)(()=>{fetch(`/api/roadmap${e}`).then(a=>a.ok?a.json():null).then(a=>o(new Map((a?.items??[]).map(a=>[a.id,a.title])))).catch(()=>o(new Map))},[e]);let z=("breakdown"===g.kind?h.map(a=>a.key):[...i,...j].map(a=>a.key)).filter(a=>!p.has(a)),A="pending"===a.status,B=new Set(i.map(a=>a.key)),C=(a,c,d,e,f=!1)=>(0,b.jsx)(u,{rowKey:a,title:c,meta:d,body:e,indent:f,checked:!p.has(a),disabled:!A||x,onToggle:()=>{w(null),q(b=>{let c=new Set(b),d=c.has(a);for(let b of B.has(a)?[a,...j.filter(b=>b.parent.trim()===a).map(a=>a.key)]:[a])d?c.delete(b):c.add(b);let e=j.find(b=>b.key===a)?.parent.trim();return d&&e&&B.has(e)&&c.delete(e),c})},open:r===a,onOpen:()=>s(r===a?null:a)},a),D=a=>a.trim().split("\n")[0]??"",E=[...new Set(j.map(a=>a.parent.trim()).filter(a=>!B.has(a)))];async function F(){y(!0),w(null);try{let a=await fetch(`/api/plan/apply${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({plan:g,selected:z})}),b=await a.json().catch(()=>null);if(!a.ok)throw Error(b?.error??`Apply failed (${a.status})`);d("accepted",b?.created??[],[...p])}catch(a){w(a.message)}finally{y(!1)}}return(0,b.jsxs)("div",{className:"my-2 rounded-md border border-border overflow-hidden",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2 px-2 py-1.5 bg-surface2 border-b border-border",children:[(0,b.jsx)("span",{className:"text-[10px] font-mono uppercase tracking-widest text-muted",children:"Plan"}),"breakdown"===g.kind?(0,b.jsxs)(b.Fragment,{children:[k?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("span",{className:"text-xs font-mono text-accent",children:k}),(0,b.jsx)("span",{className:"text-xs text-txt truncate",children:m.get(k)??""})]}):l?(0,b.jsxs)("span",{className:"text-xs text-txt truncate",children:["New epic: ",l.title,(0,b.jsxs)("span",{className:"text-muted",children:[" (under ",l.parent.trim().toUpperCase()," ",m.get(l.parent.trim().toUpperCase())??"",")"]})]}):(0,b.jsx)("span",{className:"text-xs text-muted",children:"No epic"}),(0,b.jsxs)("span",{className:"ml-auto text-[10px] font-mono text-muted",children:[h.length," tasks"]})]}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("span",{className:"text-xs text-txt",children:"Roadmap"}),(0,b.jsxs)("span",{className:"ml-auto text-[10px] font-mono text-muted",children:[i.length?`${i.length} horizons \xb7 `:"",j.length," epics"]})]})]}),(0,b.jsxs)("ul",{className:"max-h-80 overflow-auto",children:[h.map(a=>C(a.key,a.title,[a.size,a.dependsOn?.length?`after ${a.dependsOn.join(", ")}`:null,a.due?`due ${a.due}`:null].filter(Boolean).join(" · "),a.body)),i.map(a=>[C(a.key,a.title,"new horizon",a.body),...j.filter(b=>b.parent.trim()===a.key).map(a=>C(a.key,a.title,D(a.body),a.body,!0))]),E.map(a=>[(0,b.jsxs)("li",{className:"px-2 py-1.5 border-b border-border text-xs text-muted",children:[(0,b.jsx)("span",{className:"font-mono text-accent mr-1",children:a.toUpperCase()}),m.get(a.toUpperCase())??""]},`parent-${a}`),...j.filter(b=>b.parent.trim()===a).map(a=>C(a.key,a.title,D(a.body),a.body,!0))])]}),v&&(0,b.jsx)("div",{className:"px-2 py-1 text-xs text-red-400 whitespace-pre-wrap border-t border-border",children:v}),(0,b.jsx)("div",{className:"flex items-center gap-2 px-2 py-1.5 border-t border-border",children:A?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("button",{onClick:F,disabled:x||0===z.length,className:"text-xs px-2 py-0.5 rounded-sm bg-accent/20 text-accent hover:bg-accent/30 disabled:opacity-50",children:x?"Creating…":`Accept (${z.length})`}),(0,b.jsx)("button",{onClick:()=>d("rejected",[],[]),disabled:x,className:"text-xs px-2 py-0.5 rounded-sm text-muted hover:text-txt",children:"Reject"})]}):"accepted"===a.status?(0,b.jsxs)("span",{className:"text-xs text-teal-400",children:["✓ Created"," ",(a.created??[]).map((a,c)=>(0,b.jsxs)("span",{children:[c>0&&", ",(0,b.jsx)("button",{onClick:()=>f(a.file),className:"font-mono hover:underline",children:a.id})]},a.id))]}):(0,b.jsx)("span",{className:"text-xs text-muted",children:"Rejected"})})]})}function u({rowKey:a,title:c,meta:d,body:e,indent:f,checked:g,disabled:h,onToggle:i,open:j,onOpen:k}){return(0,b.jsxs)("li",{"data-plan-row":a,className:"border-b border-border last:border-b-0",children:[(0,b.jsxs)("div",{className:(0,q.cn)("flex items-start gap-2 px-2 py-1.5",f&&"pl-6"),children:[(0,b.jsx)("input",{type:"checkbox","aria-label":`Include ${c}`,checked:g,disabled:h,onChange:i,className:"mt-0.5 accent-accent"}),(0,b.jsxs)("button",{onClick:k,className:"flex-1 min-w-0 text-left",children:[(0,b.jsxs)("div",{className:(0,q.cn)("text-xs text-txt",!g&&"line-through text-muted"),children:[(0,b.jsx)("span",{className:"font-mono text-muted mr-1",children:a}),c]}),d&&(0,b.jsx)("div",{className:"text-[10px] font-mono text-muted truncate",children:d})]})]}),j&&e&&(0,b.jsx)("div",{className:"px-3 pb-2 border-t border-border bg-surface2/40",children:(0,b.jsx)(p.MarkdownRenderer,{content:e,className:"text-xs"})})]})}var v=a.i(429672),w=a.i(598984);let x="grid size-8 shrink-0 place-items-center rounded-md text-muted transition-colors duration-(--duration-fast) hover:bg-surface2 hover:text-txt";function y({chat:a,hidden:d,wide:e}){let{send:f,resolveProposal:g,resolvePlan:h,answerQuestions:i}=(0,o.useChats)(),j=(0,c.useRef)(null),k=a.messages;return(0,c.useEffect)(()=>{let a=j.current;a&&!d&&(a.scrollTop=a.scrollHeight)},[k,d]),(0,b.jsx)("div",{ref:j,hidden:d,role:"log","aria-live":"polite",className:"min-h-0 flex-1 overflow-y-auto",children:(0,b.jsxs)("div",{className:(0,q.cn)("mx-auto flex flex-col gap-5 px-5 py-6 text-sm",e?"max-w-3xl":"max-w-none"),children:[0===k.length&&(0,b.jsx)(B,{chat:a,onPick:b=>f(a.id,b)}),k.map((c,d)=>(0,b.jsx)(z,{m:c,thinking:a.busy&&d===k.length-1,busy:a.busy,onProposal:(b,c,d)=>g(a.id,b,c,d),onPlan:(b,c,d,e)=>h(a.id,b,c,d,e),onAnswers:(b,c)=>i(a.id,b,c)},d))]})})}function z({m:a,thinking:c,busy:d,onProposal:e,onPlan:f,onAnswers:g}){return"user"===a.role?(0,b.jsx)("div",{className:"flex justify-end animate-fade-in",children:(0,b.jsx)("div",{className:"max-w-[85%] whitespace-pre-wrap rounded-2xl rounded-br-md border border-accent/20 bg-accent/10 px-3.5 py-2 text-txt",children:a.text})}):(0,b.jsxs)("div",{className:"flex gap-3 animate-fade-in",children:[(0,b.jsx)("div",{className:"mt-0.5 grid size-6 shrink-0 place-items-center rounded-md bg-linear-to-br from-accent to-teal text-[10px] text-white","aria-hidden":!0,children:"⬡"}),(0,b.jsxs)("div",{className:"min-w-0 flex-1 space-y-2",children:[a.tools.length>0&&(0,b.jsx)("div",{className:"flex flex-wrap gap-1",children:a.tools.map((a,c)=>(0,b.jsx)("span",{className:"rounded-sm border border-border bg-surface2 px-1.5 py-0.5 font-mono text-[10px] text-muted animate-slide-in",children:a},c))}),a.proposals.map(a=>(0,b.jsx)(s,{proposal:a,onResolve:b=>e(a.id,a.path,b)},a.id)),a.plans.map(a=>(0,b.jsx)(t,{proposal:a,onResolve:(b,c,d)=>f(a,b,c,d)},a.id)),a.questions.map(a=>(0,b.jsx)(v.QuestionCard,{set:a,disabled:d,onSubmit:b=>g(a,b)},a.id)),a.text&&(0,b.jsx)(p.MarkdownRenderer,{content:a.text,className:"text-sm"}),c&&!a.text&&!a.error&&(0,b.jsx)(A,{}),a.error&&(0,b.jsx)("p",{className:"whitespace-pre-wrap text-xs text-danger",children:a.error})]})]})}function A(){return(0,b.jsxs)("span",{className:"inline-flex items-center gap-2 text-xs text-muted",children:[(0,b.jsx)("span",{className:"inline-flex gap-1","aria-hidden":!0,children:[0,150,300].map(a=>(0,b.jsx)("span",{className:"size-1.5 rounded-full bg-accent animate-pulse-dot",style:{animationDelay:`${a}ms`}},a))}),"Thinking…"]})}function B({chat:a,onPick:c}){let d=a.attach;return(0,b.jsxs)("div",{className:"flex flex-col items-start gap-4 py-6 animate-fade-in",children:[(0,b.jsx)("div",{className:"grid size-9 place-items-center rounded-lg bg-linear-to-br from-accent to-teal text-sm text-white","aria-hidden":!0,children:"⬡"}),(0,b.jsxs)("div",{children:[(0,b.jsx)("h3",{className:"text-lg font-semibold text-txt",children:d?`Ask about ${d.id}`:"Ask the agent"}),(0,b.jsx)("p",{className:"mt-1 max-w-md text-sm text-muted",children:d?`The agent reads ${"epic"===d.kind?"the epic and its tasks":"the task"} first. It proposes changes; nothing is written until you accept.`:"It reads your docs, tasks and roadmap and proposes edits you review. Runs on your local Claude Code login."})]}),(0,b.jsx)("div",{className:"flex flex-col gap-1.5",children:(0,r.suggestions)(d).map((a,d)=>(0,b.jsxs)("button",{type:"button",onClick:()=>c(a),style:{animationDelay:`${60*d}ms`},className:"group flex items-center gap-2 rounded-lg border border-border px-3 py-2 text-left text-sm text-txt/90 transition-colors duration-(--duration-fast) animate-slide-in [animation-fill-mode:both] hover:border-accent/50 hover:bg-accent/5",children:[(0,b.jsx)(h,{className:"size-3.5 text-muted transition-transform duration-(--duration-fast) group-hover:-translate-y-px group-hover:translate-x-px group-hover:text-accent"}),a]},a))})]})}function C({chat:a,wide:f}){let{send:g,stop:h,queue:i}=(0,o.useChats)(),{selectedDoc:j}=(0,n.useApp)(),k=(0,d.usePathname)(),[m,p]=(0,c.useState)(""),r="/docs"===k?j?.path:void 0,s=a.messages[a.messages.length-1],t=!!s?.questions.some(a=>!a.answers),u=Math.min(8,Math.max(1,m.split("\n").length));function v(){m.trim()&&!a.busy&&(g(a.id,m),p(""))}return(0,b.jsx)("div",{className:"shrink-0 px-5 pb-4 pt-1",children:(0,b.jsxs)("div",{className:(0,q.cn)("mx-auto rounded-xl border border-border bg-surface2 transition-[border-color,box-shadow] duration-(--duration-base) focus-within:border-accent/60 focus-within:shadow-[0_0_0_3px_rgb(var(--rgb-accent)/0.12)]",f?"max-w-3xl":"max-w-none"),children:[(0,b.jsx)("textarea",{autoFocus:!i.some(b=>b.id===a.id),value:m,onChange:a=>p(a.target.value),onKeyDown:a=>{"Enter"!==a.key||a.shiftKey||a.nativeEvent.isComposing||(a.preventDefault(),v())},rows:u,placeholder:a.busy?"Agent is working…":t?"Answer the questions above…":"Ask the agent… (Enter to send)",className:"block w-full resize-none bg-transparent px-3.5 pt-3 text-sm text-txt placeholder:text-muted focus:outline-hidden"}),(0,b.jsxs)("div",{className:"flex items-center gap-2 px-2.5 pb-2 pt-1",children:[(0,b.jsx)("span",{className:"min-w-0 flex-1 truncate font-mono text-[10px] text-muted",children:r?`@ ${r}`:"Shift+Enter for a new line"}),a.busy?(0,b.jsxs)("button",{type:"button",onClick:()=>h(a.id),title:"Stop the agent",className:"grid size-7 place-items-center rounded-full border border-border text-muted transition-colors hover:text-txt",children:[(0,b.jsx)(l,{className:"size-3 fill-current"}),(0,b.jsx)("span",{className:"sr-only",children:"Stop"})]}):(0,b.jsxs)("button",{type:"button",onClick:v,disabled:!m.trim(),title:"Send (Enter)",className:"grid size-7 place-items-center rounded-full bg-accent text-accent-fg transition-[opacity,transform] duration-(--duration-fast) enabled:hover:scale-105 disabled:opacity-30",children:[(0,b.jsx)(e.ArrowUp,{className:"size-3.5"}),(0,b.jsx)("span",{className:"sr-only",children:"Send"})]})]})]})})}a.s(["ChatView",0,function({chatId:a,variant:e,onExpand:f,onNavigate:g}){let{chats:h,stop:i,remove:k,notice:n,dismissNotice:p}=(0,o.useChats)(),s=(0,d.useRouter)(),t=h.find(b=>b.id===a),[u,v]=(0,c.useState)([a]);if(u.includes(a)||v([...u,a]),!t)return(0,b.jsx)("div",{className:"grid h-full place-items-center p-8 text-sm text-muted",children:"This chat was closed."});let z=(0,r.chatStatus)(t);return(0,b.jsxs)("section",{"aria-label":`Chat: ${t.title}`,className:"flex h-full min-h-0 flex-col",children:[(0,b.jsxs)("header",{className:(0,q.cn)("flex h-14 shrink-0 items-center gap-3 border-b border-border px-5","modal"===e&&"pr-14"),children:[(0,b.jsx)(w.StatusMarker,{status:z,showIdle:!0}),(0,b.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,b.jsx)("h2",{className:"truncate text-sm font-medium text-txt",children:t.title}),(0,b.jsx)("p",{className:"font-mono text-[10px] text-muted",children:r.STATUS_LABEL[z]})]}),t.attach&&(0,b.jsx)("button",{type:"button",onClick:()=>{var a;return t.attach&&(a=(0,w.attachHref)(t.attach),void(g?.(),s.push(a)))},title:`Open ${t.attach.id} in the ${"epic"===t.attach.kind?"roadmap":"board"}`,className:"rounded-full border border-border px-2 py-1 text-muted transition-colors duration-(--duration-fast) hover:border-accent/50 hover:text-accent",children:(0,b.jsx)(w.AttachLabel,{attach:t.attach})}),t.busy&&(0,b.jsxs)("button",{type:"button",onClick:()=>i(t.id),title:"Stop the agent",className:x,children:[(0,b.jsx)(l,{className:"size-3.5 fill-current"}),(0,b.jsx)("span",{className:"sr-only",children:"Stop"})]}),"modal"===e&&f&&(0,b.jsxs)("button",{type:"button",onClick:f,title:"Open as page",className:x,children:[(0,b.jsx)(j,{className:"size-3.5"}),(0,b.jsx)("span",{className:"sr-only",children:"Open as page"})]}),"page"===e&&(0,b.jsx)("button",{type:"button",onClick:()=>k(t.id),"aria-label":`Delete ${t.title}`,title:"Delete chat",className:(0,q.cn)(x,"hover:text-danger"),children:(0,b.jsx)(m.Trash2,{className:"size-3.5"})})]}),u.map(c=>{let d=h.find(a=>a.id===c);return d?(0,b.jsx)(y,{chat:d,hidden:c!==a,wide:"page"===e},c):null}),n&&(0,b.jsxs)("div",{role:"status",className:"mx-5 mb-2 flex items-start gap-2 rounded-md border border-amber/30 bg-amber/10 px-3 py-2 text-xs text-amber animate-fade-in",children:[(0,b.jsx)("span",{className:"flex-1",children:n}),(0,b.jsx)("button",{onClick:p,"aria-label":"Dismiss",className:"leading-none text-muted hover:text-txt",children:"×"})]}),(0,b.jsx)(C,{chat:t,wide:"page"===e},t.id)]})}],712125)}];
|
|
1
|
+
module.exports=[712125,544428,a=>{"use strict";var b=a.i(662145),c=a.i(174897),d=a.i(913975),e=a.i(498053),f=a.i(256857);let g={name:"arrow-up-right",size:24,node:[["path",{d:"M7 7h10v10",key:"1tivn9"}],["path",{d:"M7 17 17 7",key:"1vkiza"}]]};g.node;let h=(0,f.default)(g);a.s(["ArrowUpRight",0,h],544428);let i={name:"maximize-2",size:24,node:[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"m21 3-7 7",key:"1l2asr"}],["path",{d:"m3 21 7-7",key:"tjx5ai"}],["path",{d:"M9 21H3v-6",key:"wtvkvv"}]]};i.node;let j=(0,f.default)(i),k={name:"square",size:24,node:[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}]]};k.node;let l=(0,f.default)(k);var m=a.i(28386),n=a.i(544394),o=a.i(685698),p=a.i(149350),q=a.i(368114),r=a.i(107742),s=a.i(341225);function t({proposal:a,onResolve:d}){let{rootParam:e,openDoc:f}=(0,n.useApp)(),[g,h]=(0,c.useState)(null),[i,j]=(0,c.useState)(null),[k,l]=(0,c.useState)(!1);(0,c.useEffect)(()=>{fetch(`/api/docs${e}&read=${encodeURIComponent(a.path)}`).then(a=>a.ok?a.json():null).then(b=>h(b?.path===a.path.replace(/^\.\//,"")&&"string"==typeof b.content?b.content:"")).catch(()=>h(""))},[a.path,e]);let m=(0,c.useMemo)(()=>null===g?null:(0,s.applyEdits)(g,a.edits),[g,a.edits]),o=null!==m&&"error"in m?m.error:null,p=(0,c.useMemo)(()=>null===g||!m||"error"in m?[]:(0,s.visibleHunks)((0,s.lineDiff)(g,m.content)),[g,m]),r=p.filter(a=>"number"!=typeof a&&"+"===a.op).length,u=p.filter(a=>"number"!=typeof a&&"-"===a.op).length;async function v(){l(!0),j(null);try{let b=await fetch(`/api/docs${e}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:a.path,edits:a.edits,actor:"ai"})});if(!b.ok)throw Error((await b.json().catch(()=>null))?.error??"Save failed");d("accepted")}catch(a){j(a.message)}finally{l(!1)}}return(0,b.jsxs)("div",{className:"my-2 rounded-md border border-border overflow-hidden",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2 px-2 py-1.5 bg-surface2 border-b border-border",children:[(0,b.jsx)("button",{onClick:()=>f(a.path),className:"text-xs font-mono text-accent truncate hover:underline",title:a.path,children:a.path}),(0,b.jsxs)("span",{className:"text-[10px] font-mono text-teal-400",children:["+",r]}),(0,b.jsxs)("span",{className:"text-[10px] font-mono text-red-400",children:["-",u]})]}),a.summary&&(0,b.jsx)("div",{className:"px-2 py-1 text-xs text-muted border-b border-border",children:a.summary}),(0,b.jsxs)("div",{className:"max-h-72 overflow-auto text-[11px] font-mono leading-5",children:[null===g&&(0,b.jsx)("div",{className:"px-2 py-1 text-muted",children:"Loading diff…"}),o&&(0,b.jsxs)("div",{className:"px-2 py-1 text-red-400",children:["Doc changed since this proposal (",o,"). Ask the agent to propose again."]}),null!==g&&!o&&0===p.length&&(0,b.jsx)("div",{className:"px-2 py-1 text-muted",children:"No changes"}),p.map((a,c)=>"number"==typeof a?(0,b.jsxs)("div",{className:"px-2 text-muted bg-surface2/50",children:["⋯ ",a," unchanged line",a>1?"s":""]},c):(0,b.jsxs)("div",{className:(0,q.cn)("px-2 whitespace-pre-wrap break-words","+"===a.op&&"bg-teal-500/10 text-teal-300","-"===a.op&&"bg-red-500/10 text-red-300 line-through decoration-red-400/40"),children:[a.op," ",a.text||" "]},c))]}),(0,b.jsxs)("div",{className:"flex items-center gap-2 px-2 py-1.5 border-t border-border",children:["pending"===a.status?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("button",{onClick:v,disabled:k||null===g||!!o,className:"text-xs px-2 py-0.5 rounded-sm bg-accent/20 text-accent hover:bg-accent/30 disabled:opacity-50",children:k?"Applying…":"Accept"}),(0,b.jsx)("button",{onClick:()=>d("rejected"),disabled:k,className:"text-xs px-2 py-0.5 rounded-sm text-muted hover:text-txt",children:"Reject"})]}):(0,b.jsx)("span",{className:(0,q.cn)("text-xs","accepted"===a.status?"text-teal-400":"text-muted"),children:"accepted"===a.status?"✓ Applied":"Rejected"}),i&&(0,b.jsx)("span",{className:"text-xs text-red-400 truncate",children:i})]})]})}function u({proposal:a,onResolve:d}){let{rootParam:e,openDoc:f}=(0,n.useApp)(),g=a.plan,h="breakdown"===g.kind?g.tasks:[],i="roadmap"===g.kind?g.horizons??[]:[],j="roadmap"===g.kind?g.epics??[]:[],k="breakdown"===g.kind?(g.epic??"").trim().toUpperCase():"",l="breakdown"===g.kind?g.newEpic:void 0,[m,o]=(0,c.useState)(new Map),[p,q]=(0,c.useState)(new Set),[r,s]=(0,c.useState)(null),[t,w]=(0,c.useState)(null),[x,y]=(0,c.useState)(!1);(0,c.useEffect)(()=>{fetch(`/api/roadmap${e}`).then(a=>a.ok?a.json():null).then(a=>o(new Map((a?.items??[]).map(a=>[a.id,a.title])))).catch(()=>o(new Map))},[e]);let z=("breakdown"===g.kind?h.map(a=>a.key):[...i,...j].map(a=>a.key)).filter(a=>!p.has(a)),A="pending"===a.status,B=new Set(i.map(a=>a.key)),C=(a,c,d,e,f=!1)=>(0,b.jsx)(v,{rowKey:a,title:c,meta:d,body:e,indent:f,checked:!p.has(a),disabled:!A||x,onToggle:()=>{w(null),q(b=>{let c=new Set(b),d=c.has(a);for(let b of B.has(a)?[a,...j.filter(b=>b.parent.trim()===a).map(a=>a.key)]:[a])d?c.delete(b):c.add(b);let e=j.find(b=>b.key===a)?.parent.trim();return d&&e&&B.has(e)&&c.delete(e),c})},open:r===a,onOpen:()=>s(r===a?null:a)},a),D=a=>a.trim().split("\n")[0]??"",E=[...new Set(j.map(a=>a.parent.trim()).filter(a=>!B.has(a)))];async function F(){y(!0),w(null);try{let a=await fetch(`/api/plan/apply${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({plan:g,selected:z})}),b=await a.json().catch(()=>null);if(!a.ok)throw Error(b?.error??`Apply failed (${a.status})`);d("accepted",b?.created??[],[...p])}catch(a){w(a.message)}finally{y(!1)}}return(0,b.jsxs)("div",{className:"my-2 rounded-md border border-border overflow-hidden",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2 px-2 py-1.5 bg-surface2 border-b border-border",children:[(0,b.jsx)("span",{className:"text-[10px] font-mono uppercase tracking-widest text-muted",children:"Plan"}),"breakdown"===g.kind?(0,b.jsxs)(b.Fragment,{children:[k?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("span",{className:"text-xs font-mono text-accent",children:k}),(0,b.jsx)("span",{className:"text-xs text-txt truncate",children:m.get(k)??""})]}):l?(0,b.jsxs)("span",{className:"text-xs text-txt truncate",children:["New epic: ",l.title,(0,b.jsxs)("span",{className:"text-muted",children:[" (under ",l.parent.trim().toUpperCase()," ",m.get(l.parent.trim().toUpperCase())??"",")"]})]}):(0,b.jsx)("span",{className:"text-xs text-muted",children:"No epic"}),(0,b.jsxs)("span",{className:"ml-auto text-[10px] font-mono text-muted",children:[h.length," tasks"]})]}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("span",{className:"text-xs text-txt",children:"Roadmap"}),(0,b.jsxs)("span",{className:"ml-auto text-[10px] font-mono text-muted",children:[i.length?`${i.length} horizons \xb7 `:"",j.length," epics"]})]})]}),(0,b.jsxs)("ul",{className:"max-h-80 overflow-auto",children:[h.map(a=>C(a.key,a.title,[a.size,a.dependsOn?.length?`after ${a.dependsOn.join(", ")}`:null,a.due?`due ${a.due}`:null].filter(Boolean).join(" · "),a.body)),i.map(a=>[C(a.key,a.title,"new horizon",a.body),...j.filter(b=>b.parent.trim()===a.key).map(a=>C(a.key,a.title,D(a.body),a.body,!0))]),E.map(a=>[(0,b.jsxs)("li",{className:"px-2 py-1.5 border-b border-border text-xs text-muted",children:[(0,b.jsx)("span",{className:"font-mono text-accent mr-1",children:a.toUpperCase()}),m.get(a.toUpperCase())??""]},`parent-${a}`),...j.filter(b=>b.parent.trim()===a).map(a=>C(a.key,a.title,D(a.body),a.body,!0))])]}),t&&(0,b.jsx)("div",{className:"px-2 py-1 text-xs text-red-400 whitespace-pre-wrap border-t border-border",children:t}),(0,b.jsx)("div",{className:"flex items-center gap-2 px-2 py-1.5 border-t border-border",children:A?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("button",{onClick:F,disabled:x||0===z.length,className:"text-xs px-2 py-0.5 rounded-sm bg-accent/20 text-accent hover:bg-accent/30 disabled:opacity-50",children:x?"Creating…":`Accept (${z.length})`}),(0,b.jsx)("button",{onClick:()=>d("rejected",[],[]),disabled:x,className:"text-xs px-2 py-0.5 rounded-sm text-muted hover:text-txt",children:"Reject"})]}):"accepted"===a.status?(0,b.jsxs)("span",{className:"text-xs text-teal-400",children:["✓ Created"," ",(a.created??[]).map((a,c)=>(0,b.jsxs)("span",{children:[c>0&&", ",(0,b.jsx)("button",{onClick:()=>f(a.file),className:"font-mono hover:underline",children:a.id})]},a.id))]}):(0,b.jsx)("span",{className:"text-xs text-muted",children:"Rejected"})})]})}function v({rowKey:a,title:c,meta:d,body:e,indent:f,checked:g,disabled:h,onToggle:i,open:j,onOpen:k}){return(0,b.jsxs)("li",{"data-plan-row":a,className:"border-b border-border last:border-b-0",children:[(0,b.jsxs)("div",{className:(0,q.cn)("flex items-start gap-2 px-2 py-1.5",f&&"pl-6"),children:[(0,b.jsx)("input",{type:"checkbox","aria-label":`Include ${c}`,checked:g,disabled:h,onChange:i,className:"mt-0.5 accent-accent"}),(0,b.jsxs)("button",{onClick:k,className:"flex-1 min-w-0 text-left",children:[(0,b.jsxs)("div",{className:(0,q.cn)("text-xs text-txt",!g&&"line-through text-muted"),children:[(0,b.jsx)("span",{className:"font-mono text-muted mr-1",children:a}),c]}),d&&(0,b.jsx)("div",{className:"text-[10px] font-mono text-muted truncate",children:d})]})]}),j&&e&&(0,b.jsx)("div",{className:"px-3 pb-2 border-t border-border bg-surface2/40",children:(0,b.jsx)(p.MarkdownRenderer,{content:e,className:"text-xs"})})]})}var w=a.i(429672),x=a.i(598984);let y="grid size-8 shrink-0 place-items-center rounded-md text-muted transition-colors duration-(--duration-fast) hover:bg-surface2 hover:text-txt";function z({chat:a,hidden:d,wide:e}){let{send:f,resolveProposal:g,resolvePlan:h,answerQuestions:i}=(0,o.useChats)(),j=(0,c.useRef)(null),k=a.messages;return(0,c.useEffect)(()=>{let a=j.current;a&&!d&&(a.scrollTop=a.scrollHeight)},[k,d]),(0,b.jsx)("div",{ref:j,hidden:d,role:"log","aria-live":"polite",className:"min-h-0 flex-1 overflow-y-auto",children:(0,b.jsxs)("div",{className:(0,q.cn)("mx-auto flex flex-col gap-5 px-5 py-6 text-sm",e?"max-w-3xl":"max-w-none"),children:[0===k.length&&(0,b.jsx)(C,{chat:a,onPick:b=>f(a.id,b)}),k.map((c,d)=>(0,b.jsx)(A,{m:c,thinking:a.busy&&d===k.length-1,busy:a.busy,onProposal:(b,c,d)=>g(a.id,b,c,d),onPlan:(b,c,d,e)=>h(a.id,b,c,d,e),onAnswers:(b,c)=>i(a.id,b,c)},d))]})})}function A({m:a,thinking:c,busy:d,onProposal:e,onPlan:f,onAnswers:g}){return"user"===a.role?(0,b.jsx)("div",{className:"flex justify-end animate-fade-in",children:(0,b.jsx)("div",{className:"max-w-[85%] whitespace-pre-wrap rounded-2xl rounded-br-md border border-accent/20 bg-accent/10 px-3.5 py-2 text-txt",children:a.text})}):(0,b.jsxs)("div",{className:"flex gap-3 animate-fade-in",children:[(0,b.jsx)("div",{className:"mt-0.5 grid size-6 shrink-0 place-items-center rounded-md bg-linear-to-br from-accent to-teal text-[10px] text-white","aria-hidden":!0,children:"⬡"}),(0,b.jsxs)("div",{className:"min-w-0 flex-1 space-y-2",children:[a.tools.length>0&&(0,b.jsx)("div",{className:"flex flex-wrap gap-1",children:a.tools.map((a,c)=>(0,b.jsx)("span",{className:"rounded-sm border border-border bg-surface2 px-1.5 py-0.5 font-mono text-[10px] text-muted animate-slide-in",children:a},c))}),a.proposals.map(a=>(0,b.jsx)(t,{proposal:a,onResolve:b=>e(a.id,a.path,b)},a.id)),a.plans.map(a=>(0,b.jsx)(u,{proposal:a,onResolve:(b,c,d)=>f(a,b,c,d)},a.id)),a.questions.map(a=>(0,b.jsx)(w.QuestionCard,{set:a,disabled:d,onSubmit:b=>g(a,b)},a.id)),a.text&&(0,b.jsx)(p.MarkdownRenderer,{content:a.text,className:"text-sm"}),c&&!a.text&&!a.error&&(0,b.jsx)(B,{}),a.error&&(0,b.jsx)("p",{className:"whitespace-pre-wrap text-xs text-danger",children:a.error})]})]})}function B(){return(0,b.jsxs)("span",{className:"inline-flex items-center gap-2 text-xs text-muted",children:[(0,b.jsx)("span",{className:"inline-flex gap-1","aria-hidden":!0,children:[0,150,300].map(a=>(0,b.jsx)("span",{className:"size-1.5 rounded-full bg-accent animate-pulse-dot",style:{animationDelay:`${a}ms`}},a))}),"Thinking…"]})}function C({chat:a,onPick:c}){let d=a.attach;return(0,b.jsxs)("div",{className:"flex flex-col items-start gap-4 py-6 animate-fade-in",children:[(0,b.jsx)("div",{className:"grid size-9 place-items-center rounded-lg bg-linear-to-br from-accent to-teal text-sm text-white","aria-hidden":!0,children:"⬡"}),(0,b.jsxs)("div",{children:[(0,b.jsx)("h3",{className:"text-lg font-semibold text-txt",children:d?`Ask about ${d.id}`:"Ask the agent"}),(0,b.jsx)("p",{className:"mt-1 max-w-md text-sm text-muted",children:d?`The agent reads ${"epic"===d.kind?"the epic and its tasks":"the task"} first. It proposes changes; nothing is written until you accept.`:"It reads your docs, tasks and roadmap and proposes edits you review. Runs on your local Claude Code login."})]}),(0,b.jsx)("div",{className:"flex flex-col gap-1.5",children:(0,r.suggestions)(d).map((a,d)=>(0,b.jsxs)("button",{type:"button",onClick:()=>c(a),style:{animationDelay:`${60*d}ms`},className:"group flex items-center gap-2 rounded-lg border border-border px-3 py-2 text-left text-sm text-txt/90 transition-colors duration-(--duration-fast) animate-slide-in [animation-fill-mode:both] hover:border-accent/50 hover:bg-accent/5",children:[(0,b.jsx)(h,{className:"size-3.5 text-muted transition-transform duration-(--duration-fast) group-hover:-translate-y-px group-hover:translate-x-px group-hover:text-accent"}),a]},a))})]})}function D({chat:a,wide:f}){let{send:g,stop:h,queue:i}=(0,o.useChats)(),{selectedDoc:j}=(0,n.useApp)(),k=(0,d.usePathname)(),[m,p]=(0,c.useState)(""),r="/docs"===k?j?.path:void 0,s=a.messages[a.messages.length-1],t=!!s?.questions.some(a=>!a.answers),u=Math.min(8,Math.max(1,m.split("\n").length));function v(){m.trim()&&!a.busy&&(g(a.id,m),p(""))}return(0,b.jsx)("div",{className:"shrink-0 px-5 pb-4 pt-1",children:(0,b.jsxs)("div",{className:(0,q.cn)("mx-auto rounded-xl border border-border bg-surface2 transition-[border-color,box-shadow] duration-(--duration-base) focus-within:border-accent/60 focus-within:shadow-[0_0_0_3px_rgb(var(--rgb-accent)/0.12)]",f?"max-w-3xl":"max-w-none"),children:[(0,b.jsx)("textarea",{autoFocus:!i.some(b=>b.id===a.id),value:m,onChange:a=>p(a.target.value),onKeyDown:a=>{"Enter"!==a.key||a.shiftKey||a.nativeEvent.isComposing||(a.preventDefault(),v())},rows:u,placeholder:a.busy?"Agent is working…":t?"Answer the questions above…":"Ask the agent… (Enter to send)",className:"block w-full resize-none bg-transparent px-3.5 pt-3 text-sm text-txt placeholder:text-muted focus:outline-hidden"}),(0,b.jsxs)("div",{className:"flex items-center gap-2 px-2.5 pb-2 pt-1",children:[(0,b.jsx)("span",{className:"min-w-0 flex-1 truncate font-mono text-[10px] text-muted",children:r?`@ ${r}`:"Shift+Enter for a new line"}),a.busy?(0,b.jsxs)("button",{type:"button",onClick:()=>h(a.id),title:"Stop the agent",className:"grid size-7 place-items-center rounded-full border border-border text-muted transition-colors hover:text-txt",children:[(0,b.jsx)(l,{className:"size-3 fill-current"}),(0,b.jsx)("span",{className:"sr-only",children:"Stop"})]}):(0,b.jsxs)("button",{type:"button",onClick:v,disabled:!m.trim(),title:"Send (Enter)",className:"grid size-7 place-items-center rounded-full bg-accent text-accent-fg transition-[opacity,transform] duration-(--duration-fast) enabled:hover:scale-105 disabled:opacity-30",children:[(0,b.jsx)(e.ArrowUp,{className:"size-3.5"}),(0,b.jsx)("span",{className:"sr-only",children:"Send"})]})]})]})})}a.s(["ChatView",0,function({chatId:a,variant:e,onExpand:f,onNavigate:g}){let{chats:h,stop:i,remove:k,notice:n,dismissNotice:p}=(0,o.useChats)(),s=(0,d.useRouter)(),t=h.find(b=>b.id===a),[u,v]=(0,c.useState)([a]);if(u.includes(a)||v([...u,a]),!t)return(0,b.jsx)("div",{className:"grid h-full place-items-center p-8 text-sm text-muted",children:"This chat was closed."});let w=(0,r.chatStatus)(t);return(0,b.jsxs)("section",{"aria-label":`Chat: ${t.title}`,className:"flex h-full min-h-0 flex-col",children:[(0,b.jsxs)("header",{className:(0,q.cn)("flex h-14 shrink-0 items-center gap-3 border-b border-border px-5","modal"===e&&"pr-14"),children:[(0,b.jsx)(x.StatusMarker,{status:w,showIdle:!0}),(0,b.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,b.jsx)("h2",{className:"truncate text-sm font-medium text-txt",children:t.title}),(0,b.jsx)("p",{className:"font-mono text-[10px] text-muted",children:r.STATUS_LABEL[w]})]}),t.attach&&(0,b.jsx)("button",{type:"button",onClick:()=>{var a;return t.attach&&(a=(0,x.attachHref)(t.attach),void(g?.(),s.push(a)))},title:`Open ${t.attach.id} in the ${"epic"===t.attach.kind?"roadmap":"board"}`,className:"rounded-full border border-border px-2 py-1 text-muted transition-colors duration-(--duration-fast) hover:border-accent/50 hover:text-accent",children:(0,b.jsx)(x.AttachLabel,{attach:t.attach})}),t.busy&&(0,b.jsxs)("button",{type:"button",onClick:()=>i(t.id),title:"Stop the agent",className:y,children:[(0,b.jsx)(l,{className:"size-3.5 fill-current"}),(0,b.jsx)("span",{className:"sr-only",children:"Stop"})]}),"modal"===e&&f&&(0,b.jsxs)("button",{type:"button",onClick:f,title:"Open as page",className:y,children:[(0,b.jsx)(j,{className:"size-3.5"}),(0,b.jsx)("span",{className:"sr-only",children:"Open as page"})]}),"page"===e&&(0,b.jsx)("button",{type:"button",onClick:()=>k(t.id),"aria-label":`Delete ${t.title}`,title:"Delete chat",className:(0,q.cn)(y,"hover:text-danger"),children:(0,b.jsx)(m.Trash2,{className:"size-3.5"})})]}),u.map(c=>{let d=h.find(a=>a.id===c);return d?(0,b.jsx)(z,{chat:d,hidden:c!==a,wide:"page"===e},c):null}),n&&(0,b.jsxs)("div",{role:"status",className:"mx-5 mb-2 flex items-start gap-2 rounded-md border border-amber/30 bg-amber/10 px-3 py-2 text-xs text-amber animate-fade-in",children:[(0,b.jsx)("span",{className:"flex-1",children:n}),(0,b.jsx)("button",{onClick:p,"aria-label":"Dismiss",className:"leading-none text-muted hover:text-txt",children:"×"})]}),(0,b.jsx)(D,{chat:t,wide:"page"===e},t.id)]})}],712125)}];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=src_components_chat_ChatView_tsx_0h5j-e2._.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/chat/ChatView.tsx","../../../../src/components/chat/ProposalCard.tsx","../../../../src/components/chat/PlanCard.tsx","../../../../src/lib/diff.ts","../../../../node_modules/.pnpm/lucide-react%401.48.0_react%4019.3.0/node_modules/lucide-react/src/icons/square.ts","../../../../node_modules/.pnpm/lucide-react%401.48.0_react%4019.3.0/node_modules/lucide-react/src/icons/maximize-2.ts","../../../../node_modules/.pnpm/lucide-react%401.48.0_react%4019.3.0/node_modules/lucide-react/src/icons/arrow-up-right.ts"],"sourcesContent":["\"use client\"\n\nimport { useEffect, useRef, useState } from \"react\"\nimport { usePathname, useRouter } from \"next/navigation\"\nimport { ArrowUp, ArrowUpRight, Maximize2, Square, Trash2 } from \"lucide-react\"\nimport { useApp } from \"@/context/AppContext\"\nimport { useChats, type ChatMessage, type ChatTab } from \"@/context/ChatContext\"\nimport { MarkdownRenderer } from \"@/components/docs/MarkdownRenderer\"\nimport { cn } from \"@/lib/utils\"\nimport { STATUS_LABEL, chatStatus, suggestions } from \"@/lib/chats\"\nimport { ProposalCard, type ProposalStatus } from \"./ProposalCard\"\nimport { PlanCard, type PlanCreated, type PlanProposal, type PlanStatus } from \"./PlanCard\"\nimport { QuestionCard, type QuestionSet } from \"./QuestionCard\"\nimport { AttachLabel, StatusMarker, attachHref } from \"./StatusMarker\"\n\n/**\n * One conversation. The chat modal and the /chat page both render this, so they are the same chat UI.\n * Chats shown here before stay mounted (hidden) so card state, e.g. unchecked plan rows, survives switching.\n */\nexport function ChatView({ chatId, variant, onExpand, onNavigate }: {\n chatId: string\n variant: \"modal\" | \"page\"\n /** Modal: open this chat as a page */\n onExpand?: () => void\n /** Called before following a link out of the chat (the modal closes itself) */\n onNavigate?: () => void\n}) {\n const { chats, stop, remove, notice, dismissNotice } = useChats()\n const router = useRouter()\n const chat = chats.find((c) => c.id === chatId)\n // Adjust-state-during-render: remember every chat this view has shown\n const [mounted, setMounted] = useState<string[]>([chatId])\n if (!mounted.includes(chatId)) setMounted([...mounted, chatId])\n\n if (!chat) {\n return <div className=\"grid h-full place-items-center p-8 text-sm text-muted\">This chat was closed.</div>\n }\n\n const status = chatStatus(chat)\n const go = (href: string) => { onNavigate?.(); router.push(href) }\n\n return (\n <section aria-label={`Chat: ${chat.title}`} className=\"flex h-full min-h-0 flex-col\">\n <header className={cn(\"flex h-14 shrink-0 items-center gap-3 border-b border-border px-5\", variant === \"modal\" && \"pr-14\")}>\n <StatusMarker status={status} showIdle />\n <div className=\"min-w-0 flex-1\">\n <h2 className=\"truncate text-sm font-medium text-txt\">{chat.title}</h2>\n <p className=\"font-mono text-[10px] text-muted\">{STATUS_LABEL[status]}</p>\n </div>\n {chat.attach && (\n <button\n type=\"button\"\n onClick={() => chat.attach && go(attachHref(chat.attach))}\n title={`Open ${chat.attach.id} in the ${chat.attach.kind === \"epic\" ? \"roadmap\" : \"board\"}`}\n className=\"rounded-full border border-border px-2 py-1 text-muted transition-colors duration-(--duration-fast) hover:border-accent/50 hover:text-accent\"\n >\n <AttachLabel attach={chat.attach} />\n </button>\n )}\n {chat.busy && (\n <button type=\"button\" onClick={() => stop(chat.id)} title=\"Stop the agent\" className={ICON_BTN}>\n <Square className=\"size-3.5 fill-current\" />\n <span className=\"sr-only\">Stop</span>\n </button>\n )}\n {variant === \"modal\" && onExpand && (\n <button type=\"button\" onClick={onExpand} title=\"Open as page\" className={ICON_BTN}>\n <Maximize2 className=\"size-3.5\" />\n <span className=\"sr-only\">Open as page</span>\n </button>\n )}\n {variant === \"page\" && (\n <button type=\"button\" onClick={() => remove(chat.id)} aria-label={`Delete ${chat.title}`} title=\"Delete chat\" className={cn(ICON_BTN, \"hover:text-danger\")}>\n <Trash2 className=\"size-3.5\" />\n </button>\n )}\n </header>\n\n {mounted.map((id) => {\n const c = chats.find((x) => x.id === id)\n return c ? <Conversation key={id} chat={c} hidden={id !== chatId} wide={variant === \"page\"} /> : null\n })}\n\n {notice && (\n <div role=\"status\" className=\"mx-5 mb-2 flex items-start gap-2 rounded-md border border-amber/30 bg-amber/10 px-3 py-2 text-xs text-amber animate-fade-in\">\n <span className=\"flex-1\">{notice}</span>\n <button onClick={dismissNotice} aria-label=\"Dismiss\" className=\"leading-none text-muted hover:text-txt\">×</button>\n </div>\n )}\n <Composer key={chat.id} chat={chat} wide={variant === \"page\"} />\n </section>\n )\n}\n\nconst ICON_BTN = \"grid size-8 shrink-0 place-items-center rounded-md text-muted transition-colors duration-(--duration-fast) hover:bg-surface2 hover:text-txt\"\n\nfunction Conversation({ chat, hidden, wide }: { chat: ChatTab; hidden: boolean; wide: boolean }) {\n const { send, resolveProposal, resolvePlan, answerQuestions } = useChats()\n const scrollRef = useRef<HTMLDivElement>(null)\n const messages = chat.messages\n\n // Follow the stream while visible\n useEffect(() => {\n const el = scrollRef.current\n if (el && !hidden) el.scrollTop = el.scrollHeight\n }, [messages, hidden])\n\n return (\n <div ref={scrollRef} hidden={hidden} role=\"log\" aria-live=\"polite\" className=\"min-h-0 flex-1 overflow-y-auto\">\n <div className={cn(\"mx-auto flex flex-col gap-5 px-5 py-6 text-sm\", wide ? \"max-w-3xl\" : \"max-w-none\")}>\n {messages.length === 0 && <EmptyChat chat={chat} onPick={(s) => send(chat.id, s)} />}\n {messages.map((m, i) => (\n <Message\n key={i}\n m={m}\n thinking={chat.busy && i === messages.length - 1}\n busy={chat.busy}\n onProposal={(id, path, status) => resolveProposal(chat.id, id, path, status)}\n onPlan={(p, status, created, unchecked) => resolvePlan(chat.id, p, status, created, unchecked)}\n onAnswers={(set, answers) => answerQuestions(chat.id, set, answers)}\n />\n ))}\n </div>\n </div>\n )\n}\n\nfunction Message({ m, thinking, busy, onProposal, onPlan, onAnswers }: {\n m: ChatMessage\n thinking: boolean\n busy: boolean\n onProposal: (id: string, path: string, status: ProposalStatus) => void\n onPlan: (p: PlanProposal, status: PlanStatus, created: PlanCreated[], unchecked: string[]) => void\n onAnswers: (set: QuestionSet, answers: string[]) => void\n}) {\n if (m.role === \"user\") {\n return (\n <div className=\"flex justify-end animate-fade-in\">\n <div className=\"max-w-[85%] whitespace-pre-wrap rounded-2xl rounded-br-md border border-accent/20 bg-accent/10 px-3.5 py-2 text-txt\">\n {m.text}\n </div>\n </div>\n )\n }\n return (\n <div className=\"flex gap-3 animate-fade-in\">\n <div className=\"mt-0.5 grid size-6 shrink-0 place-items-center rounded-md bg-linear-to-br from-accent to-teal text-[10px] text-white\" aria-hidden>⬡</div>\n <div className=\"min-w-0 flex-1 space-y-2\">\n {m.tools.length > 0 && (\n <div className=\"flex flex-wrap gap-1\">\n {m.tools.map((t, j) => (\n <span key={j} className=\"rounded-sm border border-border bg-surface2 px-1.5 py-0.5 font-mono text-[10px] text-muted animate-slide-in\">{t}</span>\n ))}\n </div>\n )}\n {m.proposals.map((p) => (\n <ProposalCard key={p.id} proposal={p} onResolve={(status) => onProposal(p.id, p.path, status)} />\n ))}\n {m.plans.map((p) => (\n <PlanCard key={p.id} proposal={p} onResolve={(status, created, unchecked) => onPlan(p, status, created, unchecked)} />\n ))}\n {m.questions.map((q) => (\n <QuestionCard key={q.id} set={q} disabled={busy} onSubmit={(answers) => onAnswers(q, answers)} />\n ))}\n {m.text && <MarkdownRenderer content={m.text} className=\"text-sm\" />}\n {thinking && !m.text && !m.error && <Thinking />}\n {m.error && <p className=\"whitespace-pre-wrap text-xs text-danger\">{m.error}</p>}\n </div>\n </div>\n )\n}\n\nfunction Thinking() {\n return (\n <span className=\"inline-flex items-center gap-2 text-xs text-muted\">\n <span className=\"inline-flex gap-1\" aria-hidden>\n {[0, 150, 300].map((d) => (\n <span key={d} className=\"size-1.5 rounded-full bg-accent animate-pulse-dot\" style={{ animationDelay: `${d}ms` }} />\n ))}\n </span>\n Thinking…\n </span>\n )\n}\n\nfunction EmptyChat({ chat, onPick }: { chat: ChatTab; onPick: (s: string) => void }) {\n const a = chat.attach\n return (\n <div className=\"flex flex-col items-start gap-4 py-6 animate-fade-in\">\n <div className=\"grid size-9 place-items-center rounded-lg bg-linear-to-br from-accent to-teal text-sm text-white\" aria-hidden>⬡</div>\n <div>\n <h3 className=\"text-lg font-semibold text-txt\">{a ? `Ask about ${a.id}` : \"Ask the agent\"}</h3>\n <p className=\"mt-1 max-w-md text-sm text-muted\">\n {a\n ? `The agent reads ${a.kind === \"epic\" ? \"the epic and its tasks\" : \"the task\"} first. It proposes changes; nothing is written until you accept.`\n : \"It reads your docs, tasks and roadmap and proposes edits you review. Runs on your local Claude Code login.\"}\n </p>\n </div>\n <div className=\"flex flex-col gap-1.5\">\n {suggestions(a).map((s, i) => (\n <button\n key={s}\n type=\"button\"\n onClick={() => onPick(s)}\n style={{ animationDelay: `${60 * i}ms` }}\n className=\"group flex items-center gap-2 rounded-lg border border-border px-3 py-2 text-left text-sm text-txt/90 transition-colors duration-(--duration-fast) animate-slide-in [animation-fill-mode:both] hover:border-accent/50 hover:bg-accent/5\"\n >\n <ArrowUpRight className=\"size-3.5 text-muted transition-transform duration-(--duration-fast) group-hover:-translate-y-px group-hover:translate-x-px group-hover:text-accent\" />\n {s}\n </button>\n ))}\n </div>\n </div>\n )\n}\n\nfunction Composer({ chat, wide }: { chat: ChatTab; wide: boolean }) {\n const { send, stop, queue } = useChats()\n const { selectedDoc } = useApp()\n const pathname = usePathname()\n const [input, setInput] = useState(\"\")\n const docPath = pathname === \"/docs\" ? selectedDoc?.path : undefined\n const last = chat.messages[chat.messages.length - 1]\n const questionsPending = !!last?.questions.some((q) => !q.answers)\n const rows = Math.min(8, Math.max(1, input.split(\"\\n\").length))\n\n function submit() {\n if (!input.trim() || chat.busy) return\n send(chat.id, input)\n setInput(\"\")\n }\n\n return (\n <div className=\"shrink-0 px-5 pb-4 pt-1\">\n <div className={cn(\"mx-auto rounded-xl border border-border bg-surface2 transition-[border-color,box-shadow] duration-(--duration-base) focus-within:border-accent/60 focus-within:shadow-[0_0_0_3px_rgb(var(--rgb-accent)/0.12)]\", wide ? \"max-w-3xl\" : \"max-w-none\")}>\n <textarea\n // Not for a queued chat, so a second `c` walks the queue instead of typing into the composer\n autoFocus={!queue.some((q) => q.id === chat.id)}\n value={input}\n onChange={(e) => setInput(e.target.value)}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" && !e.shiftKey && !e.nativeEvent.isComposing) {\n e.preventDefault()\n submit()\n }\n }}\n rows={rows}\n placeholder={chat.busy ? \"Agent is working…\" : questionsPending ? \"Answer the questions above…\" : \"Ask the agent… (Enter to send)\"}\n className=\"block w-full resize-none bg-transparent px-3.5 pt-3 text-sm text-txt placeholder:text-muted focus:outline-hidden\"\n />\n <div className=\"flex items-center gap-2 px-2.5 pb-2 pt-1\">\n <span className=\"min-w-0 flex-1 truncate font-mono text-[10px] text-muted\">\n {docPath ? `@ ${docPath}` : \"Shift+Enter for a new line\"}\n </span>\n {chat.busy ? (\n <button type=\"button\" onClick={() => stop(chat.id)} title=\"Stop the agent\" className=\"grid size-7 place-items-center rounded-full border border-border text-muted transition-colors hover:text-txt\">\n <Square className=\"size-3 fill-current\" />\n <span className=\"sr-only\">Stop</span>\n </button>\n ) : (\n <button\n type=\"button\"\n onClick={submit}\n disabled={!input.trim()}\n title=\"Send (Enter)\"\n className=\"grid size-7 place-items-center rounded-full bg-accent text-accent-fg transition-[opacity,transform] duration-(--duration-fast) enabled:hover:scale-105 disabled:opacity-30\"\n >\n <ArrowUp className=\"size-3.5\" />\n <span className=\"sr-only\">Send</span>\n </button>\n )}\n </div>\n </div>\n </div>\n )\n}\n","\"use client\"\n\nimport { useEffect, useMemo, useState } from \"react\"\nimport { useApp } from \"@/context/AppContext\"\nimport { applyEdits, lineDiff, type DiffLine, type TextEdit } from \"@/lib/diff\"\nimport { cn } from \"@/lib/utils\"\n\nexport type ProposalStatus = \"pending\" | \"accepted\" | \"rejected\"\n\nexport interface Proposal {\n id: string\n path: string\n edits: TextEdit[]\n summary?: string\n status: ProposalStatus\n}\n\nconst CONTEXT = 2\n\n// Keep changed lines plus CONTEXT lines around them; collapse the rest into a count.\nfunction visibleHunks(lines: DiffLine[]): (DiffLine | number)[] {\n const keep = lines.map(() => false)\n lines.forEach((l, i) => {\n if (l.op === \" \") return\n for (let k = Math.max(0, i - CONTEXT); k <= Math.min(lines.length - 1, i + CONTEXT); k++) keep[k] = true\n })\n const out: (DiffLine | number)[] = []\n lines.forEach((l, i) => {\n if (keep[i]) out.push(l)\n else if (typeof out[out.length - 1] === \"number\") out[out.length - 1] = (out[out.length - 1] as number) + 1\n else out.push(1)\n })\n return out\n}\n\nexport function ProposalCard({ proposal, onResolve }: { proposal: Proposal; onResolve: (status: ProposalStatus) => void }) {\n const { rootParam, openDoc } = useApp()\n const [before, setBefore] = useState<string | null>(null)\n const [error, setError] = useState<string | null>(null)\n const [saving, setSaving] = useState(false)\n\n useEffect(() => {\n fetch(`/api/docs${rootParam}&read=${encodeURIComponent(proposal.path)}`)\n .then((r) => (r.ok ? r.json() : null))\n // readDoc falls back to fuzzy matching; a different path means this doc doesn't exist yet\n .then((d) => setBefore(d?.path === proposal.path.replace(/^\\.\\//, \"\") && typeof d.content === \"string\" ? d.content : \"\"))\n .catch(() => setBefore(\"\"))\n }, [proposal.path, rootParam])\n\n const applied = useMemo(() => (before === null ? null : applyEdits(before, proposal.edits)), [before, proposal.edits])\n const stale = applied !== null && \"error\" in applied ? applied.error : null\n const hunks = useMemo(\n () => (before === null || !applied || \"error\" in applied ? [] : visibleHunks(lineDiff(before, applied.content))),\n [before, applied],\n )\n const added = hunks.filter((h) => typeof h !== \"number\" && h.op === \"+\").length\n const removed = hunks.filter((h) => typeof h !== \"number\" && h.op === \"-\").length\n\n async function accept() {\n setSaving(true)\n setError(null)\n try {\n // Server re-applies the edits to the file as it is now, so unrelated changes since the proposal survive\n const res = await fetch(`/api/docs${rootParam}`, {\n method: \"PUT\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({ path: proposal.path, edits: proposal.edits, actor: \"ai\" }),\n })\n if (!res.ok) throw new Error((await res.json().catch(() => null))?.error ?? \"Save failed\")\n onResolve(\"accepted\")\n } catch (e) {\n setError((e as Error).message)\n } finally {\n setSaving(false)\n }\n }\n\n return (\n <div className=\"my-2 rounded-md border border-border overflow-hidden\">\n <div className=\"flex items-center gap-2 px-2 py-1.5 bg-surface2 border-b border-border\">\n <button onClick={() => openDoc(proposal.path)} className=\"text-xs font-mono text-accent truncate hover:underline\" title={proposal.path}>\n {proposal.path}\n </button>\n <span className=\"text-[10px] font-mono text-teal-400\">+{added}</span>\n <span className=\"text-[10px] font-mono text-red-400\">-{removed}</span>\n </div>\n {proposal.summary && <div className=\"px-2 py-1 text-xs text-muted border-b border-border\">{proposal.summary}</div>}\n\n <div className=\"max-h-72 overflow-auto text-[11px] font-mono leading-5\">\n {before === null && <div className=\"px-2 py-1 text-muted\">Loading diff…</div>}\n {stale && <div className=\"px-2 py-1 text-red-400\">Doc changed since this proposal ({stale}). Ask the agent to propose again.</div>}\n {before !== null && !stale && hunks.length === 0 && <div className=\"px-2 py-1 text-muted\">No changes</div>}\n {hunks.map((h, i) =>\n typeof h === \"number\" ? (\n <div key={i} className=\"px-2 text-muted bg-surface2/50\">⋯ {h} unchanged line{h > 1 ? \"s\" : \"\"}</div>\n ) : (\n <div\n key={i}\n className={cn(\n \"px-2 whitespace-pre-wrap break-words\",\n h.op === \"+\" && \"bg-teal-500/10 text-teal-300\",\n h.op === \"-\" && \"bg-red-500/10 text-red-300 line-through decoration-red-400/40\",\n )}\n >\n {h.op}{\" \"}{h.text || \" \"}\n </div>\n ),\n )}\n </div>\n\n <div className=\"flex items-center gap-2 px-2 py-1.5 border-t border-border\">\n {proposal.status === \"pending\" ? (\n <>\n <button\n onClick={accept}\n disabled={saving || before === null || !!stale}\n className=\"text-xs px-2 py-0.5 rounded-sm bg-accent/20 text-accent hover:bg-accent/30 disabled:opacity-50\"\n >\n {saving ? \"Applying…\" : \"Accept\"}\n </button>\n <button onClick={() => onResolve(\"rejected\")} disabled={saving} className=\"text-xs px-2 py-0.5 rounded-sm text-muted hover:text-txt\">\n Reject\n </button>\n </>\n ) : (\n <span className={cn(\"text-xs\", proposal.status === \"accepted\" ? \"text-teal-400\" : \"text-muted\")}>\n {proposal.status === \"accepted\" ? \"✓ Applied\" : \"Rejected\"}\n </span>\n )}\n {error && <span className=\"text-xs text-red-400 truncate\">{error}</span>}\n </div>\n </div>\n )\n}\n","\"use client\"\n\nimport { useEffect, useState } from \"react\"\nimport { useApp } from \"@/context/AppContext\"\nimport { MarkdownRenderer } from \"@/components/docs/MarkdownRenderer\"\nimport { cn } from \"@/lib/utils\"\nimport type { Plan, PlanEpic, PlanTask } from \"@/lib/plan\"\n\nexport type PlanStatus = \"pending\" | \"accepted\" | \"rejected\"\nexport interface PlanCreated { key: string; id: string; file: string }\n\nexport interface PlanProposal {\n id: string\n plan: Plan\n status: PlanStatus\n created?: PlanCreated[]\n}\n\nexport function PlanCard({ proposal, onResolve }: {\n proposal: PlanProposal\n onResolve: (status: PlanStatus, created: PlanCreated[], unchecked: string[]) => void\n}) {\n const { rootParam, openDoc } = useApp()\n const plan = proposal.plan\n const tasks: PlanTask[] = plan.kind === \"breakdown\" ? plan.tasks : []\n const horizons = plan.kind === \"roadmap\" ? plan.horizons ?? [] : []\n const epics: PlanEpic[] = plan.kind === \"roadmap\" ? plan.epics ?? [] : []\n const epicId = plan.kind === \"breakdown\" ? (plan.epic ?? \"\").trim().toUpperCase() : \"\"\n const newEpic = plan.kind === \"breakdown\" ? plan.newEpic : undefined\n const [titles, setTitles] = useState<Map<string, string>>(new Map())\n const [unchecked, setUnchecked] = useState<Set<string>>(new Set())\n const [open, setOpen] = useState<string | null>(null)\n const [error, setError] = useState<string | null>(null)\n const [saving, setSaving] = useState(false)\n\n useEffect(() => {\n fetch(`/api/roadmap${rootParam}`)\n .then((r) => (r.ok ? r.json() : null))\n .then((d) => setTitles(new Map((d?.items ?? []).map((i: { id: string; title: string }) => [i.id, i.title]))))\n .catch(() => setTitles(new Map()))\n }, [rootParam])\n\n const keys = plan.kind === \"breakdown\" ? tasks.map((t) => t.key) : [...horizons, ...epics].map((x) => x.key)\n const selected = keys.filter((k) => !unchecked.has(k))\n const pending = proposal.status === \"pending\"\n\n // Roadmap: a horizon toggles its epics; checking an epic re-checks its horizon (never an epic without its horizon).\n const epicsOf = (h: string) => epics.filter((e) => e.parent.trim() === h).map((e) => e.key)\n const horizonKeys = new Set(horizons.map((h) => h.key))\n function toggle(key: string) {\n setError(null)\n setUnchecked((prev) => {\n const next = new Set(prev)\n const on = next.has(key)\n const group = horizonKeys.has(key) ? [key, ...epicsOf(key)] : [key]\n for (const k of group) if (on) next.delete(k); else next.add(k)\n const parent = epics.find((e) => e.key === key)?.parent.trim()\n if (on && parent && horizonKeys.has(parent)) next.delete(parent)\n return next\n })\n }\n\n const row = (key: string, title: string, meta: string, body: string | undefined, indent = false) => (\n <PlanRow\n key={key} rowKey={key} title={title} meta={meta} body={body} indent={indent}\n checked={!unchecked.has(key)} disabled={!pending || saving} onToggle={() => toggle(key)}\n open={open === key} onOpen={() => setOpen(open === key ? null : key)}\n />\n )\n const outcome = (body: string) => body.trim().split(\"\\n\")[0] ?? \"\"\n // Existing horizons that the plan adds epics to, in first-use order.\n const existingParents = [...new Set(epics.map((e) => e.parent.trim()).filter((p) => !horizonKeys.has(p)))]\n\n async function accept() {\n setSaving(true)\n setError(null)\n try {\n const res = await fetch(`/api/plan/apply${rootParam}`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({ plan, selected }),\n })\n const data = await res.json().catch(() => null)\n if (!res.ok) throw new Error(data?.error ?? `Apply failed (${res.status})`)\n onResolve(\"accepted\", data?.created ?? [], [...unchecked])\n } catch (e) {\n setError((e as Error).message)\n } finally {\n setSaving(false)\n }\n }\n\n return (\n <div className=\"my-2 rounded-md border border-border overflow-hidden\">\n <div className=\"flex items-center gap-2 px-2 py-1.5 bg-surface2 border-b border-border\">\n <span className=\"text-[10px] font-mono uppercase tracking-widest text-muted\">Plan</span>\n {plan.kind === \"breakdown\" ? (\n <>\n {epicId ? (\n <>\n <span className=\"text-xs font-mono text-accent\">{epicId}</span>\n <span className=\"text-xs text-txt truncate\">{titles.get(epicId) ?? \"\"}</span>\n </>\n ) : newEpic ? (\n <span className=\"text-xs text-txt truncate\">\n New epic: {newEpic.title}\n <span className=\"text-muted\"> (under {newEpic.parent.trim().toUpperCase()} {titles.get(newEpic.parent.trim().toUpperCase()) ?? \"\"})</span>\n </span>\n ) : (\n <span className=\"text-xs text-muted\">No epic</span>\n )}\n <span className=\"ml-auto text-[10px] font-mono text-muted\">{tasks.length} tasks</span>\n </>\n ) : (\n <>\n <span className=\"text-xs text-txt\">Roadmap</span>\n <span className=\"ml-auto text-[10px] font-mono text-muted\">\n {horizons.length ? `${horizons.length} horizons · ` : \"\"}{epics.length} epics\n </span>\n </>\n )}\n </div>\n\n <ul className=\"max-h-80 overflow-auto\">\n {tasks.map((t) => row(\n t.key, t.title,\n [t.size, t.dependsOn?.length ? `after ${t.dependsOn.join(\", \")}` : null, t.due ? `due ${t.due}` : null].filter(Boolean).join(\" · \"),\n t.body,\n ))}\n {horizons.map((h) => [\n row(h.key, h.title, \"new horizon\", h.body),\n ...epics.filter((e) => e.parent.trim() === h.key).map((e) => row(e.key, e.title, outcome(e.body), e.body, true)),\n ])}\n {existingParents.map((p) => [\n <li key={`parent-${p}`} className=\"px-2 py-1.5 border-b border-border text-xs text-muted\">\n <span className=\"font-mono text-accent mr-1\">{p.toUpperCase()}</span>{titles.get(p.toUpperCase()) ?? \"\"}\n </li>,\n ...epics.filter((e) => e.parent.trim() === p).map((e) => row(e.key, e.title, outcome(e.body), e.body, true)),\n ])}\n </ul>\n\n {error && <div className=\"px-2 py-1 text-xs text-red-400 whitespace-pre-wrap border-t border-border\">{error}</div>}\n\n <div className=\"flex items-center gap-2 px-2 py-1.5 border-t border-border\">\n {pending ? (\n <>\n <button\n onClick={accept}\n disabled={saving || selected.length === 0}\n className=\"text-xs px-2 py-0.5 rounded-sm bg-accent/20 text-accent hover:bg-accent/30 disabled:opacity-50\"\n >\n {saving ? \"Creating…\" : `Accept (${selected.length})`}\n </button>\n <button onClick={() => onResolve(\"rejected\", [], [])} disabled={saving} className=\"text-xs px-2 py-0.5 rounded-sm text-muted hover:text-txt\">\n Reject\n </button>\n </>\n ) : proposal.status === \"accepted\" ? (\n <span className=\"text-xs text-teal-400\">\n ✓ Created{\" \"}\n {(proposal.created ?? []).map((c, i) => (\n <span key={c.id}>\n {i > 0 && \", \"}\n <button onClick={() => openDoc(c.file)} className=\"font-mono hover:underline\">{c.id}</button>\n </span>\n ))}\n </span>\n ) : (\n <span className=\"text-xs text-muted\">Rejected</span>\n )}\n </div>\n </div>\n )\n}\n\nfunction PlanRow({ rowKey, title, meta, body, indent, checked, disabled, onToggle, open, onOpen }: {\n rowKey: string\n title: string\n meta: string\n body?: string\n indent: boolean\n checked: boolean\n disabled: boolean\n onToggle: () => void\n open: boolean\n onOpen: () => void\n}) {\n return (\n <li data-plan-row={rowKey} className=\"border-b border-border last:border-b-0\">\n <div className={cn(\"flex items-start gap-2 px-2 py-1.5\", indent && \"pl-6\")}>\n <input\n type=\"checkbox\"\n aria-label={`Include ${title}`}\n checked={checked}\n disabled={disabled}\n onChange={onToggle}\n className=\"mt-0.5 accent-accent\"\n />\n <button onClick={onOpen} className=\"flex-1 min-w-0 text-left\">\n <div className={cn(\"text-xs text-txt\", !checked && \"line-through text-muted\")}>\n <span className=\"font-mono text-muted mr-1\">{rowKey}</span>{title}\n </div>\n {meta && <div className=\"text-[10px] font-mono text-muted truncate\">{meta}</div>}\n </button>\n </div>\n {open && body && (\n <div className=\"px-3 pb-2 border-t border-border bg-surface2/40\">\n <MarkdownRenderer content={body} className=\"text-xs\" />\n </div>\n )}\n </li>\n )\n}\n","export type DiffLine = { op: \" \" | \"+\" | \"-\"; text: string }\n\n// ponytail: O(n·m) LCS on the changed middle; fine for docs, swap for Myers if huge files show up.\nexport function lineDiff(before: string, after: string): DiffLine[] {\n const a = before.split(\"\\n\")\n const b = after.split(\"\\n\")\n let start = 0\n while (start < a.length && start < b.length && a[start] === b[start]) start++\n let endA = a.length\n let endB = b.length\n while (endA > start && endB > start && a[endA - 1] === b[endB - 1]) { endA--; endB-- }\n\n const x = a.slice(start, endA)\n const y = b.slice(start, endB)\n // lcs[i][j] = LCS length of x[i..] and y[j..]\n const lcs = Array.from({ length: x.length + 1 }, () => new Array<number>(y.length + 1).fill(0))\n for (let i = x.length - 1; i >= 0; i--) {\n for (let j = y.length - 1; j >= 0; j--) {\n lcs[i][j] = x[i] === y[j] ? lcs[i + 1][j + 1] + 1 : Math.max(lcs[i + 1][j], lcs[i][j + 1])\n }\n }\n\n const middle: DiffLine[] = []\n let i = 0\n let j = 0\n while (i < x.length || j < y.length) {\n if (i < x.length && j < y.length && x[i] === y[j]) { middle.push({ op: \" \", text: x[i] }); i++; j++ }\n else if (i < x.length && (j === y.length || lcs[i + 1][j] >= lcs[i][j + 1])) { middle.push({ op: \"-\", text: x[i] }); i++ }\n else { middle.push({ op: \"+\", text: y[j] }); j++ }\n }\n\n return [\n ...a.slice(0, start).map((text) => ({ op: \" \" as const, text })),\n ...middle,\n ...a.slice(endA).map((text) => ({ op: \" \" as const, text })),\n ]\n}\n\nexport type TextEdit = { old_string: string; new_string: string }\n\n// Same contract as Claude Code's Edit tool: each old_string must match exactly once, applied in order.\n// An empty old_string is only allowed on an empty/new file (write the first content).\nexport function applyEdits(text: string, edits: TextEdit[]): { content: string } | { error: string } {\n let content = text\n for (const [i, e] of edits.entries()) {\n if (typeof e?.old_string !== \"string\" || typeof e?.new_string !== \"string\") {\n return { error: `Edit ${i + 1}: old_string and new_string must be strings` }\n }\n if (e.old_string === \"\") {\n if (content !== \"\") return { error: `Edit ${i + 1}: empty old_string is only allowed for a new, empty doc` }\n content = e.new_string\n continue\n }\n const at = content.indexOf(e.old_string)\n if (at === -1) return { error: `Edit ${i + 1}: old_string not found in the doc` }\n if (content.indexOf(e.old_string, at + 1) !== -1) {\n return { error: `Edit ${i + 1}: old_string matches more than once; include more surrounding text` }\n }\n content = content.slice(0, at) + e.new_string + content.slice(at + e.old_string.length)\n }\n return { content }\n}\n","import createLucideIcon from '../createLucideIcon';\nimport type { LucideIconNode, LucideIconData } from '../types';\n\nexport const __iconData: LucideIconData = {\n name: 'square',\n size: 24,\n node: [['rect', { width: '18', height: '18', x: '3', y: '3', rx: '2', key: 'afitv7' }]],\n};\n\n/**\n * @deprecated Access `__iconData` instead.\n */\nexport const __iconNode: LucideIconNode[] = __iconData.node;\n\n/**\n * @component @name Square\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/square\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 Square = createLucideIcon(__iconData);\n\nexport default Square;\n","import createLucideIcon from '../createLucideIcon';\nimport type { LucideIconNode, LucideIconData } from '../types';\n\nexport const __iconData: LucideIconData = {\n name: 'maximize-2',\n size: 24,\n node: [\n ['path', { d: 'M15 3h6v6', key: '1q9fwt' }],\n ['path', { d: 'm21 3-7 7', key: '1l2asr' }],\n ['path', { d: 'm3 21 7-7', key: 'tjx5ai' }],\n ['path', { d: 'M9 21H3v-6', key: 'wtvkvv' }],\n ],\n};\n\n/**\n * @deprecated Access `__iconData` instead.\n */\nexport const __iconNode: LucideIconNode[] = __iconData.node;\n\n/**\n * @component @name Maximize2\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/maximize-2\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 Maximize2 = createLucideIcon(__iconData);\n\nexport default Maximize2;\n","import createLucideIcon from '../createLucideIcon';\nimport type { LucideIconNode, LucideIconData } from '../types';\n\nexport const __iconData: LucideIconData = {\n name: 'arrow-up-right',\n size: 24,\n node: [\n ['path', { d: 'M7 7h10v10', key: '1tivn9' }],\n ['path', { d: 'M7 17 17 7', key: '1vkiza' }],\n ],\n};\n\n/**\n * @deprecated Access `__iconData` instead.\n */\nexport const __iconNode: LucideIconNode[] = __iconData.node;\n\n/**\n * @component @name ArrowUpRight\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/arrow-up-right\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 ArrowUpRight = createLucideIcon(__iconData);\n\nexport default ArrowUpRight;\n"],"names":["__iconData","node"],"mappings":"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","ignoreList":[4,5,6]}
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/chat/ChatView.tsx","../../../../src/components/chat/ProposalCard.tsx","../../../../src/components/chat/PlanCard.tsx","../../../../node_modules/.pnpm/lucide-react%401.48.0_react%4019.3.0/node_modules/lucide-react/src/icons/square.ts","../../../../node_modules/.pnpm/lucide-react%401.48.0_react%4019.3.0/node_modules/lucide-react/src/icons/arrow-up-right.ts","../../../../node_modules/.pnpm/lucide-react%401.48.0_react%4019.3.0/node_modules/lucide-react/src/icons/maximize-2.ts"],"sourcesContent":["\"use client\"\n\nimport { useEffect, useRef, useState } from \"react\"\nimport { usePathname, useRouter } from \"next/navigation\"\nimport { ArrowUp, ArrowUpRight, Maximize2, Square, Trash2 } from \"lucide-react\"\nimport { useApp } from \"@/context/AppContext\"\nimport { useChats, type ChatMessage, type ChatTab } from \"@/context/ChatContext\"\nimport { MarkdownRenderer } from \"@/components/docs/MarkdownRenderer\"\nimport { cn } from \"@/lib/utils\"\nimport { STATUS_LABEL, chatStatus, suggestions } from \"@/lib/chats\"\nimport { ProposalCard, type ProposalStatus } from \"./ProposalCard\"\nimport { PlanCard, type PlanCreated, type PlanProposal, type PlanStatus } from \"./PlanCard\"\nimport { QuestionCard, type QuestionSet } from \"./QuestionCard\"\nimport { AttachLabel, StatusMarker, attachHref } from \"./StatusMarker\"\n\n/**\n * One conversation. The chat modal and the /chat page both render this, so they are the same chat UI.\n * Chats shown here before stay mounted (hidden) so card state, e.g. unchecked plan rows, survives switching.\n */\nexport function ChatView({ chatId, variant, onExpand, onNavigate }: {\n chatId: string\n variant: \"modal\" | \"page\"\n /** Modal: open this chat as a page */\n onExpand?: () => void\n /** Called before following a link out of the chat (the modal closes itself) */\n onNavigate?: () => void\n}) {\n const { chats, stop, remove, notice, dismissNotice } = useChats()\n const router = useRouter()\n const chat = chats.find((c) => c.id === chatId)\n // Adjust-state-during-render: remember every chat this view has shown\n const [mounted, setMounted] = useState<string[]>([chatId])\n if (!mounted.includes(chatId)) setMounted([...mounted, chatId])\n\n if (!chat) {\n return <div className=\"grid h-full place-items-center p-8 text-sm text-muted\">This chat was closed.</div>\n }\n\n const status = chatStatus(chat)\n const go = (href: string) => { onNavigate?.(); router.push(href) }\n\n return (\n <section aria-label={`Chat: ${chat.title}`} className=\"flex h-full min-h-0 flex-col\">\n <header className={cn(\"flex h-14 shrink-0 items-center gap-3 border-b border-border px-5\", variant === \"modal\" && \"pr-14\")}>\n <StatusMarker status={status} showIdle />\n <div className=\"min-w-0 flex-1\">\n <h2 className=\"truncate text-sm font-medium text-txt\">{chat.title}</h2>\n <p className=\"font-mono text-[10px] text-muted\">{STATUS_LABEL[status]}</p>\n </div>\n {chat.attach && (\n <button\n type=\"button\"\n onClick={() => chat.attach && go(attachHref(chat.attach))}\n title={`Open ${chat.attach.id} in the ${chat.attach.kind === \"epic\" ? \"roadmap\" : \"board\"}`}\n className=\"rounded-full border border-border px-2 py-1 text-muted transition-colors duration-(--duration-fast) hover:border-accent/50 hover:text-accent\"\n >\n <AttachLabel attach={chat.attach} />\n </button>\n )}\n {chat.busy && (\n <button type=\"button\" onClick={() => stop(chat.id)} title=\"Stop the agent\" className={ICON_BTN}>\n <Square className=\"size-3.5 fill-current\" />\n <span className=\"sr-only\">Stop</span>\n </button>\n )}\n {variant === \"modal\" && onExpand && (\n <button type=\"button\" onClick={onExpand} title=\"Open as page\" className={ICON_BTN}>\n <Maximize2 className=\"size-3.5\" />\n <span className=\"sr-only\">Open as page</span>\n </button>\n )}\n {variant === \"page\" && (\n <button type=\"button\" onClick={() => remove(chat.id)} aria-label={`Delete ${chat.title}`} title=\"Delete chat\" className={cn(ICON_BTN, \"hover:text-danger\")}>\n <Trash2 className=\"size-3.5\" />\n </button>\n )}\n </header>\n\n {mounted.map((id) => {\n const c = chats.find((x) => x.id === id)\n return c ? <Conversation key={id} chat={c} hidden={id !== chatId} wide={variant === \"page\"} /> : null\n })}\n\n {notice && (\n <div role=\"status\" className=\"mx-5 mb-2 flex items-start gap-2 rounded-md border border-amber/30 bg-amber/10 px-3 py-2 text-xs text-amber animate-fade-in\">\n <span className=\"flex-1\">{notice}</span>\n <button onClick={dismissNotice} aria-label=\"Dismiss\" className=\"leading-none text-muted hover:text-txt\">×</button>\n </div>\n )}\n <Composer key={chat.id} chat={chat} wide={variant === \"page\"} />\n </section>\n )\n}\n\nconst ICON_BTN = \"grid size-8 shrink-0 place-items-center rounded-md text-muted transition-colors duration-(--duration-fast) hover:bg-surface2 hover:text-txt\"\n\nfunction Conversation({ chat, hidden, wide }: { chat: ChatTab; hidden: boolean; wide: boolean }) {\n const { send, resolveProposal, resolvePlan, answerQuestions } = useChats()\n const scrollRef = useRef<HTMLDivElement>(null)\n const messages = chat.messages\n\n // Follow the stream while visible\n useEffect(() => {\n const el = scrollRef.current\n if (el && !hidden) el.scrollTop = el.scrollHeight\n }, [messages, hidden])\n\n return (\n <div ref={scrollRef} hidden={hidden} role=\"log\" aria-live=\"polite\" className=\"min-h-0 flex-1 overflow-y-auto\">\n <div className={cn(\"mx-auto flex flex-col gap-5 px-5 py-6 text-sm\", wide ? \"max-w-3xl\" : \"max-w-none\")}>\n {messages.length === 0 && <EmptyChat chat={chat} onPick={(s) => send(chat.id, s)} />}\n {messages.map((m, i) => (\n <Message\n key={i}\n m={m}\n thinking={chat.busy && i === messages.length - 1}\n busy={chat.busy}\n onProposal={(id, path, status) => resolveProposal(chat.id, id, path, status)}\n onPlan={(p, status, created, unchecked) => resolvePlan(chat.id, p, status, created, unchecked)}\n onAnswers={(set, answers) => answerQuestions(chat.id, set, answers)}\n />\n ))}\n </div>\n </div>\n )\n}\n\nfunction Message({ m, thinking, busy, onProposal, onPlan, onAnswers }: {\n m: ChatMessage\n thinking: boolean\n busy: boolean\n onProposal: (id: string, path: string, status: ProposalStatus) => void\n onPlan: (p: PlanProposal, status: PlanStatus, created: PlanCreated[], unchecked: string[]) => void\n onAnswers: (set: QuestionSet, answers: string[]) => void\n}) {\n if (m.role === \"user\") {\n return (\n <div className=\"flex justify-end animate-fade-in\">\n <div className=\"max-w-[85%] whitespace-pre-wrap rounded-2xl rounded-br-md border border-accent/20 bg-accent/10 px-3.5 py-2 text-txt\">\n {m.text}\n </div>\n </div>\n )\n }\n return (\n <div className=\"flex gap-3 animate-fade-in\">\n <div className=\"mt-0.5 grid size-6 shrink-0 place-items-center rounded-md bg-linear-to-br from-accent to-teal text-[10px] text-white\" aria-hidden>⬡</div>\n <div className=\"min-w-0 flex-1 space-y-2\">\n {m.tools.length > 0 && (\n <div className=\"flex flex-wrap gap-1\">\n {m.tools.map((t, j) => (\n <span key={j} className=\"rounded-sm border border-border bg-surface2 px-1.5 py-0.5 font-mono text-[10px] text-muted animate-slide-in\">{t}</span>\n ))}\n </div>\n )}\n {m.proposals.map((p) => (\n <ProposalCard key={p.id} proposal={p} onResolve={(status) => onProposal(p.id, p.path, status)} />\n ))}\n {m.plans.map((p) => (\n <PlanCard key={p.id} proposal={p} onResolve={(status, created, unchecked) => onPlan(p, status, created, unchecked)} />\n ))}\n {m.questions.map((q) => (\n <QuestionCard key={q.id} set={q} disabled={busy} onSubmit={(answers) => onAnswers(q, answers)} />\n ))}\n {m.text && <MarkdownRenderer content={m.text} className=\"text-sm\" />}\n {thinking && !m.text && !m.error && <Thinking />}\n {m.error && <p className=\"whitespace-pre-wrap text-xs text-danger\">{m.error}</p>}\n </div>\n </div>\n )\n}\n\nfunction Thinking() {\n return (\n <span className=\"inline-flex items-center gap-2 text-xs text-muted\">\n <span className=\"inline-flex gap-1\" aria-hidden>\n {[0, 150, 300].map((d) => (\n <span key={d} className=\"size-1.5 rounded-full bg-accent animate-pulse-dot\" style={{ animationDelay: `${d}ms` }} />\n ))}\n </span>\n Thinking…\n </span>\n )\n}\n\nfunction EmptyChat({ chat, onPick }: { chat: ChatTab; onPick: (s: string) => void }) {\n const a = chat.attach\n return (\n <div className=\"flex flex-col items-start gap-4 py-6 animate-fade-in\">\n <div className=\"grid size-9 place-items-center rounded-lg bg-linear-to-br from-accent to-teal text-sm text-white\" aria-hidden>⬡</div>\n <div>\n <h3 className=\"text-lg font-semibold text-txt\">{a ? `Ask about ${a.id}` : \"Ask the agent\"}</h3>\n <p className=\"mt-1 max-w-md text-sm text-muted\">\n {a\n ? `The agent reads ${a.kind === \"epic\" ? \"the epic and its tasks\" : \"the task\"} first. It proposes changes; nothing is written until you accept.`\n : \"It reads your docs, tasks and roadmap and proposes edits you review. Runs on your local Claude Code login.\"}\n </p>\n </div>\n <div className=\"flex flex-col gap-1.5\">\n {suggestions(a).map((s, i) => (\n <button\n key={s}\n type=\"button\"\n onClick={() => onPick(s)}\n style={{ animationDelay: `${60 * i}ms` }}\n className=\"group flex items-center gap-2 rounded-lg border border-border px-3 py-2 text-left text-sm text-txt/90 transition-colors duration-(--duration-fast) animate-slide-in [animation-fill-mode:both] hover:border-accent/50 hover:bg-accent/5\"\n >\n <ArrowUpRight className=\"size-3.5 text-muted transition-transform duration-(--duration-fast) group-hover:-translate-y-px group-hover:translate-x-px group-hover:text-accent\" />\n {s}\n </button>\n ))}\n </div>\n </div>\n )\n}\n\nfunction Composer({ chat, wide }: { chat: ChatTab; wide: boolean }) {\n const { send, stop, queue } = useChats()\n const { selectedDoc } = useApp()\n const pathname = usePathname()\n const [input, setInput] = useState(\"\")\n const docPath = pathname === \"/docs\" ? selectedDoc?.path : undefined\n const last = chat.messages[chat.messages.length - 1]\n const questionsPending = !!last?.questions.some((q) => !q.answers)\n const rows = Math.min(8, Math.max(1, input.split(\"\\n\").length))\n\n function submit() {\n if (!input.trim() || chat.busy) return\n send(chat.id, input)\n setInput(\"\")\n }\n\n return (\n <div className=\"shrink-0 px-5 pb-4 pt-1\">\n <div className={cn(\"mx-auto rounded-xl border border-border bg-surface2 transition-[border-color,box-shadow] duration-(--duration-base) focus-within:border-accent/60 focus-within:shadow-[0_0_0_3px_rgb(var(--rgb-accent)/0.12)]\", wide ? \"max-w-3xl\" : \"max-w-none\")}>\n <textarea\n // Not for a queued chat, so a second `c` walks the queue instead of typing into the composer\n autoFocus={!queue.some((q) => q.id === chat.id)}\n value={input}\n onChange={(e) => setInput(e.target.value)}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" && !e.shiftKey && !e.nativeEvent.isComposing) {\n e.preventDefault()\n submit()\n }\n }}\n rows={rows}\n placeholder={chat.busy ? \"Agent is working…\" : questionsPending ? \"Answer the questions above…\" : \"Ask the agent… (Enter to send)\"}\n className=\"block w-full resize-none bg-transparent px-3.5 pt-3 text-sm text-txt placeholder:text-muted focus:outline-hidden\"\n />\n <div className=\"flex items-center gap-2 px-2.5 pb-2 pt-1\">\n <span className=\"min-w-0 flex-1 truncate font-mono text-[10px] text-muted\">\n {docPath ? `@ ${docPath}` : \"Shift+Enter for a new line\"}\n </span>\n {chat.busy ? (\n <button type=\"button\" onClick={() => stop(chat.id)} title=\"Stop the agent\" className=\"grid size-7 place-items-center rounded-full border border-border text-muted transition-colors hover:text-txt\">\n <Square className=\"size-3 fill-current\" />\n <span className=\"sr-only\">Stop</span>\n </button>\n ) : (\n <button\n type=\"button\"\n onClick={submit}\n disabled={!input.trim()}\n title=\"Send (Enter)\"\n className=\"grid size-7 place-items-center rounded-full bg-accent text-accent-fg transition-[opacity,transform] duration-(--duration-fast) enabled:hover:scale-105 disabled:opacity-30\"\n >\n <ArrowUp className=\"size-3.5\" />\n <span className=\"sr-only\">Send</span>\n </button>\n )}\n </div>\n </div>\n </div>\n )\n}\n","\"use client\"\n\nimport { useEffect, useMemo, useState } from \"react\"\nimport { useApp } from \"@/context/AppContext\"\nimport { applyEdits, lineDiff, visibleHunks, type TextEdit } from \"@/lib/diff\"\nimport { cn } from \"@/lib/utils\"\n\nexport type ProposalStatus = \"pending\" | \"accepted\" | \"rejected\"\n\nexport interface Proposal {\n id: string\n path: string\n edits: TextEdit[]\n summary?: string\n status: ProposalStatus\n}\n\nexport function ProposalCard({ proposal, onResolve }: { proposal: Proposal; onResolve: (status: ProposalStatus) => void }) {\n const { rootParam, openDoc } = useApp()\n const [before, setBefore] = useState<string | null>(null)\n const [error, setError] = useState<string | null>(null)\n const [saving, setSaving] = useState(false)\n\n useEffect(() => {\n fetch(`/api/docs${rootParam}&read=${encodeURIComponent(proposal.path)}`)\n .then((r) => (r.ok ? r.json() : null))\n // readDoc falls back to fuzzy matching; a different path means this doc doesn't exist yet\n .then((d) => setBefore(d?.path === proposal.path.replace(/^\\.\\//, \"\") && typeof d.content === \"string\" ? d.content : \"\"))\n .catch(() => setBefore(\"\"))\n }, [proposal.path, rootParam])\n\n const applied = useMemo(() => (before === null ? null : applyEdits(before, proposal.edits)), [before, proposal.edits])\n const stale = applied !== null && \"error\" in applied ? applied.error : null\n const hunks = useMemo(\n () => (before === null || !applied || \"error\" in applied ? [] : visibleHunks(lineDiff(before, applied.content))),\n [before, applied],\n )\n const added = hunks.filter((h) => typeof h !== \"number\" && h.op === \"+\").length\n const removed = hunks.filter((h) => typeof h !== \"number\" && h.op === \"-\").length\n\n async function accept() {\n setSaving(true)\n setError(null)\n try {\n // Server re-applies the edits to the file as it is now, so unrelated changes since the proposal survive\n const res = await fetch(`/api/docs${rootParam}`, {\n method: \"PUT\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({ path: proposal.path, edits: proposal.edits, actor: \"ai\" }),\n })\n if (!res.ok) throw new Error((await res.json().catch(() => null))?.error ?? \"Save failed\")\n onResolve(\"accepted\")\n } catch (e) {\n setError((e as Error).message)\n } finally {\n setSaving(false)\n }\n }\n\n return (\n <div className=\"my-2 rounded-md border border-border overflow-hidden\">\n <div className=\"flex items-center gap-2 px-2 py-1.5 bg-surface2 border-b border-border\">\n <button onClick={() => openDoc(proposal.path)} className=\"text-xs font-mono text-accent truncate hover:underline\" title={proposal.path}>\n {proposal.path}\n </button>\n <span className=\"text-[10px] font-mono text-teal-400\">+{added}</span>\n <span className=\"text-[10px] font-mono text-red-400\">-{removed}</span>\n </div>\n {proposal.summary && <div className=\"px-2 py-1 text-xs text-muted border-b border-border\">{proposal.summary}</div>}\n\n <div className=\"max-h-72 overflow-auto text-[11px] font-mono leading-5\">\n {before === null && <div className=\"px-2 py-1 text-muted\">Loading diff…</div>}\n {stale && <div className=\"px-2 py-1 text-red-400\">Doc changed since this proposal ({stale}). Ask the agent to propose again.</div>}\n {before !== null && !stale && hunks.length === 0 && <div className=\"px-2 py-1 text-muted\">No changes</div>}\n {hunks.map((h, i) =>\n typeof h === \"number\" ? (\n <div key={i} className=\"px-2 text-muted bg-surface2/50\">⋯ {h} unchanged line{h > 1 ? \"s\" : \"\"}</div>\n ) : (\n <div\n key={i}\n className={cn(\n \"px-2 whitespace-pre-wrap break-words\",\n h.op === \"+\" && \"bg-teal-500/10 text-teal-300\",\n h.op === \"-\" && \"bg-red-500/10 text-red-300 line-through decoration-red-400/40\",\n )}\n >\n {h.op}{\" \"}{h.text || \" \"}\n </div>\n ),\n )}\n </div>\n\n <div className=\"flex items-center gap-2 px-2 py-1.5 border-t border-border\">\n {proposal.status === \"pending\" ? (\n <>\n <button\n onClick={accept}\n disabled={saving || before === null || !!stale}\n className=\"text-xs px-2 py-0.5 rounded-sm bg-accent/20 text-accent hover:bg-accent/30 disabled:opacity-50\"\n >\n {saving ? \"Applying…\" : \"Accept\"}\n </button>\n <button onClick={() => onResolve(\"rejected\")} disabled={saving} className=\"text-xs px-2 py-0.5 rounded-sm text-muted hover:text-txt\">\n Reject\n </button>\n </>\n ) : (\n <span className={cn(\"text-xs\", proposal.status === \"accepted\" ? \"text-teal-400\" : \"text-muted\")}>\n {proposal.status === \"accepted\" ? \"✓ Applied\" : \"Rejected\"}\n </span>\n )}\n {error && <span className=\"text-xs text-red-400 truncate\">{error}</span>}\n </div>\n </div>\n )\n}\n","\"use client\"\n\nimport { useEffect, useState } from \"react\"\nimport { useApp } from \"@/context/AppContext\"\nimport { MarkdownRenderer } from \"@/components/docs/MarkdownRenderer\"\nimport { cn } from \"@/lib/utils\"\nimport type { Plan, PlanEpic, PlanTask } from \"@/lib/plan\"\n\nexport type PlanStatus = \"pending\" | \"accepted\" | \"rejected\"\nexport interface PlanCreated { key: string; id: string; file: string }\n\nexport interface PlanProposal {\n id: string\n plan: Plan\n status: PlanStatus\n created?: PlanCreated[]\n}\n\nexport function PlanCard({ proposal, onResolve }: {\n proposal: PlanProposal\n onResolve: (status: PlanStatus, created: PlanCreated[], unchecked: string[]) => void\n}) {\n const { rootParam, openDoc } = useApp()\n const plan = proposal.plan\n const tasks: PlanTask[] = plan.kind === \"breakdown\" ? plan.tasks : []\n const horizons = plan.kind === \"roadmap\" ? plan.horizons ?? [] : []\n const epics: PlanEpic[] = plan.kind === \"roadmap\" ? plan.epics ?? [] : []\n const epicId = plan.kind === \"breakdown\" ? (plan.epic ?? \"\").trim().toUpperCase() : \"\"\n const newEpic = plan.kind === \"breakdown\" ? plan.newEpic : undefined\n const [titles, setTitles] = useState<Map<string, string>>(new Map())\n const [unchecked, setUnchecked] = useState<Set<string>>(new Set())\n const [open, setOpen] = useState<string | null>(null)\n const [error, setError] = useState<string | null>(null)\n const [saving, setSaving] = useState(false)\n\n useEffect(() => {\n fetch(`/api/roadmap${rootParam}`)\n .then((r) => (r.ok ? r.json() : null))\n .then((d) => setTitles(new Map((d?.items ?? []).map((i: { id: string; title: string }) => [i.id, i.title]))))\n .catch(() => setTitles(new Map()))\n }, [rootParam])\n\n const keys = plan.kind === \"breakdown\" ? tasks.map((t) => t.key) : [...horizons, ...epics].map((x) => x.key)\n const selected = keys.filter((k) => !unchecked.has(k))\n const pending = proposal.status === \"pending\"\n\n // Roadmap: a horizon toggles its epics; checking an epic re-checks its horizon (never an epic without its horizon).\n const epicsOf = (h: string) => epics.filter((e) => e.parent.trim() === h).map((e) => e.key)\n const horizonKeys = new Set(horizons.map((h) => h.key))\n function toggle(key: string) {\n setError(null)\n setUnchecked((prev) => {\n const next = new Set(prev)\n const on = next.has(key)\n const group = horizonKeys.has(key) ? [key, ...epicsOf(key)] : [key]\n for (const k of group) if (on) next.delete(k); else next.add(k)\n const parent = epics.find((e) => e.key === key)?.parent.trim()\n if (on && parent && horizonKeys.has(parent)) next.delete(parent)\n return next\n })\n }\n\n const row = (key: string, title: string, meta: string, body: string | undefined, indent = false) => (\n <PlanRow\n key={key} rowKey={key} title={title} meta={meta} body={body} indent={indent}\n checked={!unchecked.has(key)} disabled={!pending || saving} onToggle={() => toggle(key)}\n open={open === key} onOpen={() => setOpen(open === key ? null : key)}\n />\n )\n const outcome = (body: string) => body.trim().split(\"\\n\")[0] ?? \"\"\n // Existing horizons that the plan adds epics to, in first-use order.\n const existingParents = [...new Set(epics.map((e) => e.parent.trim()).filter((p) => !horizonKeys.has(p)))]\n\n async function accept() {\n setSaving(true)\n setError(null)\n try {\n const res = await fetch(`/api/plan/apply${rootParam}`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({ plan, selected }),\n })\n const data = await res.json().catch(() => null)\n if (!res.ok) throw new Error(data?.error ?? `Apply failed (${res.status})`)\n onResolve(\"accepted\", data?.created ?? [], [...unchecked])\n } catch (e) {\n setError((e as Error).message)\n } finally {\n setSaving(false)\n }\n }\n\n return (\n <div className=\"my-2 rounded-md border border-border overflow-hidden\">\n <div className=\"flex items-center gap-2 px-2 py-1.5 bg-surface2 border-b border-border\">\n <span className=\"text-[10px] font-mono uppercase tracking-widest text-muted\">Plan</span>\n {plan.kind === \"breakdown\" ? (\n <>\n {epicId ? (\n <>\n <span className=\"text-xs font-mono text-accent\">{epicId}</span>\n <span className=\"text-xs text-txt truncate\">{titles.get(epicId) ?? \"\"}</span>\n </>\n ) : newEpic ? (\n <span className=\"text-xs text-txt truncate\">\n New epic: {newEpic.title}\n <span className=\"text-muted\"> (under {newEpic.parent.trim().toUpperCase()} {titles.get(newEpic.parent.trim().toUpperCase()) ?? \"\"})</span>\n </span>\n ) : (\n <span className=\"text-xs text-muted\">No epic</span>\n )}\n <span className=\"ml-auto text-[10px] font-mono text-muted\">{tasks.length} tasks</span>\n </>\n ) : (\n <>\n <span className=\"text-xs text-txt\">Roadmap</span>\n <span className=\"ml-auto text-[10px] font-mono text-muted\">\n {horizons.length ? `${horizons.length} horizons · ` : \"\"}{epics.length} epics\n </span>\n </>\n )}\n </div>\n\n <ul className=\"max-h-80 overflow-auto\">\n {tasks.map((t) => row(\n t.key, t.title,\n [t.size, t.dependsOn?.length ? `after ${t.dependsOn.join(\", \")}` : null, t.due ? `due ${t.due}` : null].filter(Boolean).join(\" · \"),\n t.body,\n ))}\n {horizons.map((h) => [\n row(h.key, h.title, \"new horizon\", h.body),\n ...epics.filter((e) => e.parent.trim() === h.key).map((e) => row(e.key, e.title, outcome(e.body), e.body, true)),\n ])}\n {existingParents.map((p) => [\n <li key={`parent-${p}`} className=\"px-2 py-1.5 border-b border-border text-xs text-muted\">\n <span className=\"font-mono text-accent mr-1\">{p.toUpperCase()}</span>{titles.get(p.toUpperCase()) ?? \"\"}\n </li>,\n ...epics.filter((e) => e.parent.trim() === p).map((e) => row(e.key, e.title, outcome(e.body), e.body, true)),\n ])}\n </ul>\n\n {error && <div className=\"px-2 py-1 text-xs text-red-400 whitespace-pre-wrap border-t border-border\">{error}</div>}\n\n <div className=\"flex items-center gap-2 px-2 py-1.5 border-t border-border\">\n {pending ? (\n <>\n <button\n onClick={accept}\n disabled={saving || selected.length === 0}\n className=\"text-xs px-2 py-0.5 rounded-sm bg-accent/20 text-accent hover:bg-accent/30 disabled:opacity-50\"\n >\n {saving ? \"Creating…\" : `Accept (${selected.length})`}\n </button>\n <button onClick={() => onResolve(\"rejected\", [], [])} disabled={saving} className=\"text-xs px-2 py-0.5 rounded-sm text-muted hover:text-txt\">\n Reject\n </button>\n </>\n ) : proposal.status === \"accepted\" ? (\n <span className=\"text-xs text-teal-400\">\n ✓ Created{\" \"}\n {(proposal.created ?? []).map((c, i) => (\n <span key={c.id}>\n {i > 0 && \", \"}\n <button onClick={() => openDoc(c.file)} className=\"font-mono hover:underline\">{c.id}</button>\n </span>\n ))}\n </span>\n ) : (\n <span className=\"text-xs text-muted\">Rejected</span>\n )}\n </div>\n </div>\n )\n}\n\nfunction PlanRow({ rowKey, title, meta, body, indent, checked, disabled, onToggle, open, onOpen }: {\n rowKey: string\n title: string\n meta: string\n body?: string\n indent: boolean\n checked: boolean\n disabled: boolean\n onToggle: () => void\n open: boolean\n onOpen: () => void\n}) {\n return (\n <li data-plan-row={rowKey} className=\"border-b border-border last:border-b-0\">\n <div className={cn(\"flex items-start gap-2 px-2 py-1.5\", indent && \"pl-6\")}>\n <input\n type=\"checkbox\"\n aria-label={`Include ${title}`}\n checked={checked}\n disabled={disabled}\n onChange={onToggle}\n className=\"mt-0.5 accent-accent\"\n />\n <button onClick={onOpen} className=\"flex-1 min-w-0 text-left\">\n <div className={cn(\"text-xs text-txt\", !checked && \"line-through text-muted\")}>\n <span className=\"font-mono text-muted mr-1\">{rowKey}</span>{title}\n </div>\n {meta && <div className=\"text-[10px] font-mono text-muted truncate\">{meta}</div>}\n </button>\n </div>\n {open && body && (\n <div className=\"px-3 pb-2 border-t border-border bg-surface2/40\">\n <MarkdownRenderer content={body} className=\"text-xs\" />\n </div>\n )}\n </li>\n )\n}\n","import createLucideIcon from '../createLucideIcon';\nimport type { LucideIconNode, LucideIconData } from '../types';\n\nexport const __iconData: LucideIconData = {\n name: 'square',\n size: 24,\n node: [['rect', { width: '18', height: '18', x: '3', y: '3', rx: '2', key: 'afitv7' }]],\n};\n\n/**\n * @deprecated Access `__iconData` instead.\n */\nexport const __iconNode: LucideIconNode[] = __iconData.node;\n\n/**\n * @component @name Square\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/square\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 Square = createLucideIcon(__iconData);\n\nexport default Square;\n","import createLucideIcon from '../createLucideIcon';\nimport type { LucideIconNode, LucideIconData } from '../types';\n\nexport const __iconData: LucideIconData = {\n name: 'arrow-up-right',\n size: 24,\n node: [\n ['path', { d: 'M7 7h10v10', key: '1tivn9' }],\n ['path', { d: 'M7 17 17 7', key: '1vkiza' }],\n ],\n};\n\n/**\n * @deprecated Access `__iconData` instead.\n */\nexport const __iconNode: LucideIconNode[] = __iconData.node;\n\n/**\n * @component @name ArrowUpRight\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/arrow-up-right\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 ArrowUpRight = createLucideIcon(__iconData);\n\nexport default ArrowUpRight;\n","import createLucideIcon from '../createLucideIcon';\nimport type { LucideIconNode, LucideIconData } from '../types';\n\nexport const __iconData: LucideIconData = {\n name: 'maximize-2',\n size: 24,\n node: [\n ['path', { d: 'M15 3h6v6', key: '1q9fwt' }],\n ['path', { d: 'm21 3-7 7', key: '1l2asr' }],\n ['path', { d: 'm3 21 7-7', key: 'tjx5ai' }],\n ['path', { d: 'M9 21H3v-6', key: 'wtvkvv' }],\n ],\n};\n\n/**\n * @deprecated Access `__iconData` instead.\n */\nexport const __iconNode: LucideIconNode[] = __iconData.node;\n\n/**\n * @component @name Maximize2\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/maximize-2\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 Maximize2 = createLucideIcon(__iconData);\n\nexport default Maximize2;\n"],"names":[],"mappings":"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","ignoreList":[3,4,5]}
|
|
@@ -7,9 +7,9 @@ globalThis.__BUILD_MANIFEST = {
|
|
|
7
7
|
"static/chunks/0cz1d0mv5g_q7.js"
|
|
8
8
|
],
|
|
9
9
|
"lowPriorityFiles": [
|
|
10
|
-
"static/
|
|
11
|
-
"static/
|
|
12
|
-
"static/
|
|
10
|
+
"static/P1gxTEpKVh-OOtIXC432U/_buildManifest.js",
|
|
11
|
+
"static/P1gxTEpKVh-OOtIXC432U/_ssgManifest.js",
|
|
12
|
+
"static/P1gxTEpKVh-OOtIXC432U/_clientMiddlewareManifest.js"
|
|
13
13
|
],
|
|
14
14
|
"rootMainFiles": [
|
|
15
15
|
"static/chunks/27culnr-k4v7j.js",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><html lang="en" class="dark geist_9c6cb61b-module__8NX9hq__variable geist_mono_d6617093-module__z61v7q__variable inter_ce44cde5-module__EWa6Cq__variable ibm_plex_sans_abbe3f68-module__2aQ_Fa__variable atkinson_hyperlegible_86f3eeac-module__H04cSq__variable dm_sans_4dbccdff-module__kMSx3G__variable jetbrains_mono_d9365dea-module__eFWXIa__variable ibm_plex_mono_a350e774-module__yi3qSG__variable dm_mono_c5369204-module__U0WqgG__variable" data-font-sans="geist" data-font-mono="geist-mono"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/chunks/02i5hsdat1nuq.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/chunks/
|
|
1
|
+
<!DOCTYPE html><html lang="en" class="dark geist_9c6cb61b-module__8NX9hq__variable geist_mono_d6617093-module__z61v7q__variable inter_ce44cde5-module__EWa6Cq__variable ibm_plex_sans_abbe3f68-module__2aQ_Fa__variable atkinson_hyperlegible_86f3eeac-module__H04cSq__variable dm_sans_4dbccdff-module__kMSx3G__variable jetbrains_mono_d9365dea-module__eFWXIa__variable ibm_plex_mono_a350e774-module__yi3qSG__variable dm_mono_c5369204-module__U0WqgG__variable" data-font-sans="geist" data-font-mono="geist-mono"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/chunks/02i5hsdat1nuq.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/chunks/0eax07u1ta6tp.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/27culnr-k4v7j.js"/><script src="/_next/static/chunks/40re3aog6ymmi.js" async=""></script><script src="/_next/static/chunks/2nizd2srt2-vm.js" async=""></script><script src="/_next/static/chunks/1i9a4z5i_ajz0.js" async=""></script><script src="/_next/static/chunks/turbopack-2qsbj8zx38t0j.js" async=""></script><script src="/_next/static/chunks/2n91moa8g45as.js" async=""></script><script src="/_next/static/chunks/1dyovtojnx0d4.js" async=""></script><meta name="robots" content="noindex"/><title>VibeDoc</title><meta name="description" content="Project intelligence for AI-assisted development"/><meta name="next-size-adjust" content=""/><title>404: This page could not be found.</title><script src="/_next/static/chunks/0cz1d0mv5g_q7.js" noModule=""></script></head><body class="bg-bg text-txt min-h-screen"><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><!--$--><!--/$--><script src="/_next/static/chunks/27culnr-k4v7j.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[796229,[\"/_next/static/chunks/2n91moa8g45as.js\"],\"default\"]\n3:I[32339,[\"/_next/static/chunks/2n91moa8g45as.js\"],\"default\"]\n4:I[48081,[\"/_next/static/chunks/2n91moa8g45as.js\"],\"OutletBoundary\"]\n5:\"$Sreact.suspense\"\n8:I[48081,[\"/_next/static/chunks/2n91moa8g45as.js\"],\"ViewportBoundary\"]\na:I[48081,[\"/_next/static/chunks/2n91moa8g45as.js\"],\"MetadataBoundary\"]\nc:I[563491,[\"/_next/static/chunks/2n91moa8g45as.js\",\"/_next/static/chunks/1dyovtojnx0d4.js\"],\"default\"]\n:HL[\"/_next/static/chunks/02i5hsdat1nuq.css\",\"style\"]\n:HL[\"/_next/static/chunks/0eax07u1ta6tp.css\",\"style\"]\n7:X\n0:{\"P\":null,\"c\":[\"\",\"_not-found\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{},\"$undefined\",\"$undefined\",4608]},\"$undefined\",\"$undefined\",4608]},\"$undefined\",\"$undefined\",4624],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/02i5hsdat1nuq.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"1\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/0eax07u1ta6tp.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/2n91moa8g45as.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"className\":\"dark geist_9c6cb61b-module__8NX9hq__variable geist_mono_d6617093-module__z61v7q__variable inter_ce44cde5-module__EWa6Cq__variable ibm_plex_sans_abbe3f68-module__2aQ_Fa__variable atkinson_hyperlegible_86f3eeac-module__H04cSq__variable dm_sans_4dbccdff-module__kMSx3G__variable jetbrains_mono_d9365dea-module__eFWXIa__variable ibm_plex_mono_a350e774-module__yi3qSG__variable dm_mono_c5369204-module__U0WqgG__variable\",\"data-font-sans\":\"geist\",\"data-font-mono\":\"geist-mono\",\"children\":[\"$\",\"body\",null,{\"className\":\"bg-bg text-txt min-h-screen\",\"children\":[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:props:notFound:0:1:props:style\",\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:props:notFound:0:1:props:children:props:children:1:props:style\",\"children\":404}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:style\",\"children\":[\"$\",\"h2\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:children:props:style\",\"children\":\"This page could not be found.\"}]}]]}]}]],null,[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@6\"}]}]]}],{},null,false,null]},null,false,\"$7\"]},null,false,null],[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[\"$\",\"$L8\",null,{\"children\":\"$L9\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$La\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Lb\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$c\",[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/02i5hsdat1nuq.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"1\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/0eax07u1ta6tp.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]]],\"S\":true,\"h\":null,\"r\":\"$undefined\",\"s\":\"$undefined\",\"a\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"P1gxTEpKVh-OOtIXC432U\"}\n7:C\n9:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n6:null\nb:[[\"$\",\"title\",\"0\",{\"children\":\"VibeDoc\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Project intelligence for AI-assisted development\"}]]\n"])</script></body></html>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><html id="__next_error__"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/27culnr-k4v7j.js"/><script src="/_next/static/chunks/40re3aog6ymmi.js" async=""></script><script src="/_next/static/chunks/2nizd2srt2-vm.js" async=""></script><script src="/_next/static/chunks/1i9a4z5i_ajz0.js" async=""></script><script src="/_next/static/chunks/turbopack-2qsbj8zx38t0j.js" async=""></script><script src="/_next/static/chunks/27xj8jkjt-ck1.js" async=""></script><meta name="next-size-adjust" content=""/><title>500: This page couldn’t load</title><style>:root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }</style><script src="/_next/static/chunks/0cz1d0mv5g_q7.js" noModule=""></script></head><body><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";height:100vh;display:flex;align-items:center;justify-content:center"><div style="margin-top:-32px;max-width:325px;padding:32px 28px;text-align:left"><svg width="32" height="32" viewBox="-0.2 -1.5 32 32" fill="none" style="margin-bottom:24px"><path d="M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z" fill="var(--next-error-title)"></path></svg><h1 style="font-size:24px;font-weight:500;letter-spacing:-0.02em;line-height:32px;margin:0 0 12px 0;color:var(--next-error-title)">This page couldn’t load</h1><p style="font-size:14px;font-weight:400;line-height:21px;margin:0 0 20px 0;color:var(--next-error-message)">A server error occurred. Reload to try again.</p><form style="margin:0"><button type="submit" style="display:inline-flex;align-items:center;justify-content:center;height:32px;padding:0 12px;font-size:14px;font-weight:500;line-height:20px;border-radius:6px;cursor:pointer;color:var(--next-error-btn-text);background:var(--next-error-btn-bg);border:var(--next-error-btn-border)">Reload</button></form></div></div><!--$--><!--/$--><script src="/_next/static/chunks/27culnr-k4v7j.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[796229,[\"/_next/static/chunks/27xj8jkjt-ck1.js\"],\"default\"]\n3:I[32339,[\"/_next/static/chunks/27xj8jkjt-ck1.js\"],\"default\"]\n4:I[48081,[\"/_next/static/chunks/27xj8jkjt-ck1.js\"],\"OutletBoundary\"]\n5:\"$Sreact.suspense\"\n8:I[48081,[\"/_next/static/chunks/27xj8jkjt-ck1.js\"],\"ViewportBoundary\"]\na:I[48081,[\"/_next/static/chunks/27xj8jkjt-ck1.js\"],\"MetadataBoundary\"]\nc:I[563491,[\"/_next/static/chunks/27xj8jkjt-ck1.js\"],\"default\"]\n7:X\n0:{\"P\":null,\"c\":[\"\",\"_global-error\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"__PAGE__\",{},\"$undefined\",\"$undefined\",4624]},\"$undefined\",\"$undefined\",4624],[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"html\",null,{\"id\":\"__next_error__\",\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"title\",null,{\"children\":\"500: This page couldn’t load\"}],[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\":root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }\"}}]]}],[\"$\",\"body\",null,{\"children\":[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"display\":\"flex\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"style\":{\"marginTop\":\"-32px\",\"maxWidth\":\"325px\",\"padding\":\"32px 28px\",\"textAlign\":\"left\"},\"children\":[[\"$\",\"svg\",null,{\"width\":\"32\",\"height\":\"32\",\"viewBox\":\"-0.2 -1.5 32 32\",\"fill\":\"none\",\"style\":{\"marginBottom\":\"24px\"},\"children\":[\"$\",\"path\",null,{\"d\":\"M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z\",\"fill\":\"var(--next-error-title)\"}]}],[\"$\",\"h1\",null,{\"style\":{\"fontSize\":\"24px\",\"fontWeight\":500,\"letterSpacing\":\"-0.02em\",\"lineHeight\":\"32px\",\"margin\":\"0 0 12px 0\",\"color\":\"var(--next-error-title)\"},\"children\":\"This page couldn’t load\"}],[\"$\",\"p\",null,{\"style\":{\"fontSize\":\"14px\",\"fontWeight\":400,\"lineHeight\":\"21px\",\"margin\":\"0 0 20px 0\",\"color\":\"var(--next-error-message)\"},\"children\":\"A server error occurred. Reload to try again.\"}],[\"$\",\"form\",null,{\"style\":{\"margin\":0},\"children\":[\"$\",\"button\",null,{\"type\":\"submit\",\"style\":{\"display\":\"inline-flex\",\"alignItems\":\"center\",\"justifyContent\":\"center\",\"height\":\"32px\",\"padding\":\"0 12px\",\"fontSize\":\"14px\",\"fontWeight\":500,\"lineHeight\":\"20px\",\"borderRadius\":\"6px\",\"cursor\":\"pointer\",\"color\":\"var(--next-error-btn-text)\",\"background\":\"var(--next-error-btn-bg)\",\"border\":\"var(--next-error-btn-border)\"},\"children\":\"Reload\"}]}]]}]}]}]]}],null,[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@6\"}]}]]}],{},null,false,null]},null,false,\"$7\"],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$L8\",null,{\"children\":\"$L9\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$La\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Lb\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$c\",[]],\"S\":true,\"h\":null,\"r\":\"$undefined\",\"s\":\"$undefined\",\"a\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"
|
|
1
|
+
<!DOCTYPE html><html id="__next_error__"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/27culnr-k4v7j.js"/><script src="/_next/static/chunks/40re3aog6ymmi.js" async=""></script><script src="/_next/static/chunks/2nizd2srt2-vm.js" async=""></script><script src="/_next/static/chunks/1i9a4z5i_ajz0.js" async=""></script><script src="/_next/static/chunks/turbopack-2qsbj8zx38t0j.js" async=""></script><script src="/_next/static/chunks/27xj8jkjt-ck1.js" async=""></script><meta name="next-size-adjust" content=""/><title>500: This page couldn’t load</title><style>:root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }</style><script src="/_next/static/chunks/0cz1d0mv5g_q7.js" noModule=""></script></head><body><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";height:100vh;display:flex;align-items:center;justify-content:center"><div style="margin-top:-32px;max-width:325px;padding:32px 28px;text-align:left"><svg width="32" height="32" viewBox="-0.2 -1.5 32 32" fill="none" style="margin-bottom:24px"><path d="M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z" fill="var(--next-error-title)"></path></svg><h1 style="font-size:24px;font-weight:500;letter-spacing:-0.02em;line-height:32px;margin:0 0 12px 0;color:var(--next-error-title)">This page couldn’t load</h1><p style="font-size:14px;font-weight:400;line-height:21px;margin:0 0 20px 0;color:var(--next-error-message)">A server error occurred. Reload to try again.</p><form style="margin:0"><button type="submit" style="display:inline-flex;align-items:center;justify-content:center;height:32px;padding:0 12px;font-size:14px;font-weight:500;line-height:20px;border-radius:6px;cursor:pointer;color:var(--next-error-btn-text);background:var(--next-error-btn-bg);border:var(--next-error-btn-border)">Reload</button></form></div></div><!--$--><!--/$--><script src="/_next/static/chunks/27culnr-k4v7j.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[796229,[\"/_next/static/chunks/27xj8jkjt-ck1.js\"],\"default\"]\n3:I[32339,[\"/_next/static/chunks/27xj8jkjt-ck1.js\"],\"default\"]\n4:I[48081,[\"/_next/static/chunks/27xj8jkjt-ck1.js\"],\"OutletBoundary\"]\n5:\"$Sreact.suspense\"\n8:I[48081,[\"/_next/static/chunks/27xj8jkjt-ck1.js\"],\"ViewportBoundary\"]\na:I[48081,[\"/_next/static/chunks/27xj8jkjt-ck1.js\"],\"MetadataBoundary\"]\nc:I[563491,[\"/_next/static/chunks/27xj8jkjt-ck1.js\"],\"default\"]\n7:X\n0:{\"P\":null,\"c\":[\"\",\"_global-error\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"__PAGE__\",{},\"$undefined\",\"$undefined\",4624]},\"$undefined\",\"$undefined\",4624],[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"html\",null,{\"id\":\"__next_error__\",\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"title\",null,{\"children\":\"500: This page couldn’t load\"}],[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\":root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }\"}}]]}],[\"$\",\"body\",null,{\"children\":[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"display\":\"flex\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"style\":{\"marginTop\":\"-32px\",\"maxWidth\":\"325px\",\"padding\":\"32px 28px\",\"textAlign\":\"left\"},\"children\":[[\"$\",\"svg\",null,{\"width\":\"32\",\"height\":\"32\",\"viewBox\":\"-0.2 -1.5 32 32\",\"fill\":\"none\",\"style\":{\"marginBottom\":\"24px\"},\"children\":[\"$\",\"path\",null,{\"d\":\"M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z\",\"fill\":\"var(--next-error-title)\"}]}],[\"$\",\"h1\",null,{\"style\":{\"fontSize\":\"24px\",\"fontWeight\":500,\"letterSpacing\":\"-0.02em\",\"lineHeight\":\"32px\",\"margin\":\"0 0 12px 0\",\"color\":\"var(--next-error-title)\"},\"children\":\"This page couldn’t load\"}],[\"$\",\"p\",null,{\"style\":{\"fontSize\":\"14px\",\"fontWeight\":400,\"lineHeight\":\"21px\",\"margin\":\"0 0 20px 0\",\"color\":\"var(--next-error-message)\"},\"children\":\"A server error occurred. Reload to try again.\"}],[\"$\",\"form\",null,{\"style\":{\"margin\":0},\"children\":[\"$\",\"button\",null,{\"type\":\"submit\",\"style\":{\"display\":\"inline-flex\",\"alignItems\":\"center\",\"justifyContent\":\"center\",\"height\":\"32px\",\"padding\":\"0 12px\",\"fontSize\":\"14px\",\"fontWeight\":500,\"lineHeight\":\"20px\",\"borderRadius\":\"6px\",\"cursor\":\"pointer\",\"color\":\"var(--next-error-btn-text)\",\"background\":\"var(--next-error-btn-bg)\",\"border\":\"var(--next-error-btn-border)\"},\"children\":\"Reload\"}]}]]}]}]}]]}],null,[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@6\"}]}]]}],{},null,false,null]},null,false,\"$7\"],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$L8\",null,{\"children\":\"$L9\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$La\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Lb\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$c\",[]],\"S\":true,\"h\":null,\"r\":\"$undefined\",\"s\":\"$undefined\",\"a\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"P1gxTEpKVh-OOtIXC432U\"}\n7:C\n9:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n6:null\nb:[]\n"])</script></body></html>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
self.__RSC_SERVER_MANIFEST="{\n \"node\": {},\n \"edge\": {},\n \"encryptionKey\": \"
|
|
1
|
+
self.__RSC_SERVER_MANIFEST="{\n \"node\": {},\n \"edge\": {},\n \"encryptionKey\": \"/lxmtwOgPR2k09vLl3CCmVN3i33wQqxbPYWud5LKYQ0=\"\n}"
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,528427,s=>{s.v(t=>Promise.all(["static/chunks/3wehcul43z-up.js","static/chunks/090qol92bm3lm.js","static/chunks/16amofje8v-rw.js","static/chunks/2a46a9zwq8i_j.js","static/chunks/3rmz5_d6ve6ut.js","static/chunks/3ezb3p4b8ibl2.js","static/chunks/2uhr8khh963wn.js","static/chunks/2zy289po30i-l.js","static/chunks/2rubn40gv6g5w.js","static/chunks/25-4d7lo7j_n3.js"].map(t=>s.l(t))).then(()=>t(20832)))}]);
|