vibedoc 1.11.0 → 1.13.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 +5 -1
- package/.next/build-manifest.json +3 -3
- package/.next/prerender-manifest.json +70 -14
- package/.next/routes-manifest.json +24 -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)/getting-started/page/app-paths-manifest.json +3 -0
- package/.next/server/app/(app)/getting-started/page/build-manifest.json +20 -0
- package/.next/server/app/(app)/getting-started/page/next-font-manifest.json +11 -0
- package/.next/server/app/(app)/getting-started/page/react-loadable-manifest.json +1 -0
- package/.next/server/app/(app)/getting-started/page/server-reference-manifest.json +4 -0
- package/.next/server/app/(app)/getting-started/page.js +15 -0
- package/.next/server/app/(app)/getting-started/page.js.map +5 -0
- package/.next/server/app/(app)/getting-started/page.js.nft.json +1 -0
- package/.next/server/app/(app)/getting-started/page_client-reference-manifest.js +3 -0
- 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/page.js.nft.json +1 -1
- package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_global-error.html +1 -1
- package/.next/server/app/_global-error.rsc +1 -1
- package/.next/server/app/_global-error.segments/__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 +7 -7
- package/.next/server/app/activity.segments/!KGFwcCk/activity/__PAGE__.segment.rsc +5 -5
- package/.next/server/app/activity.segments/_full.segment.rsc +7 -7
- package/.next/server/app/activity.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/api/activity/route.js +2 -3
- package/.next/server/app/api/activity/route.js.nft.json +1 -1
- package/.next/server/app/api/chat/route.js +2 -2
- package/.next/server/app/api/chat/route.js.nft.json +1 -1
- package/.next/server/app/api/context/route.js +2 -3
- package/.next/server/app/api/context/route.js.nft.json +1 -1
- package/.next/server/app/api/conversations/route.js +3 -4
- package/.next/server/app/api/conversations/route.js.nft.json +1 -1
- package/.next/server/app/api/decisions/route.js +2 -3
- package/.next/server/app/api/decisions/route.js.nft.json +1 -1
- package/.next/server/app/api/docs/graph/route.js +2 -4
- package/.next/server/app/api/docs/graph/route.js.nft.json +1 -1
- package/.next/server/app/api/docs/links/route.js +2 -4
- package/.next/server/app/api/docs/links/route.js.nft.json +1 -1
- package/.next/server/app/api/docs/route.js +2 -3
- package/.next/server/app/api/docs/route.js.nft.json +1 -1
- package/.next/server/app/api/explorer/route.js +3 -4
- package/.next/server/app/api/explorer/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/route.js +3 -4
- package/.next/server/app/api/mcp/route.js.nft.json +1 -1
- package/.next/server/app/api/memory/entries/delete/route.js +3 -4
- package/.next/server/app/api/memory/entries/delete/route.js.nft.json +1 -1
- package/.next/server/app/api/memory/entries/merge/route.js +3 -4
- 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 +3 -4
- 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 +3 -4
- package/.next/server/app/api/memory/entries/restore/route.js.nft.json +1 -1
- package/.next/server/app/api/memory/entries/route.js +2 -3
- package/.next/server/app/api/memory/entries/route.js.nft.json +1 -1
- package/.next/server/app/api/memory/entries/save/route.js +3 -4
- package/.next/server/app/api/memory/entries/save/route.js.nft.json +1 -1
- package/.next/server/app/api/memory/graph/route.js +3 -4
- package/.next/server/app/api/memory/graph/route.js.nft.json +1 -1
- package/.next/server/app/api/memory/health/dismiss/route.js +3 -4
- package/.next/server/app/api/memory/health/dismiss/route.js.nft.json +1 -1
- package/.next/server/app/api/memory/health/route.js +2 -3
- package/.next/server/app/api/memory/health/route.js.nft.json +1 -1
- package/.next/server/app/api/memory/history/route.js +2 -4
- 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 +8 -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 +2 -3
- 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 +7 -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 +3 -4
- package/.next/server/app/api/plan/apply/route.js.nft.json +1 -1
- package/.next/server/app/api/projects/route.js +2 -3
- package/.next/server/app/api/projects/route.js.nft.json +1 -1
- package/.next/server/app/api/registry/route.js +2 -3
- package/.next/server/app/api/registry/route.js.nft.json +1 -1
- package/.next/server/app/api/roadmap/create/route.js +3 -4
- package/.next/server/app/api/roadmap/create/route.js.nft.json +1 -1
- package/.next/server/app/api/roadmap/delete/route.js +3 -4
- package/.next/server/app/api/roadmap/delete/route.js.nft.json +1 -1
- package/.next/server/app/api/roadmap/generate/route.js +3 -4
- package/.next/server/app/api/roadmap/generate/route.js.nft.json +1 -1
- package/.next/server/app/api/roadmap/layout/route.js +3 -4
- package/.next/server/app/api/roadmap/layout/route.js.nft.json +1 -1
- package/.next/server/app/api/roadmap/restore/route.js +3 -4
- package/.next/server/app/api/roadmap/restore/route.js.nft.json +1 -1
- package/.next/server/app/api/roadmap/route.js +2 -3
- package/.next/server/app/api/roadmap/route.js.nft.json +1 -1
- package/.next/server/app/api/roadmap/update/route.js +3 -4
- package/.next/server/app/api/roadmap/update/route.js.nft.json +1 -1
- package/.next/server/app/api/sessions/route.js +2 -3
- package/.next/server/app/api/sessions/route.js.nft.json +1 -1
- package/.next/server/app/api/settings/route.js +2 -3
- package/.next/server/app/api/settings/route.js.nft.json +1 -1
- package/.next/server/app/api/setup/generate/route.js +2 -3
- package/.next/server/app/api/setup/generate/route.js.nft.json +1 -1
- package/.next/server/app/api/setup/write/route.js +2 -3
- package/.next/server/app/api/setup/write/route.js.nft.json +1 -1
- package/.next/server/app/api/summary/route.js +2 -3
- package/.next/server/app/api/summary/route.js.nft.json +1 -1
- package/.next/server/app/api/tasks/bulk/route.js +3 -4
- package/.next/server/app/api/tasks/bulk/route.js.nft.json +1 -1
- package/.next/server/app/api/tasks/create/route.js +2 -3
- package/.next/server/app/api/tasks/create/route.js.nft.json +1 -1
- package/.next/server/app/api/tasks/delete/route.js +3 -4
- package/.next/server/app/api/tasks/delete/route.js.nft.json +1 -1
- package/.next/server/app/api/tasks/manual-tests/route.js +3 -3
- package/.next/server/app/api/tasks/manual-tests/route.js.nft.json +1 -1
- package/.next/server/app/api/tasks/restore/route.js +3 -4
- package/.next/server/app/api/tasks/restore/route.js.nft.json +1 -1
- package/.next/server/app/api/tasks/review/route.js +3 -4
- package/.next/server/app/api/tasks/review/route.js.nft.json +1 -1
- package/.next/server/app/api/tasks/route.js +2 -3
- package/.next/server/app/api/tasks/route.js.nft.json +1 -1
- package/.next/server/app/api/tasks/update/route.js +3 -4
- package/.next/server/app/api/tasks/update/route.js.nft.json +1 -1
- package/.next/server/app/api/views/route.js +2 -3
- 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 +7 -7
- package/.next/server/app/explorer.segments/!KGFwcCk/explorer/__PAGE__.segment.rsc +9 -11
- package/.next/server/app/explorer.segments/_full.segment.rsc +7 -7
- package/.next/server/app/explorer.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/getting-started.html +1 -0
- package/.next/server/app/getting-started.meta +31 -0
- package/.next/server/app/getting-started.rsc +31 -0
- package/.next/server/app/getting-started.segments/!KGFwcCk/getting-started/__PAGE__.segment.rsc +32 -0
- package/.next/server/app/getting-started.segments/_full.segment.rsc +31 -0
- package/.next/server/app/getting-started.segments/_tree.segment.rsc +5 -0
- 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 +7 -7
- 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 +7 -7
- 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 +7 -7
- package/.next/server/app/roadmap.segments/!KGFwcCk/roadmap/__PAGE__.segment.rsc +5 -5
- package/.next/server/app/roadmap.segments/_full.segment.rsc +7 -7
- 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/welcome/page/app-paths-manifest.json +3 -0
- package/.next/server/app/welcome/page/build-manifest.json +20 -0
- package/.next/server/app/welcome/page/next-font-manifest.json +11 -0
- package/.next/server/app/welcome/page/react-loadable-manifest.json +1 -0
- package/.next/server/app/welcome/page/server-reference-manifest.json +4 -0
- package/.next/server/app/welcome/page.js +13 -0
- package/.next/server/app/welcome/page.js.map +5 -0
- package/.next/server/app/welcome/page.js.nft.json +1 -0
- package/.next/server/app/welcome/page_client-reference-manifest.js +3 -0
- package/.next/server/app/welcome.html +1 -0
- package/.next/server/app/welcome.meta +26 -0
- package/.next/server/app/welcome.rsc +27 -0
- package/.next/server/app/welcome.segments/_full.segment.rsc +27 -0
- package/.next/server/app/welcome.segments/_tree.segment.rsc +5 -0
- package/.next/server/app/welcome.segments/welcome/__PAGE__.segment.rsc +29 -0
- package/.next/server/app-paths-manifest.json +5 -1
- package/.next/server/chunks/{11mp_@anthropic-ai_sdk_01gyja3._.js → 11mp_@anthropic-ai_sdk_0-smxh7._.js} +1 -1
- package/.next/server/chunks/{11mp_@anthropic-ai_sdk_02lx_j3._.js → 11mp_@anthropic-ai_sdk_0-upxuo._.js} +1 -1
- package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0-r4g2t._.js → 11mp_@anthropic-ai_sdk_00stvd0._.js} +1 -1
- package/.next/server/chunks/{11mp_@anthropic-ai_sdk_05iv23g._.js → 11mp_@anthropic-ai_sdk_05tlp4j._.js} +1 -1
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_06i1jku._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_06pqlwo._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_06q_bm6._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_098dref._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_09q07e_._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_09r9wsn._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_0_rnqa6._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_0ch0mdl._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_0didq3m._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_0dwtv_z._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_0e8sqia._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_0gk-rze._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_0gywxp1._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_0h4l0yx._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_0hjmy82._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_0jbmnx_._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_0l7teck._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_0ldf-lc._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_0oe9p6l._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_0ppgi2h._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_0ydb8nm._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_11hsr1e._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_14pgcis._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_15_sqq8._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_16up-b0._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_1_jm94w._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_1aswx0v._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_1bkea9c._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_1d41_6l._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_1d959rx._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_1eughke._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_1ev29eb._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_1faxy2m._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_1lginb1._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_1pg6fky._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_1qfho5e._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_1r9e6jv._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_1tjlpeq._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_1wcdj4f._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_1x25dnb._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_1ywjkuh._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_1zbnql3._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_1zbnql3._.js.map +1 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_208gclq._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_208gclq._.js.map +1 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_07rnikd._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_0cxqkzo._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_0iemvsj._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_0losy1p._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_0q2-o56._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_0v9tonm._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_0ve_28v._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_0vta7f6._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_0xme80s._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_12tnhho._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_14-nnf3._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_14e0xcw._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1cbywiw._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1d4fc7y._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1e89sld._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1emt011._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1jgaffx._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1m9p_w8._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1mtv1gy._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1plmrbl._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1toqkb5._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1yc8ml3._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1ycnogk._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__02ym03p._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__02ym03p._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__04qfxm4._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__04qfxm4._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__04t339z._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__04t339z._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__05b72pa._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__05b72pa._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__05jwgm-._.js +261 -0
- package/.next/server/chunks/[root-of-the-server]__05jwgm-._.js.map +1 -0
- package/.next/server/chunks/{[root-of-the-server]__0rh8yfn._.js → [root-of-the-server]__06ikdrx._.js} +2 -2
- package/.next/server/chunks/{[root-of-the-server]__0rh8yfn._.js.map → [root-of-the-server]__06ikdrx._.js.map} +1 -1
- package/.next/server/chunks/[root-of-the-server]__06x7kjp._.js +3 -0
- package/.next/server/chunks/{[root-of-the-server]__1wbho9e._.js.map → [root-of-the-server]__06x7kjp._.js.map} +1 -1
- package/.next/server/chunks/[root-of-the-server]__07-qwkc._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__07-qwkc._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__0_j-3zy._.js +3 -0
- package/.next/server/chunks/{[root-of-the-server]__1r_0uma._.js.map → [root-of-the-server]__0_j-3zy._.js.map} +1 -1
- package/.next/server/chunks/{[root-of-the-server]__0pz59qo._.js → [root-of-the-server]__0_paned._.js} +2 -2
- package/.next/server/chunks/[root-of-the-server]__0_paned._.js.map +1 -0
- package/.next/server/chunks/{[root-of-the-server]__0rikmqn._.js → [root-of-the-server]__0adl8c2._.js} +2 -2
- package/.next/server/chunks/[root-of-the-server]__0be-1oe._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0be-1oe._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__0c7qnhb._.js +3 -0
- package/.next/server/chunks/{[root-of-the-server]__0vf-0gp._.js.map → [root-of-the-server]__0c7qnhb._.js.map} +1 -1
- package/.next/server/chunks/[root-of-the-server]__0dfd91u._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0dfd91u._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__0e_zpd3._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0e_zpd3._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__0efnsph._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0efnsph._.js.map +1 -0
- package/.next/server/chunks/{[root-of-the-server]__1sn6-7a._.js → [root-of-the-server]__0gbhsr4._.js} +2 -2
- package/.next/server/chunks/{[root-of-the-server]__1sn6-7a._.js.map → [root-of-the-server]__0gbhsr4._.js.map} +1 -1
- package/.next/server/chunks/[root-of-the-server]__0pb7dzk._.js +261 -0
- package/.next/server/chunks/[root-of-the-server]__0pb7dzk._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__0q-h0w3._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0q-h0w3._.js.map +1 -0
- package/.next/server/chunks/{[root-of-the-server]__1yh-4vk._.js → [root-of-the-server]__0r_831n._.js} +2 -2
- package/.next/server/chunks/[root-of-the-server]__0s9wedh._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0s9wedh._.js.map +1 -0
- package/.next/server/chunks/{[root-of-the-server]__08v3p50._.js → [root-of-the-server]__0tzsbyx._.js} +2 -2
- package/.next/server/chunks/[root-of-the-server]__0uyhc_4._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0uyhc_4._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__0z2h080._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0z2h080._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__1-f1pzo._.js +3 -0
- package/.next/server/chunks/{[root-of-the-server]__0b6w_wb._.js.map → [root-of-the-server]__1-f1pzo._.js.map} +1 -1
- package/.next/server/chunks/[root-of-the-server]__120uun8._.js +3 -0
- package/.next/server/chunks/{[root-of-the-server]__05us508._.js.map → [root-of-the-server]__120uun8._.js.map} +1 -1
- package/.next/server/chunks/[root-of-the-server]__12qs29o._.js +261 -0
- package/.next/server/chunks/[root-of-the-server]__12qs29o._.js.map +1 -0
- package/.next/server/chunks/{[root-of-the-server]__1r67yrn._.js → [root-of-the-server]__146-7zt._.js} +2 -2
- package/.next/server/chunks/[root-of-the-server]__146-7zt._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__17_dic_._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__17_dic_._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__19a04nn._.js +3 -0
- package/.next/server/chunks/{[root-of-the-server]__0hg1r2b._.js.map → [root-of-the-server]__19a04nn._.js.map} +1 -1
- package/.next/server/chunks/[root-of-the-server]__1_q8upn._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__1ar-16i._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__1ar-16i._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__1egi_4t._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__1egi_4t._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__1eh1p2_._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__1eh1p2_._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__1gwdudg._.js +3 -0
- package/.next/server/chunks/{[root-of-the-server]__18dt3sr._.js.map → [root-of-the-server]__1gwdudg._.js.map} +1 -1
- package/.next/server/chunks/{[root-of-the-server]__0wc_gnr._.js → [root-of-the-server]__1hz94ca._.js} +2 -2
- package/.next/server/chunks/[root-of-the-server]__1jyx430._.js +3 -0
- package/.next/server/chunks/{[root-of-the-server]__1wcd2x9._.js.map → [root-of-the-server]__1jyx430._.js.map} +1 -1
- package/.next/server/chunks/[root-of-the-server]__1meifxd._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__1meifxd._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__1mn0d5e._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__1mn0d5e._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__1o-hldt._.js +3 -0
- package/.next/server/chunks/{[root-of-the-server]__1pjwaan._.js.map → [root-of-the-server]__1o-hldt._.js.map} +1 -1
- package/.next/server/chunks/[root-of-the-server]__1ocnzl5._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__1ocnzl5._.js.map +1 -0
- package/.next/server/chunks/{[root-of-the-server]__06ndlro._.js → [root-of-the-server]__1pf07ha._.js} +2 -2
- package/.next/server/chunks/{[root-of-the-server]__0zy73pu._.js → [root-of-the-server]__1rtj94g._.js} +2 -2
- package/.next/server/chunks/{[root-of-the-server]__11nbc9e._.js.map → [root-of-the-server]__1rtj94g._.js.map} +1 -1
- package/.next/server/chunks/[root-of-the-server]__1rz7a1h._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__1rz7a1h._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__1s7yctb._.js +3 -0
- package/.next/server/chunks/{[root-of-the-server]__0rggulw._.js.map → [root-of-the-server]__1s7yctb._.js.map} +1 -1
- package/.next/server/chunks/[root-of-the-server]__1tebaoq._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__1tebaoq._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__1uh0213._.js +3 -0
- package/.next/server/chunks/{[root-of-the-server]__1skrybv._.js.map → [root-of-the-server]__1uh0213._.js.map} +1 -1
- package/.next/server/chunks/[root-of-the-server]__1vj_u-e._.js +3 -0
- package/.next/server/chunks/{[root-of-the-server]__1p6-0l0._.js.map → [root-of-the-server]__1vj_u-e._.js.map} +1 -1
- package/.next/server/chunks/{[root-of-the-server]__1_qenei._.js → [root-of-the-server]__20ctbhx._.js} +2 -2
- package/.next/server/chunks/{[root-of-the-server]__1_qenei._.js.map → [root-of-the-server]__20ctbhx._.js.map} +1 -1
- package/.next/server/chunks/[root-of-the-server]__20nzp64._.js +3 -0
- package/.next/server/chunks/{[root-of-the-server]__1r67yrn._.js.map → [root-of-the-server]__20nzp64._.js.map} +1 -1
- package/.next/server/chunks/_04byth9._.js +19 -18
- package/.next/server/chunks/_04byth9._.js.map +1 -1
- package/.next/server/chunks/_0safx0g._.js +3 -3
- package/.next/server/chunks/_0safx0g._.js.map +1 -1
- package/.next/server/chunks/_1au4syj._.js +1 -1
- package/.next/server/chunks/_1au4syj._.js.map +1 -1
- package/.next/server/chunks/_1b5fqxy._.js +1 -1
- package/.next/server/chunks/_1b5fqxy._.js.map +1 -1
- package/.next/server/chunks/_1ivswa9._.js +1 -1
- package/.next/server/chunks/_1ivswa9._.js.map +1 -1
- package/.next/server/chunks/_1si7nb_._.js +2 -2
- package/.next/server/chunks/_1si7nb_._.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_versions_route_actions_13mix75.js +3 -0
- package/.next/server/chunks/ssr/{0_nd_mermaid_dist_mermaid_core_mjs_0y_edkq._.js → 0_nd_mermaid_dist_mermaid_core_mjs_1trh599._.js} +2 -2
- package/.next/server/chunks/ssr/{1u84_katex_dist_katex_mjs_0yg8zto._.js → 1u84_katex_dist_katex_mjs_0wukkxe._.js} +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__0dn-5g9._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0dn-5g9._.js.map +1 -0
- package/.next/server/chunks/ssr/{[root-of-the-server]__08z0szh._.js → [root-of-the-server]__0p_ieww._.js} +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__1_4pq0_._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__1_4pq0_._.js.map +1 -0
- package/.next/server/chunks/ssr/{[root-of-the-server]__1wdwnnp._.js → [root-of-the-server]__1ecvjg8._.js} +1 -1
- package/.next/server/chunks/ssr/_04xff_2._.js +1 -1
- package/.next/server/chunks/ssr/_04xff_2._.js.map +1 -1
- package/.next/server/chunks/ssr/_09qa3fe._.js +3 -0
- package/.next/server/chunks/ssr/_09qa3fe._.js.map +1 -0
- package/.next/server/chunks/ssr/_0_74-q8._.js +3 -0
- package/.next/server/chunks/ssr/_0_74-q8._.js.map +1 -0
- package/.next/server/chunks/ssr/_0cv0ugs._.js +3 -0
- package/.next/server/chunks/ssr/_0cv0ugs._.js.map +1 -0
- 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/_0hck6f0._.js +3 -0
- package/.next/server/chunks/ssr/_0hck6f0._.js.map +1 -0
- package/.next/server/chunks/ssr/_0o8t6j-._.js +3 -0
- package/.next/server/chunks/ssr/_0o8t6j-._.js.map +1 -0
- package/.next/server/chunks/ssr/_0p_5o4z._.js +23 -0
- package/.next/server/chunks/ssr/_0p_5o4z._.js.map +1 -0
- package/.next/server/chunks/ssr/_0rmo9r-._.js +1 -1
- package/.next/server/chunks/ssr/_0rmo9r-._.js.map +1 -1
- package/.next/server/chunks/ssr/_0ust7tw._.js +1 -1
- package/.next/server/chunks/ssr/_0ust7tw._.js.map +1 -1
- package/.next/server/chunks/ssr/_1c46ap6._.js +23 -0
- package/.next/server/chunks/ssr/_1c46ap6._.js.map +1 -0
- package/.next/server/chunks/ssr/_1gxjjvh._.js +1 -1
- package/.next/server/chunks/ssr/_1gxjjvh._.js.map +1 -1
- package/.next/server/chunks/ssr/_1jjs63r._.js +131 -0
- package/.next/server/chunks/ssr/_1jjs63r._.js.map +1 -0
- package/.next/server/chunks/ssr/_1kcyxnh._.js +3 -0
- package/.next/server/chunks/ssr/_1kcyxnh._.js.map +1 -0
- package/.next/server/chunks/ssr/_1lvbdeq._.js +3 -0
- package/.next/server/chunks/ssr/_1lvbdeq._.js.map +1 -0
- package/.next/server/chunks/ssr/_1rewjdw._.js +3 -0
- package/.next/server/chunks/ssr/_1rewjdw._.js.map +1 -0
- package/.next/server/chunks/ssr/_1tv---f._.js +3 -0
- package/.next/server/chunks/ssr/_1tv---f._.js.map +1 -0
- package/.next/server/chunks/ssr/_1zyvi-w._.js +3 -0
- package/.next/server/chunks/ssr/_1zyvi-w._.js.map +1 -0
- package/.next/server/chunks/ssr/_next-internal_server_app_(app)_getting-started_page_actions_18jod7i.js +3 -0
- package/.next/server/chunks/ssr/_next-internal_server_app_welcome_page_actions_1unjea7.js +3 -0
- package/.next/server/chunks/ssr/{node_modules__pnpm_03mp7qw._.js → node_modules__pnpm_0-6sq9f._.js} +2 -2
- package/.next/server/chunks/ssr/{node_modules__pnpm_0jampur._.js → node_modules__pnpm_0-vta96._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules__pnpm_00f4yhs._.js → node_modules__pnpm_04qn321._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules__pnpm_0tn5pg3._.js → node_modules__pnpm_06r-oci._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules__pnpm_0iu4132._.js → node_modules__pnpm_0fe8aya._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules__pnpm_0oyo3yo._.js → node_modules__pnpm_0hpufx1._.js} +2 -2
- package/.next/server/chunks/ssr/{node_modules__pnpm_0j_-le7._.js → node_modules__pnpm_0k5j0_5._.js} +2 -2
- package/.next/server/chunks/ssr/node_modules__pnpm_0k5j0_5._.js.map +1 -0
- package/.next/server/chunks/ssr/{node_modules__pnpm_0x5wj-4._.js → node_modules__pnpm_0kv8p99._.js} +2 -2
- package/.next/server/chunks/ssr/{node_modules__pnpm_06_8fr8._.js → node_modules__pnpm_0m-_au1._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules__pnpm_1zme4rg._.js → node_modules__pnpm_0mrjd3b._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules__pnpm_0mqeoh-._.js → node_modules__pnpm_0p2ufg5._.js} +2 -2
- package/.next/server/chunks/ssr/{node_modules__pnpm_03mpmzx._.js → node_modules__pnpm_0r2omyh._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules__pnpm_0_e05ka._.js → node_modules__pnpm_0uh9zwf._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules__pnpm_035haet._.js → node_modules__pnpm_0ujugl_._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules__pnpm_0lkvbt-._.js → node_modules__pnpm_0v-_iaj._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules__pnpm_0rq9x9q._.js → node_modules__pnpm_0xin4nu._.js} +2 -2
- package/.next/server/chunks/ssr/{node_modules__pnpm_139-v1i._.js → node_modules__pnpm_1-zfovp._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules__pnpm_1i_chik._.js → node_modules__pnpm_11p7w0z._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules__pnpm_1jgju12._.js → node_modules__pnpm_16l16l0._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules__pnpm_1n9oeu0._.js → node_modules__pnpm_16vl5yb._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules__pnpm_1ydeqw6._.js → node_modules__pnpm_1alnvos._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules__pnpm_03an60e._.js → node_modules__pnpm_1e_74v6._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules__pnpm_2045l51._.js → node_modules__pnpm_1kvkjrs._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules__pnpm_0zz55xq._.js → node_modules__pnpm_1l4yejo._.js} +1 -1
- package/.next/server/chunks/ssr/node_modules__pnpm_1l4yejo._.js.map +1 -0
- package/.next/server/chunks/ssr/{node_modules__pnpm_1ws3ez9._.js → node_modules__pnpm_1uly489._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules__pnpm_1zum4yd._.js → node_modules__pnpm_1xntybk._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules__pnpm_09nd7ia._.js → node_modules__pnpm_20g30gl._.js} +1 -1
- package/.next/server/chunks/ssr/src_app_(app)_activity_page_tsx_13jd6bn._.js +1 -1
- package/.next/server/chunks/ssr/src_app_(app)_activity_page_tsx_13jd6bn._.js.map +1 -1
- package/.next/server/chunks/ssr/src_app_(app)_board_page_tsx_0gpfc77._.js +1 -1
- package/.next/server/chunks/ssr/src_app_(app)_board_page_tsx_0gpfc77._.js.map +1 -1
- package/.next/server/chunks/ssr/src_app_(app)_getting-started_page_tsx_0dgdc6p._.js +3 -0
- package/.next/server/chunks/ssr/src_app_(app)_getting-started_page_tsx_0dgdc6p._.js.map +1 -0
- package/.next/server/chunks/ssr/src_app_(app)_layout_tsx_1yu5hom._.js +1 -1
- package/.next/server/chunks/ssr/src_app_(app)_layout_tsx_1yu5hom._.js.map +1 -1
- package/.next/server/chunks/ssr/src_app_(app)_manual-tests_page_tsx_01tnunf._.js +1 -1
- package/.next/server/chunks/ssr/src_app_(app)_manual-tests_page_tsx_01tnunf._.js.map +1 -1
- package/.next/server/chunks/ssr/src_app_(app)_memory_page_tsx_19jhb1c._.js +3 -3
- package/.next/server/chunks/ssr/src_app_(app)_memory_page_tsx_19jhb1c._.js.map +1 -1
- package/.next/server/chunks/ssr/src_app_(app)_roadmap_page_tsx_0vcq3jr._.js +2 -2
- package/.next/server/chunks/ssr/src_app_(app)_roadmap_page_tsx_0vcq3jr._.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/chunks/ssr/src_context_ChatContext_tsx_0lowp8p._.js +2 -2
- package/.next/server/chunks/ssr/src_context_ChatContext_tsx_0lowp8p._.js.map +1 -1
- package/.next/server/middleware-build-manifest.js +3 -3
- package/.next/server/next-font-manifest.js +1 -1
- package/.next/server/next-font-manifest.json +8 -0
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/server/prefetch-hints.json +33 -0
- package/.next/server/server-reference-manifest.js +1 -1
- package/.next/server/server-reference-manifest.json +1 -1
- package/.next/static/chunks/056pca8ms7k-9.js +1 -0
- package/.next/static/chunks/07hf_3iqpzmvo.css +1 -0
- package/.next/static/chunks/09-kkj4oxfqu1.js +1 -0
- package/.next/static/chunks/0fvkvef41i5ka.js +1 -0
- package/.next/static/chunks/{1xxzt2y2ttqql.js → 0kmyxrtasrg2e.js} +1 -1
- package/.next/static/chunks/11plpfj6j22fq.js +3 -0
- package/.next/static/chunks/{3ly7b47esdb7j.js → 1on4c-091wzdq.js} +1 -1
- package/.next/static/chunks/22vfp8880q59s.js +1 -0
- package/.next/static/chunks/2kf1_d5fndxdb.js +1 -0
- package/.next/static/chunks/{0_8ovyz2sbr3p.js → 2m7a38m38tx5y.js} +1 -1
- package/.next/static/chunks/31q2_z_ekk94r.js +1 -0
- package/.next/static/chunks/34lxzt8ahe_9n.js +1 -0
- package/.next/static/chunks/3fgzdr870mbms.js +2 -0
- package/.next/static/chunks/3gzt07wmbrocf.js +12 -0
- package/.next/static/chunks/3j_ko3wq2nvby.js +1 -0
- package/.next/static/chunks/3l3l7u2t-n2fh.js +3 -0
- package/.next/static/chunks/3l4yjycfav_7a.js +1 -0
- package/.next/static/chunks/3s8g1yx5n4kmt.js +1 -0
- package/.next/static/chunks/3v8szq-k4jtkg.js +1 -0
- package/.next/static/chunks/3xp-i_0-8cq9_.js +1 -0
- package/.next/static/chunks/41mb4xnwp-aq_.js +1 -0
- package/README.md +9 -2
- package/bin/vibedoc.check.mts +25 -0
- package/bin/vibedoc.mjs +9 -0
- package/docs/getting-started.md +93 -0
- package/package.json +3 -1
- package/.next/server/chunks/0_g__next_1qpfvou._.js +0 -158
- package/.next/server/chunks/0_g__next_1qpfvou._.js.map +0 -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]__05us508._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__09oyvwa._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__09oyvwa._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__0b6w_wb._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__0cxmrop._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__0cxmrop._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__0exzf-v._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__0exzf-v._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__0fn-a8c._.js +0 -126
- package/.next/server/chunks/[root-of-the-server]__0fn-a8c._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__0gnil0m._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__0gnil0m._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__0hg1r2b._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__0hk-9ll._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__0hk-9ll._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__0i1yba1._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__0i1yba1._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__0khz7sy._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__0khz7sy._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__0lf11mz._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__0lf11mz._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__0lix3ru._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__0lix3ru._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__0pvi3ku._.js +0 -126
- package/.next/server/chunks/[root-of-the-server]__0pvi3ku._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__0pz59qo._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__0rggulw._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__0s8v5i-._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__0s8v5i-._.js.map +0 -1
- 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/[root-of-the-server]__0vf-0gp._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__0xldguc._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__0xldguc._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__11nbc9e._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__11rp-qx._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__11rp-qx._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__15c5snv._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__15c5snv._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__18dt3sr._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__1a7d63a._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__1a7d63a._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__1e68zmx._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__1e68zmx._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__1ef-hw_._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__1ef-hw_._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__1jel07j._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__1jel07j._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__1la-6xe._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__1la-6xe._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__1p6-0l0._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__1pjwaan._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__1qcy2l0._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__1qcy2l0._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__1r_0uma._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__1skrybv._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__1vnine1._.js +0 -126
- package/.next/server/chunks/[root-of-the-server]__1vnine1._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__1wbho9e._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__1wcd2x9._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__1zhd93r._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__1zhd93r._.js.map +0 -1
- package/.next/server/chunks/ssr/_0kob2si._.js +0 -151
- package/.next/server/chunks/ssr/_0kob2si._.js.map +0 -1
- package/.next/server/chunks/ssr/_0me5_6x._.js +0 -3
- package/.next/server/chunks/ssr/_0me5_6x._.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/_190c11r._.js +0 -3
- package/.next/server/chunks/ssr/_190c11r._.js.map +0 -1
- package/.next/server/chunks/ssr/_1cz8dnu._.js +0 -3
- package/.next/server/chunks/ssr/_1cz8dnu._.js.map +0 -1
- package/.next/server/chunks/ssr/_1feybpz._.js +0 -3
- package/.next/server/chunks/ssr/_1feybpz._.js.map +0 -1
- package/.next/server/chunks/ssr/_1r_t_wi._.js +0 -3
- 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/03tzhv775qv5m.js +0 -1
- package/.next/static/chunks/05rjl54wa6y43.js +0 -1
- package/.next/static/chunks/1b9r_vdcewfu7.js +0 -1
- package/.next/static/chunks/1c459q7xpgq6r.js +0 -3
- package/.next/static/chunks/1c5ibgojv8jdi.js +0 -3
- package/.next/static/chunks/1c_8t2kecjnua.js +0 -1
- package/.next/static/chunks/1pmgcotwq-_yh.js +0 -1
- package/.next/static/chunks/1v63qs4kxxcfh.js +0 -1
- package/.next/static/chunks/2-0lpccy0f8bk.js +0 -2
- package/.next/static/chunks/263i_dcdizuvd.js +0 -1
- package/.next/static/chunks/2mf5us3y9wd9g.js +0 -1
- package/.next/static/chunks/36s2k2k_w-or8.js +0 -1
- package/.next/static/chunks/37u2gjz5dzhep.js +0 -1
- package/.next/static/chunks/3ctec-7mnm19m.js +0 -1
- package/.next/static/chunks/3rtr962aa09nh.js +0 -12
- package/.next/static/chunks/42c9smmpcu4re.js +0 -1
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0-r4g2t._.js.map → 11mp_@anthropic-ai_sdk_0-smxh7._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_01gyja3._.js.map → 11mp_@anthropic-ai_sdk_0-upxuo._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_02lx_j3._.js.map → 11mp_@anthropic-ai_sdk_00stvd0._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_05iv23g._.js.map → 11mp_@anthropic-ai_sdk_05tlp4j._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_05oneea._.js.map → 11mp_@anthropic-ai_sdk_06i1jku._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_07fgg-l._.js.map → 11mp_@anthropic-ai_sdk_06pqlwo._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0_5gzfy._.js.map → 11mp_@anthropic-ai_sdk_06q_bm6._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0_jynr-._.js.map → 11mp_@anthropic-ai_sdk_098dref._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0aykesf._.js.map → 11mp_@anthropic-ai_sdk_09q07e_._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0br_1fc._.js.map → 11mp_@anthropic-ai_sdk_09r9wsn._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0cd5lu7._.js.map → 11mp_@anthropic-ai_sdk_0_rnqa6._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0ckxhy7._.js.map → 11mp_@anthropic-ai_sdk_0ch0mdl._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0e5qkuv._.js.map → 11mp_@anthropic-ai_sdk_0didq3m._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0el8pm6._.js.map → 11mp_@anthropic-ai_sdk_0dwtv_z._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0i4w8fv._.js.map → 11mp_@anthropic-ai_sdk_0e8sqia._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0i7ckik._.js.map → 11mp_@anthropic-ai_sdk_0gk-rze._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0l1p4c6._.js.map → 11mp_@anthropic-ai_sdk_0gywxp1._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0m-xqs_._.js.map → 11mp_@anthropic-ai_sdk_0h4l0yx._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0nltdmf._.js.map → 11mp_@anthropic-ai_sdk_0hjmy82._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0qxmzg8._.js.map → 11mp_@anthropic-ai_sdk_0jbmnx_._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0spr_aj._.js.map → 11mp_@anthropic-ai_sdk_0l7teck._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0th0pyh._.js.map → 11mp_@anthropic-ai_sdk_0ldf-lc._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0x21fif._.js.map → 11mp_@anthropic-ai_sdk_0oe9p6l._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1-7bj56._.js.map → 11mp_@anthropic-ai_sdk_0ppgi2h._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1-efoj1._.js.map → 11mp_@anthropic-ai_sdk_0ydb8nm._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_13vu693._.js.map → 11mp_@anthropic-ai_sdk_11hsr1e._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_13w62gi._.js.map → 11mp_@anthropic-ai_sdk_14pgcis._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1887ce1._.js.map → 11mp_@anthropic-ai_sdk_15_sqq8._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1_jq3yb._.js.map → 11mp_@anthropic-ai_sdk_16up-b0._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1agvp6h._.js.map → 11mp_@anthropic-ai_sdk_1_jm94w._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1b1-3vt._.js.map → 11mp_@anthropic-ai_sdk_1aswx0v._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1ekldtb._.js.map → 11mp_@anthropic-ai_sdk_1bkea9c._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1ezcndt._.js.map → 11mp_@anthropic-ai_sdk_1d41_6l._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1gr-orf._.js.map → 11mp_@anthropic-ai_sdk_1d959rx._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1hf-884._.js.map → 11mp_@anthropic-ai_sdk_1eughke._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1ndwnmb._.js.map → 11mp_@anthropic-ai_sdk_1ev29eb._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1rdesfd._.js.map → 11mp_@anthropic-ai_sdk_1faxy2m._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1s8h60-._.js.map → 11mp_@anthropic-ai_sdk_1lginb1._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1tgk9wk._.js.map → 11mp_@anthropic-ai_sdk_1pg6fky._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1uugb45._.js.map → 11mp_@anthropic-ai_sdk_1qfho5e._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1vcxmui._.js.map → 11mp_@anthropic-ai_sdk_1r9e6jv._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1x63qpm._.js.map → 11mp_@anthropic-ai_sdk_1tjlpeq._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1y5oj_h._.js.map → 11mp_@anthropic-ai_sdk_1wcdj4f._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1z0q4jj._.js.map → 11mp_@anthropic-ai_sdk_1x25dnb._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_20j6dn7._.js.map → 11mp_@anthropic-ai_sdk_1ywjkuh._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_00nr0dy._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_07rnikd._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_06kgcr0._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_0cxqkzo._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_07kod-g._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_0iemvsj._.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_0losy1p._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_0dr79hc._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_0q2-o56._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_0ew4_uw._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_0v9tonm._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_0iy714m._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_0ve_28v._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_0n6aq49._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_0vta7f6._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_0ncvuil._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_0xme80s._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_0vilstf._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_12tnhho._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_0ybdfbv._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_14-nnf3._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_0z31-c0._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_14e0xcw._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_0zu51ny._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_1cbywiw._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_13-fsm5._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_1d4fc7y._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_13lk7wf._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_1e89sld._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_1ao3e3l._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_1emt011._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_1ck6z1z._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_1jgaffx._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_1dm3so9._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_1m9p_w8._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_1jxtz_6._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_1mtv1gy._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_1pdl5qg._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_1plmrbl._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_1tzpss1._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_1toqkb5._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_1x_0sf4._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_1yc8ml3._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_1x_fy5x._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_1ycnogk._.js.map} +0 -0
- /package/.next/server/chunks/{[root-of-the-server]__0rikmqn._.js.map → [root-of-the-server]__0adl8c2._.js.map} +0 -0
- /package/.next/server/chunks/{[root-of-the-server]__08v3p50._.js.map → [root-of-the-server]__0r_831n._.js.map} +0 -0
- /package/.next/server/chunks/{[root-of-the-server]__0wc_gnr._.js.map → [root-of-the-server]__0tzsbyx._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_1xx8_-m._.js.map → [root-of-the-server]__1_q8upn._.js.map} +0 -0
- /package/.next/server/chunks/{[root-of-the-server]__1yh-4vk._.js.map → [root-of-the-server]__1hz94ca._.js.map} +0 -0
- /package/.next/server/chunks/{[root-of-the-server]__06ndlro._.js.map → [root-of-the-server]__1pf07ha._.js.map} +0 -0
- /package/.next/server/chunks/{[root-of-the-server]__0zy73pu._.js.map → _next-internal_server_app_api_memory_restore_route_actions_0679kmo.js.map} +0 -0
- /package/.next/server/chunks/{ssr/0_nd_mermaid_dist_mermaid_core_mjs_0y_edkq._.js.map → _next-internal_server_app_api_memory_versions_route_actions_13mix75.js.map} +0 -0
- /package/.next/server/chunks/ssr/{1u84_katex_dist_katex_mjs_0yg8zto._.js.map → 0_nd_mermaid_dist_mermaid_core_mjs_1trh599._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{_1r_t_wi._.js.map → 1u84_katex_dist_katex_mjs_0wukkxe._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{[root-of-the-server]__08z0szh._.js.map → [root-of-the-server]__0p_ieww._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{[root-of-the-server]__1wdwnnp._.js.map → [root-of-the-server]__1ecvjg8._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules__pnpm_00f4yhs._.js.map → _next-internal_server_app_(app)_getting-started_page_actions_18jod7i.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules__pnpm_0j_-le7._.js.map → _next-internal_server_app_welcome_page_actions_1unjea7.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules__pnpm_03mp7qw._.js.map → node_modules__pnpm_0-6sq9f._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules__pnpm_0jampur._.js.map → node_modules__pnpm_0-vta96._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules__pnpm_0zz55xq._.js.map → node_modules__pnpm_04qn321._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules__pnpm_0tn5pg3._.js.map → node_modules__pnpm_06r-oci._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules__pnpm_0iu4132._.js.map → node_modules__pnpm_0fe8aya._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules__pnpm_0oyo3yo._.js.map → node_modules__pnpm_0hpufx1._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules__pnpm_0x5wj-4._.js.map → node_modules__pnpm_0kv8p99._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules__pnpm_06_8fr8._.js.map → node_modules__pnpm_0m-_au1._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules__pnpm_1zme4rg._.js.map → node_modules__pnpm_0mrjd3b._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules__pnpm_0mqeoh-._.js.map → node_modules__pnpm_0p2ufg5._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules__pnpm_03mpmzx._.js.map → node_modules__pnpm_0r2omyh._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules__pnpm_0_e05ka._.js.map → node_modules__pnpm_0uh9zwf._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules__pnpm_035haet._.js.map → node_modules__pnpm_0ujugl_._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules__pnpm_0lkvbt-._.js.map → node_modules__pnpm_0v-_iaj._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules__pnpm_0rq9x9q._.js.map → node_modules__pnpm_0xin4nu._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules__pnpm_139-v1i._.js.map → node_modules__pnpm_1-zfovp._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules__pnpm_1i_chik._.js.map → node_modules__pnpm_11p7w0z._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules__pnpm_1jgju12._.js.map → node_modules__pnpm_16l16l0._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules__pnpm_1n9oeu0._.js.map → node_modules__pnpm_16vl5yb._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules__pnpm_1ydeqw6._.js.map → node_modules__pnpm_1alnvos._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules__pnpm_03an60e._.js.map → node_modules__pnpm_1e_74v6._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules__pnpm_2045l51._.js.map → node_modules__pnpm_1kvkjrs._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules__pnpm_1ws3ez9._.js.map → node_modules__pnpm_1uly489._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules__pnpm_1zum4yd._.js.map → node_modules__pnpm_1xntybk._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules__pnpm_09nd7ia._.js.map → node_modules__pnpm_20g30gl._.js.map} +0 -0
- /package/.next/static/{5hNes2Kijr5IvUPPw-ez9 → BQD2S1kA-_gIYFyMKyJ2F}/_buildManifest.js +0 -0
- /package/.next/static/{5hNes2Kijr5IvUPPw-ez9 → BQD2S1kA-_gIYFyMKyJ2F}/_clientMiddlewareManifest.js +0 -0
- /package/.next/static/{5hNes2Kijr5IvUPPw-ez9 → BQD2S1kA-_gIYFyMKyJ2F}/_ssgManifest.js +0 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
module.exports=[690793,a=>{"use strict";var b=a.i(662145),c=a.i(174897),d=a.i(365465),e=a.i(152716),f=a.i(340933),g=a.i(795667),h=a.i(926128),i=a.i(256857);let j={name:"layout-grid",size:24,node:[["rect",{width:"7",height:"7",x:"3",y:"3",rx:"1",key:"1g98yp"}],["rect",{width:"7",height:"7",x:"14",y:"3",rx:"1",key:"6d4xhi"}],["rect",{width:"7",height:"7",x:"14",y:"14",rx:"1",key:"nxv5o0"}],["rect",{width:"7",height:"7",x:"3",y:"14",rx:"1",key:"1bb6yr"}]]};j.node;let k=(0,i.default)(j);var l=a.i(553415),m=a.i(200382),n=a.i(551729),o=a.i(913975),p=a.i(544394),q=a.i(21215),r=a.i(699570);let s=a=>"done"===a||"cancelled"===a;function t(a,b){let c=new Map(b.map(a=>[a.id,a])),d=a.tasks.map(a=>c.get(a)).filter(a=>!!a),e=a=>[...new Set((a.dependsOn.match(/\bT\d+\b/gi)??[]).map(a=>a.toUpperCase()))].filter(a=>{let b=c.get(a);return!b||!s(b.status)});for(let a of d)if("todo"===a.status&&!e(a).length)return{kind:"ready",taskId:a.id};if(d.every(a=>s(a.status)))return{kind:"finished"};let f=new Set(a.tasks),g=new Map,h=a=>{if(g.has(a))return g.get(a)??!1;g.set(a,!1);let b=c.get(a),d=!!b&&"blocked"!==b.status&&"paused"!==b.status&&"review"!==b.status&&("todo"!==b.status||f.has(a)&&e(b).every(h));return g.set(a,d),d},i=[];for(let b of a.tasks){let a=c.get(b);if(a){if("in-progress"===a.status)i.push({taskId:b,reason:`${b} is in progress (claimed)`});else if("blocked"===a.status)i.push({taskId:b,reason:`${b} is blocked`});else if("paused"===a.status)i.push({taskId:b,reason:`${b} is paused — needs a human to resume it`});else if("review"===a.status)i.push({taskId:b,reason:`${b} in review — needs a human`});else if("todo"===a.status){let d=e(a).map(a=>`${a} (${c.get(a)?.status??"missing"})`);i.push({taskId:b,reason:`${b} waits on ${d.join(", ")}`})}}else i.push({taskId:b,reason:`${b} has no task file`})}return{kind:"waiting",waiting:i,needsHuman:i.every(a=>!h(a.taskId))}}var u=a.i(452696),v=a.i(368114),w=a.i(525395),x=a.i(618940),y=a.i(815122),z=a.i(581040);function A({items:a,today:d,onSelect:e,onItemContextMenu:f,progressById:g}){let h=new Map(a.filter(a=>null===a.parent).sort((a,b)=>a.order-b.order).map((a,b)=>[a.id,b+1])),i=(0,c.useMemo)(()=>(0,z.buildTimeline)(a,d),[a,d]),j=(0,c.useRef)(null);(0,c.useEffect)(()=>{let a=j.current;a&&(a.scrollLeft=Math.max(0,i.todayX-(a.clientWidth-200)/3))},[i.todayX]);let k=i.lanes.some(a=>a.markers.length>0);return(0,b.jsxs)("div",{className:"flex flex-1 min-h-0 flex-col",children:[(0,b.jsx)("div",{ref:j,className:"relative flex-1 min-h-0 overflow-auto",children:(0,b.jsxs)("div",{className:"relative",style:{width:200+i.width,minHeight:"100%"},children:[(0,b.jsxs)("div",{className:"pointer-events-none absolute inset-y-0",style:{left:200,width:i.width},children:[i.months.map(a=>(0,b.jsx)("div",{className:"absolute inset-y-0 border-l border-border",style:{left:a.x}},a.x)),(0,b.jsx)("div",{className:"absolute inset-y-0 left-0 bg-surface/50",style:{width:i.todayX}}),(0,b.jsx)("div",{className:"absolute inset-y-0 w-px bg-accent shadow-[0_0_12px_rgb(var(--rgb-accent)/0.8)]",style:{left:i.todayX},children:(0,b.jsx)("span",{className:"absolute -translate-x-1/2 rounded-full bg-accent px-2 py-0.5 font-mono text-[10px] uppercase tracking-wider text-accent-fg",style:{top:42},children:"Today"})})]}),(0,b.jsxs)("div",{className:"sticky top-0 z-20 flex border-b border-border bg-bg",style:{height:36},children:[(0,b.jsx)("div",{className:"sticky left-0 z-10 shrink-0 bg-bg",style:{width:200}}),(0,b.jsx)("div",{className:"relative",children:i.months.map(a=>(0,b.jsx)("span",{className:"absolute top-3 whitespace-nowrap pl-2 font-mono text-[10px] uppercase tracking-widest text-muted",style:{left:a.x},children:a.label},a.x))})]}),i.lanes.map(a=>(0,b.jsxs)("div",{className:"relative flex border-b border-border",children:[(0,b.jsx)(B,{item:a.item,chapter:h.get(a.item.id),progress:g[a.item.id],onSelect:e,onContextMenu:f}),(0,b.jsx)("div",{className:"relative",style:{width:i.width,height:a.rows*z.LANE_ROW_H+12},children:a.markers.map(a=>(0,b.jsxs)("button",{type:"button",onClick:()=>e(a.item.id),onContextMenu:b=>f?.(a.item.id,b),title:`${a.item.id} \xb7 ${a.item.title} \xb7 due ${a.item.due}${"overdue"===a.state?" (overdue)":""}`,className:"group absolute flex items-center gap-1.5",style:{left:a.x-10,top:6+a.row*z.LANE_ROW_H},children:[a.horizon?(0,b.jsx)("span",{className:(0,v.cn)("h-4 w-4 rotate-45 border-2 border-accent","done"===a.item.status?"bg-accent":"bg-bg","overdue"===a.state&&"border-danger")}):(0,b.jsx)("span",{className:(0,v.cn)("rounded-full","overdue"===a.state&&"ring-2 ring-danger ring-offset-1 ring-offset-bg"),children:(0,b.jsx)(x.StatusDot,{status:a.item.status})}),(0,b.jsxs)("span",{className:(0,v.cn)("flex max-w-[150px] flex-col rounded-md border px-2 py-0.5 text-left transition-colors","in-progress"===a.item.status?"border-accent/50 bg-surface shadow-[0_6px_18px_-10px_rgb(var(--rgb-accent)/0.7)]":"done"===a.item.status?"border-border bg-surface/60":"border-dashed border-border2 bg-bg","group-hover:border-accent"),children:[(0,b.jsxs)("span",{className:"flex items-center gap-1",children:[(0,b.jsx)("span",{className:(0,v.cn)("truncate text-xs","done"===a.item.status?"text-muted":"text-txt",a.horizon&&"font-semibold"),children:a.item.title}),(0,b.jsx)(y.AgentDot,{attach:{kind:"epic",id:a.item.id}})]}),(0,b.jsx)("span",{className:(0,v.cn)("font-mono text-[10px]","overdue"===a.state?"text-danger":"soon"===a.state?"text-amber":"text-muted"),children:(0,z.formatDay)(a.item.due)})]})]},a.item.id))})]},a.item.id)),!k&&(0,b.jsx)("p",{className:"px-6 py-8 text-sm text-muted",style:{marginLeft:200},children:"No due dates yet — open an item and set a Due date."})]})}),i.undated.length>0&&(0,b.jsxs)("div",{className:"max-h-28 shrink-0 overflow-y-auto border-t border-border bg-surface px-4 py-2",children:[(0,b.jsxs)("p",{className:"mb-2 font-mono text-[10px] uppercase tracking-widest text-muted",children:["No due date · ",i.undated.length]}),(0,b.jsx)("div",{className:"flex flex-wrap gap-1.5",children:i.undated.map(a=>(0,b.jsxs)("button",{type:"button",onClick:()=>e(a.id),onContextMenu:b=>f?.(a.id,b),className:"flex items-center gap-1 rounded-md border border-border px-1.5 py-0.5 text-xs text-muted hover:border-accent hover:text-txt",children:[(0,b.jsx)(x.StatusDot,{status:a.status}),a.title,(0,b.jsx)(y.AgentDot,{attach:{kind:"epic",id:a.id}})]},a.id))})]})]})}function B({item:a,chapter:c,progress:d,onSelect:e,onContextMenu:f}){return(0,b.jsxs)("button",{type:"button",onClick:()=>e(a.id),onContextMenu:b=>f?.(a.id,b),className:"sticky left-0 z-10 flex shrink-0 items-center gap-3 border-r border-border bg-surface px-3 text-left hover:bg-surface2",style:{width:200},children:[(0,b.jsx)("span",{className:(0,v.cn)("font-mono text-lg font-semibold tabular-nums","in-progress"===a.status?"text-accent":"done"===a.status?"text-teal":"text-muted"),children:c?String(c).padStart(2,"0"):"··"}),(0,b.jsxs)("span",{className:"flex min-w-0 flex-1 flex-col gap-1",children:[(0,b.jsx)("span",{className:"line-clamp-2 text-[11px] font-semibold uppercase leading-snug tracking-wider text-txt",children:a.title}),d&&(0,b.jsx)("span",{className:"h-1 overflow-hidden rounded-full bg-border",children:(0,b.jsx)("span",{className:"block h-full rounded-full bg-teal",style:{width:`${d.done/d.total*100}%`}})})]})]})}var C=a.i(453161),D=a.i(658978),E=a.i(156298),F=a.i(388637),G=a.i(717371);let H={name:"layers",size:24,node:[["path",{d:"M12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83z",key:"zw3jo"}],["path",{d:"M2 12a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 12",key:"1wduqc"}],["path",{d:"M2 17a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 17",key:"kqbvx6"}]],aliases:["layers-3"]};H.node;let I=(0,i.default)(H);var J=a.i(340753),K=a.i(441852),L=a.i(661661),M=a.i(892678),N=a.i(757061),O=a.i(866718),P=a.i(149350),Q=a.i(107742),R=a.i(685698),S=a.i(60084),T=a.i(717143),U=a.i(763747),V=a.i(28386),W=a.i(335732),X=a.i(890728);let Y=["planned","in-progress","paused","done"];function Z({item:a,items:c,actions:d}){let e=null===a.parent,f=c.filter(b=>null===b.parent&&b.id!==a.parent).sort((a,b)=>a.order-b.order),g=c.filter(b=>b.parent===a.id).length;return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)(W.DropdownMenuItem,{onSelect:()=>d.edit(a.id),children:[(0,b.jsx)(L.Pencil,{})," Edit",(0,b.jsx)(W.DropdownMenuShortcut,{children:(0,X.itemKeyLabel)("edit")})]}),(0,b.jsxs)(W.DropdownMenuSub,{children:[(0,b.jsxs)(W.DropdownMenuSubTrigger,{children:[(0,b.jsx)(x.StatusDot,{status:a.status})," Status",(0,b.jsx)(W.DropdownMenuShortcut,{children:(0,X.itemKeyLabel)("status")})]}),(0,b.jsx)(W.DropdownMenuSubContent,{children:Y.map(c=>(0,b.jsxs)(W.DropdownMenuItem,{disabled:c===a.status,onSelect:()=>d.setStatus(a.id,c),children:[(0,b.jsx)(x.StatusDot,{status:c})," ",x.STATUS_LABEL[c]]},c))})]}),!e&&f.length>0&&(0,b.jsxs)(W.DropdownMenuSub,{children:[(0,b.jsxs)(W.DropdownMenuSubTrigger,{children:[(0,b.jsx)(T.FolderInput,{})," Move to horizon"]}),(0,b.jsx)(W.DropdownMenuSubContent,{className:"max-h-72 overflow-y-auto",children:f.map(c=>(0,b.jsxs)(W.DropdownMenuItem,{onSelect:()=>d.move(a.id,c.id),children:[(0,b.jsx)("span",{className:"font-mono text-[11px] text-muted",children:c.id})," ",c.title]},c.id))})]}),e&&(0,b.jsxs)(W.DropdownMenuItem,{onSelect:()=>d.addEpic(a.id),children:[(0,b.jsx)(m.Plus,{})," Add epic"]}),(0,b.jsxs)(W.DropdownMenuItem,{onSelect:()=>d.duplicate(a.id),children:[(0,b.jsx)(S.Copy,{})," Duplicate",(0,b.jsx)(W.DropdownMenuShortcut,{children:(0,X.itemKeyLabel)("duplicate")})]}),(0,b.jsx)(W.DropdownMenuSeparator,{}),!e&&(0,b.jsxs)(W.DropdownMenuItem,{onSelect:()=>d.chat(a.id),children:[(0,b.jsx)(K.MessageSquare,{})," Chat about it",(0,b.jsx)(W.DropdownMenuShortcut,{children:(0,X.itemKeyLabel)("chat")})]}),(0,b.jsxs)(W.DropdownMenuItem,{onSelect:()=>d.openFile(a.file),children:[(0,b.jsx)(h.FileText,{})," Open file"]}),(0,b.jsx)(W.DropdownMenuSeparator,{}),g>0?(0,b.jsxs)(W.DropdownMenuItem,{disabled:!0,className:"flex-col items-start gap-0",children:[(0,b.jsxs)("span",{className:"flex items-center gap-2",children:[(0,b.jsx)(V.Trash2,{})," Delete"]}),(0,b.jsxs)("span",{className:"pl-6 text-[11px]",children:["Move or delete its ",g," epic",1===g?"":"s"," first"]})]}):(0,b.jsxs)(W.DropdownMenuItem,{onSelect:()=>d.remove(a.id),className:"text-danger focus:text-danger",children:[(0,b.jsx)(V.Trash2,{})," Delete",(0,b.jsx)(W.DropdownMenuShortcut,{children:(0,X.itemKeyLabel)("remove")})]})]})}function $({item:a,items:c,actions:d,className:e,open:f,onOpenChange:g}){return(0,b.jsxs)(W.DropdownMenu,{open:f,onOpenChange:g,children:[(0,b.jsx)(W.DropdownMenuTrigger,{asChild:!0,children:(0,b.jsx)("button",{type:"button","aria-label":`Actions for ${a.id}`,className:(0,v.cn)("grid size-7 place-items-center rounded-md text-muted hover:bg-surface2 hover:text-txt",e),children:(0,b.jsx)(U.MoreHorizontal,{className:"size-4"})})}),(0,b.jsx)(W.DropdownMenuContent,{align:"end",className:"w-52",children:(0,b.jsx)(Z,{item:a,items:c,actions:d})})]})}function _({at:a,items:c,actions:d,onClose:e}){let f=a&&c.find(b=>b.id===a.id);return a&&f?(0,b.jsxs)(W.DropdownMenu,{open:!0,onOpenChange:a=>{a||e()},children:[(0,b.jsx)(W.DropdownMenuTrigger,{asChild:!0,children:(0,b.jsx)("span",{"aria-hidden":!0,className:"pointer-events-none fixed size-0",style:{left:a.x,top:a.y}})}),(0,b.jsx)(W.DropdownMenuContent,{align:"start",className:"w-52",children:(0,b.jsx)(Z,{item:f,items:c,actions:d})})]},`${a.id}:${a.x}:${a.y}`):null}var aa=a.i(813722),ab=a.i(192698),ac=a.i(787714),ad=a.i(891397),ae=a.i(269769);let af=["planned","in-progress","paused","done"],ag="w-full rounded-md border border-border bg-bg px-3 py-2 text-sm text-txt focus:outline-hidden focus:ring-1 focus:ring-accent disabled:opacity-50",ah="text-xs font-medium text-muted",ai="font-mono text-[10px] uppercase tracking-widest text-muted";function aj({item:a,onClose:c,...d}){return(0,b.jsx)(N.Sheet,{open:!!a,onOpenChange:a=>{a||c()},children:(0,b.jsx)(N.SheetContent,{className:"w-full sm:w-[480px] sm:max-w-[480px] gap-0 bg-surface border-border text-txt flex flex-col overflow-y-auto p-0",children:a&&(0,b.jsx)(ak,{item:a,onClose:c,...d},a.id)})})}function ak(a){return a.editing?(0,b.jsx)(am,{...a,onCancel:()=>a.onEditingChange(!1)}):(0,b.jsx)(al,{...a,onEdit:()=>a.onEditingChange(!0)})}function al({item:a,items:d,onClose:e,onAddFeature:f,onEditRaw:i,onSelect:j,tasksById:k,progressById:l,onEdit:n,actions:o,onSave:p}){let q=null===a.parent,s=d.find(b=>b.id===a.parent),t=d.filter(b=>b.parent===a.id).sort((a,b)=>a.order-b.order),z=l[a.id],A=(0,u.localToday)(),{chats:B,showAbout:C}=(0,R.useChats)(),H=q?void 0:(0,Q.chatFor)(B,{kind:"epic",id:a.id}),O=!q&&0===a.tasks.length&&!H,[S,T]=(0,c.useState)(!1),U=b=>{p(a.id,b).then(a=>{a&&(0,ae.toast)(a)})};return(0,X.useItemCommands)(`${a.id} \xb7 ${a.title}`,[{action:"edit",label:"Edit",run:n},{action:"status",label:"Change status…",run:()=>T(!0)},{action:"duplicate",label:"Duplicate",run:()=>o.duplicate(a.id)},...q?[]:[{action:"chat",label:"Chat about it",run:()=>o.chat(a.id)}],...t.length?[]:[{action:"remove",label:"Delete",run:()=>o.remove(a.id)}]]),(0,b.jsxs)("div",{className:"flex min-h-full flex-col",children:[(0,b.jsx)(ab.ItemPanelHeader,{className:(0,v.cn)("px-6","in-progress"===a.status&&"bg-[linear-gradient(180deg,rgb(var(--rgb-accent)/0.08),transparent)]"),kicker:(0,b.jsx)(N.SheetDescription,{asChild:!0,children:(0,b.jsxs)("div",{className:"flex min-w-0 items-center gap-1",children:[s&&(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("button",{type:"button",onClick:()=>j(s.id),className:"truncate hover:text-txt",children:s.title}),(0,b.jsx)(E.ChevronRight,{className:"h-3 w-3 shrink-0"})]}),(0,b.jsxs)("span",{className:"shrink-0",children:[a.id," · ",q?"horizon":"epic"]}),(0,b.jsx)(y.AgentMark,{attach:{kind:"epic",id:a.id}})]})}),title:(0,b.jsx)(N.SheetTitle,{className:"text-xl font-semibold leading-tight text-txt",children:a.title}),menu:(0,b.jsx)($,{item:a,items:d,actions:o,open:S,onOpenChange:T}),properties:[{label:"Status",icon:F.CircleDashed,value:(0,b.jsx)(ac.InlineSelect,{label:`Status of ${a.id}`,value:a.status,onChange:b=>o.setStatus(a.id,b),options:af.map(a=>({value:a,label:x.STATUS_LABEL[a],node:(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(x.StatusDot,{status:a}),x.STATUS_LABEL[a]]})})),children:(0,b.jsx)(x.StatusPill,{status:a.status})})},{label:"Priority",icon:G.Flag,value:(0,b.jsx)(ad.PriorityField,{label:`Priority of ${a.id}`,value:a.priority??null,onChange:a=>U({priority:a})})},{label:"Owner",icon:M.User,value:(0,b.jsx)(ac.InlineSelect,{label:`Owner of ${a.id}`,value:a.owner??"",onChange:a=>U({owner:a||null}),options:[{value:"human",label:"Human",node:(0,b.jsx)(aa.OwnerChip,{owner:"human",className:"text-xs"})},...[...new Set(["ai:claude",...a.owner?.startsWith("ai:")?[a.owner]:[]])].map(a=>({value:a,label:a,node:(0,b.jsx)(aa.OwnerChip,{owner:a,className:"text-xs"})})),{value:"",label:"No owner",node:(0,b.jsx)("span",{className:"text-muted",children:"No owner"})}],children:a.owner?(0,b.jsx)(aa.OwnerChip,{owner:a.owner,className:"text-xs"}):(0,b.jsx)("span",{className:"text-muted",children:"—"})})},{label:"Due",icon:D.Calendar,value:(0,b.jsx)(ac.InlineDate,{label:`Due date of ${a.id}`,value:a.due,onChange:a=>U({due:a}),children:a.due?(0,b.jsx)(x.DueChip,{due:a.due,state:(0,u.dueState)(a.due,a.status,A)}):(0,b.jsx)("span",{className:"text-muted",children:"—"})})},{label:q?"Epics":"Tasks",icon:q?I:J.ListChecks,value:(0,b.jsx)("span",{className:"font-mono",children:q?t.length:a.tasks.length})}],children:z&&(0,b.jsxs)("div",{className:"mt-2 flex items-end gap-4",children:[(0,b.jsxs)("p",{className:"font-mono text-3xl font-semibold leading-none tabular-nums text-txt",children:[Math.round(z.done/z.total*100),(0,b.jsx)("span",{className:"text-base text-muted",children:"%"})]}),(0,b.jsxs)("div",{className:"flex-1 pb-1",children:[(0,b.jsxs)("p",{className:"mb-1.5 font-mono text-[10px] text-muted",children:[z.done," of ",z.total,q?"":" tasks"," done"]}),q?(0,b.jsx)("div",{className:"h-1.5 overflow-hidden rounded-full bg-border",children:(0,b.jsx)("div",{className:"h-full rounded-full bg-teal",style:{width:`${z.done/z.total*100}%`}})}):(0,b.jsx)(x.SegmentedProgress,{statuses:a.tasks.map(a=>k[a]?.status).filter(a=>!!a&&"cancelled"!==a)})]})]})}),(0,b.jsxs)("div",{className:"flex flex-1 flex-col gap-6 px-6 py-5",children:[!q&&a.tasks.length>0&&(0,b.jsx)(an,{item:a,tasksById:k,onOpen:i}),q&&(0,b.jsxs)("section",{className:"flex flex-col gap-2",children:[(0,b.jsxs)("p",{className:ai,children:["Epics · ",t.length]}),0===t.length&&(0,b.jsx)("p",{className:"text-sm text-muted",children:"No epics yet."}),(0,b.jsx)("ul",{className:"-mx-2 flex flex-col",children:t.map(a=>{let c=l[a.id];return(0,b.jsx)("li",{children:(0,b.jsxs)("button",{type:"button",onClick:()=>j(a.id),className:"flex w-full items-center gap-3 rounded-md px-2 py-2 text-left hover:bg-surface2",children:[(0,b.jsx)(x.StatusDot,{status:a.status}),(0,b.jsx)("span",{className:"shrink-0 font-mono text-[11px] text-muted",children:a.id}),(0,b.jsx)("span",{className:(0,v.cn)("min-w-0 flex-1 truncate text-sm","done"===a.status?"text-muted":"text-txt"),children:a.title}),c&&(0,b.jsxs)("span",{className:"shrink-0 font-mono text-[10px] text-muted",children:[c.done,"/",c.total]})]})},a.id)})})]}),(0,b.jsxs)("section",{className:"flex flex-col gap-2",children:[(0,b.jsx)("p",{className:ai,children:"Brief"}),a.body.trim()?(0,b.jsx)(P.MarkdownRenderer,{content:a.body,className:"text-sm"}):(0,b.jsx)("p",{className:"text-sm text-muted",children:"No description. Edit to add the outcome, scope and “done when”."})]})]}),(0,b.jsxs)("footer",{className:"sticky bottom-0 flex flex-wrap items-center gap-2 border-t border-border bg-surface px-6 py-3",children:[O&&(0,b.jsxs)(r.Button,{size:"sm",onClick:()=>{e(),(0,w.askAgent)(`Break down epic ${a.id} into tasks.`)},className:"bg-accent text-accent-fg hover:bg-accent/90",children:[(0,b.jsx)(g.Bot,{})," Break down with agent"]}),!q&&(0,b.jsxs)(r.Button,{size:"sm",variant:O?"outline":"default",onClick:()=>{e(),C({kind:"epic",id:a.id})},className:(0,v.cn)(!O&&"bg-accent text-accent-fg hover:bg-accent/90"),children:[(0,b.jsx)(K.MessageSquare,{})," ",H?"Open chat":"Chat"]}),q&&(0,b.jsxs)(r.Button,{size:"sm",onClick:()=>f(a.id),className:"bg-accent text-accent-fg hover:bg-accent/90",children:[(0,b.jsx)(m.Plus,{})," Add epic"]}),(0,b.jsxs)(r.Button,{size:"sm",variant:"outline",onClick:n,children:[(0,b.jsx)(L.Pencil,{})," Edit"]}),(0,b.jsxs)(r.Button,{size:"sm",variant:"ghost",onClick:()=>i(a.file),className:"ml-auto text-muted hover:text-txt",children:[(0,b.jsx)(h.FileText,{})," Open file"]})]})]})}function am({item:a,items:d,onClose:e,onSave:f,onDelete:g,onCancel:h}){let[i]=(0,c.useState)(a),[j,k]=(0,c.useState)(a.title),[l,m]=(0,c.useState)(a.status),[n,o]=(0,c.useState)(a.parent??""),[p,q]=(0,c.useState)(String(a.order)),[s,t]=(0,c.useState)(a.tasks.join(", ")),[u,v]=(0,c.useState)(a.due??""),[w,x]=(0,c.useState)(a.body),[y,z]=(0,c.useState)(null),[A,B]=(0,c.useState)(!1),C=d.some(b=>b.parent===a.id),D=d.filter(b=>null===b.parent&&b.id!==a.id),E=null===a.parent,F=null!==a.parent&&!D.some(b=>b.id===a.parent);async function G(a){B(!0),z(null);let b=await a();return B(!1),b&&z(b),!b}async function H(){let b={},c=j.trim()||i.title;if(c!==i.title&&(b.title=c),l!==i.status&&(b.status=l),(n||null)!==i.parent&&(b.parent=n||null),p.trim()!==String(i.order)){let a=Number(p);if(""===p.trim()||!Number.isFinite(a))return void z("Order must be a number");b.order=a}let d=s.split(",").map(a=>a.trim()).filter(Boolean);(d.join(",")!==i.tasks.join(",")&&(b.tasks=d),(u||null)!==i.due&&(b.due=u||null),w!==i.body&&(b.body=w),0===Object.keys(b).length)?h():await G(()=>f(a.id,b))&&e()}async function I(){await G(()=>g(a.id))&&e()}return(0,b.jsxs)("div",{className:"flex min-h-full flex-col",children:[(0,b.jsxs)("div",{className:"border-b border-border px-6 pb-4 pt-6 pr-12",children:[(0,b.jsxs)(N.SheetDescription,{className:"font-mono text-[11px] text-muted",children:["Editing ",a.id," · ",E?"horizon":"epic"]}),(0,b.jsx)(N.SheetTitle,{className:"mt-1 text-base text-txt",children:a.title})]}),(0,b.jsxs)("div",{className:"flex flex-1 flex-col gap-4 px-6 py-5",children:[(0,b.jsxs)("label",{className:"flex flex-col gap-1",children:[(0,b.jsx)("span",{className:ah,children:"Title"}),(0,b.jsx)(O.Input,{value:j,onChange:a=>k(a.target.value),className:"bg-bg border-border text-txt"})]}),(0,b.jsxs)("div",{className:"grid grid-cols-3 gap-3",children:[(0,b.jsxs)("label",{className:"flex flex-col gap-1",children:[(0,b.jsx)("span",{className:ah,children:"Status"}),(0,b.jsx)("select",{value:l,onChange:a=>m(a.target.value),className:ag,children:af.map(a=>(0,b.jsx)("option",{value:a,children:a},a))})]}),(0,b.jsxs)("label",{className:"flex flex-col gap-1",children:[(0,b.jsx)("span",{className:ah,children:"Parent"}),(0,b.jsxs)("select",{value:n,onChange:a=>o(a.target.value),disabled:C,title:C?"Items with children must stay on the spine":void 0,className:ag,children:[(0,b.jsx)("option",{value:"",children:"— (horizon)"}),F&&(0,b.jsxs)("option",{value:a.parent??"",children:[a.parent," · missing"]}),D.map(a=>(0,b.jsxs)("option",{value:a.id,children:[a.id," · ",a.title]},a.id))]})]}),(0,b.jsxs)("label",{className:"flex flex-col gap-1",children:[(0,b.jsx)("span",{className:ah,children:"Order"}),(0,b.jsx)(O.Input,{type:"number",step:10,value:p,onChange:a=>q(a.target.value),title:E?"Position on the spine":"Position within the branch",className:"bg-bg border-border text-txt"})]})]}),(0,b.jsxs)("label",{className:"flex flex-col gap-1",children:[(0,b.jsx)("span",{className:ah,children:"Due"}),(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)(O.Input,{type:"date",value:u,onChange:a=>v(a.target.value),className:"bg-bg border-border text-txt scheme-light dark:scheme-dark"}),u&&(0,b.jsx)("button",{type:"button",onClick:()=>v(""),className:"text-xs text-muted hover:text-txt",children:"Clear"})]})]}),(0,b.jsxs)("label",{className:"flex flex-col gap-1",children:[(0,b.jsx)("span",{className:ah,children:"Tasks"}),(0,b.jsx)(O.Input,{value:s,onChange:a=>t(a.target.value),placeholder:"T001, T012",className:"bg-bg border-border text-txt font-mono"})]}),(0,b.jsxs)("label",{className:"flex flex-col gap-1",children:[(0,b.jsx)("span",{className:ah,children:"Body (markdown)"}),(0,b.jsx)("textarea",{value:w,onChange:a=>x(a.target.value),rows:12,className:`${ag} font-mono resize-y`})]}),y&&(0,b.jsx)("p",{className:"text-xs text-danger",children:y})]}),(0,b.jsxs)("footer",{className:"sticky bottom-0 flex items-center gap-2 border-t border-border bg-surface px-6 py-3",children:[(0,b.jsx)(r.Button,{size:"sm",onClick:H,disabled:A,className:"bg-accent text-accent-fg hover:bg-accent/90",children:"Save"}),(0,b.jsx)(r.Button,{size:"sm",variant:"ghost",onClick:h,disabled:A,className:"text-txt",children:"Cancel"}),(0,b.jsx)(r.Button,{size:"sm",variant:"ghost",onClick:I,disabled:A,className:"ml-auto text-danger hover:text-danger",children:"Delete"})]})]})}function an({item:a,tasksById:c,onOpen:d}){let e=(0,u.localToday)(),f=t(a,Object.values(c)),g="ready"===f.kind?f.taskId:null,h="waiting"===f.kind?[...f.waiting].sort((a,b)=>Number(c[b.taskId]?.status==="todo")-Number(c[a.taskId]?.status==="todo")).map(a=>a.reason):[];return(0,b.jsxs)("section",{className:"flex flex-col gap-2",children:[(0,b.jsxs)("p",{className:ai,children:["Tasks · ",a.tasks.length]}),(0,b.jsx)("ul",{className:"-mx-2 flex flex-col",children:a.tasks.map(a=>{let f=c[a];if(!f)return(0,b.jsxs)("li",{className:"px-2 py-2 font-mono text-xs text-danger",children:[a," · missing task file"]},a);let h=f.id===g;return(0,b.jsxs)("li",{className:(0,v.cn)("group flex items-center rounded-md hover:bg-surface2",h&&"bg-accent/10 hover:bg-accent/15"),children:[(0,b.jsxs)("button",{type:"button",onClick:()=>d(f.file),className:"flex min-w-0 flex-1 items-center gap-3 px-2 py-2 text-left",children:[(0,b.jsx)("span",{title:f.status,className:(0,v.cn)("h-2 w-2 shrink-0 rounded-full",x.TASK_STATUS_BG[f.status])}),(0,b.jsx)("span",{className:"shrink-0 font-mono text-[11px] text-muted",children:f.id}),(0,b.jsx)("span",{className:(0,v.cn)("min-w-0 flex-1 truncate text-sm","cancelled"===f.status?"text-muted line-through":"done"===f.status?"text-muted":"text-txt"),children:f.title}),(0,b.jsx)(x.DueChip,{due:f.due,state:(0,u.dueState)(f.due,"done"===f.status?"done":"planned",e)}),h?(0,b.jsx)("span",{className:"shrink-0 font-mono text-[10px] uppercase tracking-wider text-accent",children:"Next up"}):f.size&&"—"!==f.size&&(0,b.jsx)("span",{className:"shrink-0 font-mono text-[10px] text-muted",children:f.size.split(" ")[0]}),(0,b.jsx)(y.AgentDot,{attach:{kind:"task",id:f.id}})]}),(0,b.jsx)(ao,{taskId:f.id})]},a)})}),h.length>0&&(0,b.jsxs)("p",{className:"truncate text-xs text-muted",title:h.join("\n"),children:[h[0],h.length>1&&` (+${h.length-1} more)`]})]})}function ao({taskId:a}){let{chats:c,showAbout:d}=(0,R.useChats)(),e=!!(0,Q.chatFor)(c,{kind:"task",id:a});return(0,b.jsx)("button",{type:"button",onClick:()=>d({kind:"task",id:a}),"aria-label":`${e?"Open chat":"Chat"} about ${a}`,title:e?`Open the chat about ${a}`:`Chat about ${a}`,className:(0,v.cn)("mr-1 grid size-7 shrink-0 place-items-center rounded-md text-muted transition-[opacity,color] duration-(--duration-fast) hover:bg-surface hover:text-accent focus-visible:opacity-100",e?"text-accent opacity-100":"opacity-0 group-hover:opacity-100"),children:(0,b.jsx)(K.MessageSquare,{className:"size-3.5"})})}var ap=a.i(814574);function aq({open:a,heading:d,onOpenChange:e,onSubmit:f}){let[g,h]=(0,c.useState)(""),[i,j]=(0,c.useState)(null),[k,l]=(0,c.useState)(!1);function m(a){a||(h(""),j(null)),e(a)}async function n(a){if(a.preventDefault(),!g.trim())return;l(!0);let b=await f(g.trim());l(!1),b?j(b):m(!1)}return(0,b.jsx)(ap.Dialog,{open:a,onOpenChange:m,children:(0,b.jsxs)(ap.DialogContent,{className:"max-w-sm bg-surface border-border text-txt",children:[(0,b.jsx)(ap.DialogTitle,{className:"text-sm font-semibold text-txt",children:d}),(0,b.jsxs)("form",{onSubmit:n,className:"flex flex-col gap-3",children:[(0,b.jsx)(O.Input,{autoFocus:!0,value:g,onChange:a=>h(a.target.value),placeholder:"Title",className:"bg-bg border-border text-txt"}),i&&(0,b.jsx)("p",{className:"text-xs text-danger",children:i}),(0,b.jsxs)("div",{className:"flex justify-end gap-2",children:[(0,b.jsx)(r.Button,{type:"button",variant:"ghost",size:"sm",onClick:()=>m(!1),children:"Cancel"}),(0,b.jsx)(r.Button,{type:"submit",size:"sm",disabled:k||!g.trim(),className:"bg-accent text-accent-fg hover:bg-accent/90",children:"Create"})]})]})]})})}function ar({open:a,onOpenChange:d}){let[e,f]=(0,c.useState)("");return(0,b.jsx)(ap.Dialog,{open:a,onOpenChange:d,children:(0,b.jsxs)(ap.DialogContent,{className:"max-w-lg bg-surface border-border text-txt",children:[(0,b.jsx)(ap.DialogTitle,{className:"text-sm font-semibold text-txt",children:"Plan from spec"}),(0,b.jsxs)("form",{onSubmit:function(a){a.preventDefault(),e.trim()&&(d(!1),(0,w.askAgent)(`Break down this spec into tasks:
|
|
1
|
+
module.exports=[690793,a=>{"use strict";var b=a.i(662145),c=a.i(174897),d=a.i(365465),e=a.i(152716),f=a.i(340933),g=a.i(795667),h=a.i(926128),i=a.i(256857);let j={name:"layout-grid",size:24,node:[["rect",{width:"7",height:"7",x:"3",y:"3",rx:"1",key:"1g98yp"}],["rect",{width:"7",height:"7",x:"14",y:"3",rx:"1",key:"6d4xhi"}],["rect",{width:"7",height:"7",x:"14",y:"14",rx:"1",key:"nxv5o0"}],["rect",{width:"7",height:"7",x:"3",y:"14",rx:"1",key:"1bb6yr"}]]};j.node;let k=(0,i.default)(j);var l=a.i(553415),m=a.i(200382),n=a.i(551729),o=a.i(913975),p=a.i(544394),q=a.i(21215),r=a.i(699570);let s=a=>"done"===a||"cancelled"===a;function t(a,b){let c=new Map(b.map(a=>[a.id,a])),d=a.tasks.map(a=>c.get(a)).filter(a=>!!a),e=a=>[...new Set((a.dependsOn.match(/\bT\d+\b/gi)??[]).map(a=>a.toUpperCase()))].filter(a=>{let b=c.get(a);return!b||!s(b.status)});for(let a of d)if("todo"===a.status&&!e(a).length)return{kind:"ready",taskId:a.id};if(d.every(a=>s(a.status)))return{kind:"finished"};let f=new Set(a.tasks),g=new Map,h=a=>{if(g.has(a))return g.get(a)??!1;g.set(a,!1);let b=c.get(a),d=!!b&&"blocked"!==b.status&&"paused"!==b.status&&"review"!==b.status&&("todo"!==b.status||f.has(a)&&e(b).every(h));return g.set(a,d),d},i=[];for(let b of a.tasks){let a=c.get(b);if(a){if("in-progress"===a.status)i.push({taskId:b,reason:`${b} is in progress (claimed)`});else if("blocked"===a.status)i.push({taskId:b,reason:`${b} is blocked`});else if("paused"===a.status)i.push({taskId:b,reason:`${b} is paused — needs a human to resume it`});else if("review"===a.status)i.push({taskId:b,reason:`${b} in review — needs a human`});else if("todo"===a.status){let d=e(a).map(a=>`${a} (${c.get(a)?.status??"missing"})`);i.push({taskId:b,reason:`${b} waits on ${d.join(", ")}`})}}else i.push({taskId:b,reason:`${b} has no task file`})}return{kind:"waiting",waiting:i,needsHuman:i.every(a=>!h(a.taskId))}}var u=a.i(452696),v=a.i(368114),w=a.i(525395),x=a.i(618940),y=a.i(815122),z=a.i(581040);function A({items:a,today:d,onSelect:e,onItemContextMenu:f,progressById:g}){let h=new Map(a.filter(a=>null===a.parent).sort((a,b)=>a.order-b.order).map((a,b)=>[a.id,b+1])),i=(0,c.useMemo)(()=>(0,z.buildTimeline)(a,d),[a,d]),j=(0,c.useRef)(null);(0,c.useEffect)(()=>{let a=j.current;a&&(a.scrollLeft=Math.max(0,i.todayX-(a.clientWidth-200)/3))},[i.todayX]);let k=i.lanes.some(a=>a.markers.length>0);return(0,b.jsxs)("div",{className:"flex flex-1 min-h-0 flex-col",children:[(0,b.jsx)("div",{ref:j,className:"relative flex-1 min-h-0 overflow-auto",children:(0,b.jsxs)("div",{className:"relative",style:{width:200+i.width,minHeight:"100%"},children:[(0,b.jsxs)("div",{className:"pointer-events-none absolute inset-y-0",style:{left:200,width:i.width},children:[i.months.map(a=>(0,b.jsx)("div",{className:"absolute inset-y-0 border-l border-border",style:{left:a.x}},a.x)),(0,b.jsx)("div",{className:"absolute inset-y-0 left-0 bg-surface/50",style:{width:i.todayX}}),(0,b.jsx)("div",{className:"absolute inset-y-0 w-px bg-accent shadow-[0_0_12px_rgb(var(--rgb-accent)/0.8)]",style:{left:i.todayX},children:(0,b.jsx)("span",{className:"absolute -translate-x-1/2 rounded-full bg-accent px-2 py-0.5 font-mono text-[10px] uppercase tracking-wider text-accent-fg",style:{top:42},children:"Today"})})]}),(0,b.jsxs)("div",{className:"sticky top-0 z-20 flex border-b border-border bg-bg",style:{height:36},children:[(0,b.jsx)("div",{className:"sticky left-0 z-10 shrink-0 bg-bg",style:{width:200}}),(0,b.jsx)("div",{className:"relative",children:i.months.map(a=>(0,b.jsx)("span",{className:"absolute top-3 whitespace-nowrap pl-2 font-mono text-[10px] uppercase tracking-widest text-muted",style:{left:a.x},children:a.label},a.x))})]}),i.lanes.map(a=>(0,b.jsxs)("div",{className:"relative flex border-b border-border",children:[(0,b.jsx)(B,{item:a.item,chapter:h.get(a.item.id),progress:g[a.item.id],onSelect:e,onContextMenu:f}),(0,b.jsx)("div",{className:"relative",style:{width:i.width,height:a.rows*z.LANE_ROW_H+12},children:a.markers.map(a=>(0,b.jsxs)("button",{type:"button",onClick:()=>e(a.item.id),onContextMenu:b=>f?.(a.item.id,b),title:`${a.item.id} \xb7 ${a.item.title} \xb7 due ${a.item.due}${"overdue"===a.state?" (overdue)":""}`,className:"group absolute flex items-center gap-1.5",style:{left:a.x-10,top:6+a.row*z.LANE_ROW_H},children:[a.horizon?(0,b.jsx)("span",{className:(0,v.cn)("h-4 w-4 rotate-45 border-2 border-accent","done"===a.item.status?"bg-accent":"bg-bg","overdue"===a.state&&"border-danger")}):(0,b.jsx)("span",{className:(0,v.cn)("rounded-full","overdue"===a.state&&"ring-2 ring-danger ring-offset-1 ring-offset-bg"),children:(0,b.jsx)(x.StatusDot,{status:a.item.status})}),(0,b.jsxs)("span",{className:(0,v.cn)("flex max-w-[150px] flex-col rounded-md border px-2 py-0.5 text-left transition-colors","in-progress"===a.item.status?"border-accent/50 bg-surface shadow-[0_6px_18px_-10px_rgb(var(--rgb-accent)/0.7)]":"done"===a.item.status?"border-border bg-surface/60":"border-dashed border-border2 bg-bg","group-hover:border-accent"),children:[(0,b.jsxs)("span",{className:"flex items-center gap-1",children:[(0,b.jsx)("span",{className:(0,v.cn)("truncate text-xs","done"===a.item.status?"text-muted":"text-txt",a.horizon&&"font-semibold"),children:a.item.title}),(0,b.jsx)(y.AgentDot,{attach:{kind:"epic",id:a.item.id}})]}),(0,b.jsx)("span",{className:(0,v.cn)("font-mono text-[10px]","overdue"===a.state?"text-danger":"soon"===a.state?"text-amber":"text-muted"),children:(0,z.formatDay)(a.item.due)})]})]},a.item.id))})]},a.item.id)),!k&&(0,b.jsx)("p",{className:"px-6 py-8 text-sm text-muted",style:{marginLeft:200},children:"No due dates yet — open an item and set a Due date."})]})}),i.undated.length>0&&(0,b.jsxs)("div",{className:"max-h-28 shrink-0 overflow-y-auto border-t border-border bg-surface px-4 py-2",children:[(0,b.jsxs)("p",{className:"mb-2 font-mono text-[10px] uppercase tracking-widest text-muted",children:["No due date · ",i.undated.length]}),(0,b.jsx)("div",{className:"flex flex-wrap gap-1.5",children:i.undated.map(a=>(0,b.jsxs)("button",{type:"button",onClick:()=>e(a.id),onContextMenu:b=>f?.(a.id,b),className:"flex items-center gap-1 rounded-md border border-border px-1.5 py-0.5 text-xs text-muted hover:border-accent hover:text-txt",children:[(0,b.jsx)(x.StatusDot,{status:a.status}),a.title,(0,b.jsx)(y.AgentDot,{attach:{kind:"epic",id:a.id}})]},a.id))})]})]})}function B({item:a,chapter:c,progress:d,onSelect:e,onContextMenu:f}){return(0,b.jsxs)("button",{type:"button",onClick:()=>e(a.id),onContextMenu:b=>f?.(a.id,b),className:"sticky left-0 z-10 flex shrink-0 items-center gap-3 border-r border-border bg-surface px-3 text-left hover:bg-surface2",style:{width:200},children:[(0,b.jsx)("span",{className:(0,v.cn)("font-mono text-lg font-semibold tabular-nums","in-progress"===a.status?"text-accent":"done"===a.status?"text-teal":"text-muted"),children:c?String(c).padStart(2,"0"):"··"}),(0,b.jsxs)("span",{className:"flex min-w-0 flex-1 flex-col gap-1",children:[(0,b.jsx)("span",{className:"line-clamp-2 text-[11px] font-semibold uppercase leading-snug tracking-wider text-txt",children:a.title}),d&&(0,b.jsx)("span",{className:"h-1 overflow-hidden rounded-full bg-border",children:(0,b.jsx)("span",{className:"block h-full rounded-full bg-teal",style:{width:`${d.done/d.total*100}%`}})})]})]})}var C=a.i(453161),D=a.i(658978),E=a.i(156298),F=a.i(388637),G=a.i(717371);let H={name:"layers",size:24,node:[["path",{d:"M12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83z",key:"zw3jo"}],["path",{d:"M2 12a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 12",key:"1wduqc"}],["path",{d:"M2 17a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 17",key:"kqbvx6"}]],aliases:["layers-3"]};H.node;let I=(0,i.default)(H);var J=a.i(340753),K=a.i(441852),L=a.i(661661),M=a.i(892678),N=a.i(757061),O=a.i(866718),P=a.i(149350),Q=a.i(107742),R=a.i(685698),S=a.i(60084),T=a.i(717143),U=a.i(763747),V=a.i(28386),W=a.i(335732),X=a.i(890728);let Y=["planned","in-progress","paused","done"];function Z({item:a,items:c,actions:d}){let e=null===a.parent,f=c.filter(b=>null===b.parent&&b.id!==a.parent).sort((a,b)=>a.order-b.order),g=c.filter(b=>b.parent===a.id).length;return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)(W.DropdownMenuItem,{onSelect:()=>d.edit(a.id),children:[(0,b.jsx)(L.Pencil,{})," Edit",(0,b.jsx)(W.DropdownMenuShortcut,{children:(0,X.itemKeyLabel)("edit")})]}),(0,b.jsxs)(W.DropdownMenuSub,{children:[(0,b.jsxs)(W.DropdownMenuSubTrigger,{children:[(0,b.jsx)(x.StatusDot,{status:a.status})," Status",(0,b.jsx)(W.DropdownMenuShortcut,{children:(0,X.itemKeyLabel)("status")})]}),(0,b.jsx)(W.DropdownMenuSubContent,{children:Y.map(c=>(0,b.jsxs)(W.DropdownMenuItem,{disabled:c===a.status,onSelect:()=>d.setStatus(a.id,c),children:[(0,b.jsx)(x.StatusDot,{status:c})," ",x.STATUS_LABEL[c]]},c))})]}),!e&&f.length>0&&(0,b.jsxs)(W.DropdownMenuSub,{children:[(0,b.jsxs)(W.DropdownMenuSubTrigger,{children:[(0,b.jsx)(T.FolderInput,{})," Move to horizon"]}),(0,b.jsx)(W.DropdownMenuSubContent,{className:"max-h-72 overflow-y-auto",children:f.map(c=>(0,b.jsxs)(W.DropdownMenuItem,{onSelect:()=>d.move(a.id,c.id),children:[(0,b.jsx)("span",{className:"font-mono text-[11px] text-muted",children:c.id})," ",c.title]},c.id))})]}),e&&(0,b.jsxs)(W.DropdownMenuItem,{onSelect:()=>d.addEpic(a.id),children:[(0,b.jsx)(m.Plus,{})," Add epic"]}),(0,b.jsxs)(W.DropdownMenuItem,{onSelect:()=>d.duplicate(a.id),children:[(0,b.jsx)(S.Copy,{})," Duplicate",(0,b.jsx)(W.DropdownMenuShortcut,{children:(0,X.itemKeyLabel)("duplicate")})]}),(0,b.jsx)(W.DropdownMenuSeparator,{}),!e&&(0,b.jsxs)(W.DropdownMenuItem,{onSelect:()=>d.chat(a.id),children:[(0,b.jsx)(K.MessageSquare,{})," Chat about it",(0,b.jsx)(W.DropdownMenuShortcut,{children:(0,X.itemKeyLabel)("chat")})]}),(0,b.jsxs)(W.DropdownMenuItem,{onSelect:()=>d.openFile(a.file),children:[(0,b.jsx)(h.FileText,{})," Open file"]}),(0,b.jsx)(W.DropdownMenuSeparator,{}),g>0?(0,b.jsxs)(W.DropdownMenuItem,{disabled:!0,className:"flex-col items-start gap-0",children:[(0,b.jsxs)("span",{className:"flex items-center gap-2",children:[(0,b.jsx)(V.Trash2,{})," Delete"]}),(0,b.jsxs)("span",{className:"pl-6 text-[11px]",children:["Move or delete its ",g," epic",1===g?"":"s"," first"]})]}):(0,b.jsxs)(W.DropdownMenuItem,{onSelect:()=>d.remove(a.id),className:"text-danger focus:text-danger",children:[(0,b.jsx)(V.Trash2,{})," Delete",(0,b.jsx)(W.DropdownMenuShortcut,{children:(0,X.itemKeyLabel)("remove")})]})]})}function $({item:a,items:c,actions:d,className:e,open:f,onOpenChange:g}){return(0,b.jsxs)(W.DropdownMenu,{open:f,onOpenChange:g,children:[(0,b.jsx)(W.DropdownMenuTrigger,{asChild:!0,children:(0,b.jsx)("button",{type:"button","aria-label":`Actions for ${a.id}`,className:(0,v.cn)("grid size-7 place-items-center rounded-md text-muted hover:bg-surface2 hover:text-txt",e),children:(0,b.jsx)(U.MoreHorizontal,{className:"size-4"})})}),(0,b.jsx)(W.DropdownMenuContent,{align:"end",className:"w-52",children:(0,b.jsx)(Z,{item:a,items:c,actions:d})})]})}function _({at:a,items:c,actions:d,onClose:e}){let f=a&&c.find(b=>b.id===a.id);return a&&f?(0,b.jsxs)(W.DropdownMenu,{open:!0,onOpenChange:a=>{a||e()},children:[(0,b.jsx)(W.DropdownMenuTrigger,{asChild:!0,children:(0,b.jsx)("span",{"aria-hidden":!0,className:"pointer-events-none fixed size-0",style:{left:a.x,top:a.y}})}),(0,b.jsx)(W.DropdownMenuContent,{align:"start",className:"w-52",children:(0,b.jsx)(Z,{item:f,items:c,actions:d})})]},`${a.id}:${a.x}:${a.y}`):null}var aa=a.i(813722),ab=a.i(192698),ac=a.i(787714),ad=a.i(891397),ae=a.i(269769);let af=["planned","in-progress","paused","done"],ag="w-full rounded-md border border-border bg-bg px-3 py-2 text-sm text-txt focus:outline-hidden focus:ring-1 focus:ring-accent disabled:opacity-50",ah="text-xs font-medium text-muted",ai="font-mono text-[10px] uppercase tracking-widest text-muted";function aj({item:a,onClose:c,...d}){return(0,b.jsx)(N.Sheet,{open:!!a,onOpenChange:a=>{a||c()},children:(0,b.jsx)(N.SheetContent,{className:"w-full sm:w-[480px] sm:max-w-[480px] gap-0 bg-surface border-border text-txt flex flex-col overflow-y-auto p-0",children:a&&(0,b.jsx)(ak,{item:a,onClose:c,...d},a.id)})})}function ak(a){return a.editing?(0,b.jsx)(am,{...a,onCancel:()=>a.onEditingChange(!1)}):(0,b.jsx)(al,{...a,onEdit:()=>a.onEditingChange(!0)})}function al({item:a,items:d,onClose:e,onAddFeature:f,onEditRaw:i,onSelect:j,tasksById:k,progressById:l,onEdit:n,actions:o,onSave:q}){let s=null===a.parent,t=d.find(b=>b.id===a.parent),z=d.filter(b=>b.parent===a.id).sort((a,b)=>a.order-b.order),A=l[a.id],B=(0,u.localToday)(),{chats:C,showAbout:H}=(0,R.useChats)(),{demo:O}=(0,p.useApp)(),S=s?void 0:(0,Q.chatFor)(C,{kind:"epic",id:a.id}),T=!s&&0===a.tasks.length&&!S,[U,V]=(0,c.useState)(!1),W=b=>{q(a.id,b).then(a=>{a&&(0,ae.toast)(a)})};return(0,X.useItemCommands)(`${a.id} \xb7 ${a.title}`,[{action:"edit",label:"Edit",run:n},{action:"status",label:"Change status…",run:()=>V(!0)},{action:"duplicate",label:"Duplicate",run:()=>o.duplicate(a.id)},...s?[]:[{action:"chat",label:"Chat about it",run:()=>o.chat(a.id)}],...z.length?[]:[{action:"remove",label:"Delete",run:()=>o.remove(a.id)}]]),(0,b.jsxs)("div",{className:"flex min-h-full flex-col",children:[(0,b.jsx)(ab.ItemPanelHeader,{className:(0,v.cn)("px-6","in-progress"===a.status&&"bg-[linear-gradient(180deg,rgb(var(--rgb-accent)/0.08),transparent)]"),kicker:(0,b.jsx)(N.SheetDescription,{asChild:!0,children:(0,b.jsxs)("div",{className:"flex min-w-0 items-center gap-1",children:[t&&(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("button",{type:"button",onClick:()=>j(t.id),className:"truncate hover:text-txt",children:t.title}),(0,b.jsx)(E.ChevronRight,{className:"h-3 w-3 shrink-0"})]}),(0,b.jsxs)("span",{className:"shrink-0",children:[a.id," · ",s?"horizon":"epic"]}),(0,b.jsx)(y.AgentMark,{attach:{kind:"epic",id:a.id}})]})}),title:(0,b.jsx)(N.SheetTitle,{className:"text-xl font-semibold leading-tight text-txt",children:a.title}),menu:O?void 0:(0,b.jsx)($,{item:a,items:d,actions:o,open:U,onOpenChange:V}),properties:[{label:"Status",icon:F.CircleDashed,value:(0,b.jsx)(ac.InlineSelect,{label:`Status of ${a.id}`,value:a.status,onChange:b=>o.setStatus(a.id,b),options:af.map(a=>({value:a,label:x.STATUS_LABEL[a],node:(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(x.StatusDot,{status:a}),x.STATUS_LABEL[a]]})})),children:(0,b.jsx)(x.StatusPill,{status:a.status})})},{label:"Priority",icon:G.Flag,value:(0,b.jsx)(ad.PriorityField,{label:`Priority of ${a.id}`,value:a.priority??null,onChange:a=>W({priority:a})})},{label:"Owner",icon:M.User,value:(0,b.jsx)(ac.InlineSelect,{label:`Owner of ${a.id}`,value:a.owner??"",onChange:a=>W({owner:a||null}),options:[{value:"human",label:"Human",node:(0,b.jsx)(aa.OwnerChip,{owner:"human",className:"text-xs"})},...[...new Set(["ai:claude",...a.owner?.startsWith("ai:")?[a.owner]:[]])].map(a=>({value:a,label:a,node:(0,b.jsx)(aa.OwnerChip,{owner:a,className:"text-xs"})})),{value:"",label:"No owner",node:(0,b.jsx)("span",{className:"text-muted",children:"No owner"})}],children:a.owner?(0,b.jsx)(aa.OwnerChip,{owner:a.owner,className:"text-xs"}):(0,b.jsx)("span",{className:"text-muted",children:"—"})})},{label:"Due",icon:D.Calendar,value:(0,b.jsx)(ac.InlineDate,{label:`Due date of ${a.id}`,value:a.due,onChange:a=>W({due:a}),children:a.due?(0,b.jsx)(x.DueChip,{due:a.due,state:(0,u.dueState)(a.due,a.status,B)}):(0,b.jsx)("span",{className:"text-muted",children:"—"})})},{label:s?"Epics":"Tasks",icon:s?I:J.ListChecks,value:(0,b.jsx)("span",{className:"font-mono",children:s?z.length:a.tasks.length})}],children:A&&(0,b.jsxs)("div",{className:"mt-2 flex items-end gap-4",children:[(0,b.jsxs)("p",{className:"font-mono text-3xl font-semibold leading-none tabular-nums text-txt",children:[Math.round(A.done/A.total*100),(0,b.jsx)("span",{className:"text-base text-muted",children:"%"})]}),(0,b.jsxs)("div",{className:"flex-1 pb-1",children:[(0,b.jsxs)("p",{className:"mb-1.5 font-mono text-[10px] text-muted",children:[A.done," of ",A.total,s?"":" tasks"," done"]}),s?(0,b.jsx)("div",{className:"h-1.5 overflow-hidden rounded-full bg-border",children:(0,b.jsx)("div",{className:"h-full rounded-full bg-teal",style:{width:`${A.done/A.total*100}%`}})}):(0,b.jsx)(x.SegmentedProgress,{statuses:a.tasks.map(a=>k[a]?.status).filter(a=>!!a&&"cancelled"!==a)})]})]})}),(0,b.jsxs)("div",{className:"flex flex-1 flex-col gap-6 px-6 py-5",children:[!s&&a.tasks.length>0&&(0,b.jsx)(an,{item:a,tasksById:k,onOpen:i}),s&&(0,b.jsxs)("section",{className:"flex flex-col gap-2",children:[(0,b.jsxs)("p",{className:ai,children:["Epics · ",z.length]}),0===z.length&&(0,b.jsx)("p",{className:"text-sm text-muted",children:"No epics yet."}),(0,b.jsx)("ul",{className:"-mx-2 flex flex-col",children:z.map(a=>{let c=l[a.id];return(0,b.jsx)("li",{children:(0,b.jsxs)("button",{type:"button",onClick:()=>j(a.id),className:"flex w-full items-center gap-3 rounded-md px-2 py-2 text-left hover:bg-surface2",children:[(0,b.jsx)(x.StatusDot,{status:a.status}),(0,b.jsx)("span",{className:"shrink-0 font-mono text-[11px] text-muted",children:a.id}),(0,b.jsx)("span",{className:(0,v.cn)("min-w-0 flex-1 truncate text-sm","done"===a.status?"text-muted":"text-txt"),children:a.title}),c&&(0,b.jsxs)("span",{className:"shrink-0 font-mono text-[10px] text-muted",children:[c.done,"/",c.total]})]})},a.id)})})]}),(0,b.jsxs)("section",{className:"flex flex-col gap-2",children:[(0,b.jsx)("p",{className:ai,children:"Brief"}),a.body.trim()?(0,b.jsx)(P.MarkdownRenderer,{content:a.body,className:"text-sm"}):(0,b.jsx)("p",{className:"text-sm text-muted",children:"No description. Edit to add the outcome, scope and “done when”."})]})]}),(0,b.jsxs)("footer",{className:"sticky bottom-0 flex flex-wrap items-center gap-2 border-t border-border bg-surface px-6 py-3",children:[!O&&(0,b.jsxs)(b.Fragment,{children:[T&&(0,b.jsxs)(r.Button,{size:"sm",onClick:()=>{e(),(0,w.askAgent)(`Break down epic ${a.id} into tasks.`)},className:"bg-accent text-accent-fg hover:bg-accent/90",children:[(0,b.jsx)(g.Bot,{})," Break down with agent"]}),!s&&(0,b.jsxs)(r.Button,{size:"sm",variant:T?"outline":"default",onClick:()=>{e(),H({kind:"epic",id:a.id})},className:(0,v.cn)(!T&&"bg-accent text-accent-fg hover:bg-accent/90"),children:[(0,b.jsx)(K.MessageSquare,{})," ",S?"Open chat":"Chat"]}),s&&(0,b.jsxs)(r.Button,{size:"sm",onClick:()=>f(a.id),className:"bg-accent text-accent-fg hover:bg-accent/90",children:[(0,b.jsx)(m.Plus,{})," Add epic"]}),(0,b.jsxs)(r.Button,{size:"sm",variant:"outline",onClick:n,children:[(0,b.jsx)(L.Pencil,{})," Edit"]})]}),(0,b.jsxs)(r.Button,{size:"sm",variant:"ghost",onClick:()=>i(a.file),className:"ml-auto text-muted hover:text-txt",children:[(0,b.jsx)(h.FileText,{})," Open file"]})]})]})}function am({item:a,items:d,onClose:e,onSave:f,onDelete:g,onCancel:h}){let[i]=(0,c.useState)(a),[j,k]=(0,c.useState)(a.title),[l,m]=(0,c.useState)(a.status),[n,o]=(0,c.useState)(a.parent??""),[p,q]=(0,c.useState)(String(a.order)),[s,t]=(0,c.useState)(a.tasks.join(", ")),[u,v]=(0,c.useState)(a.due??""),[w,x]=(0,c.useState)(a.body),[y,z]=(0,c.useState)(null),[A,B]=(0,c.useState)(!1),C=d.some(b=>b.parent===a.id),D=d.filter(b=>null===b.parent&&b.id!==a.id),E=null===a.parent,F=null!==a.parent&&!D.some(b=>b.id===a.parent);async function G(a){B(!0),z(null);let b=await a();return B(!1),b&&z(b),!b}async function H(){let b={},c=j.trim()||i.title;if(c!==i.title&&(b.title=c),l!==i.status&&(b.status=l),(n||null)!==i.parent&&(b.parent=n||null),p.trim()!==String(i.order)){let a=Number(p);if(""===p.trim()||!Number.isFinite(a))return void z("Order must be a number");b.order=a}let d=s.split(",").map(a=>a.trim()).filter(Boolean);(d.join(",")!==i.tasks.join(",")&&(b.tasks=d),(u||null)!==i.due&&(b.due=u||null),w!==i.body&&(b.body=w),0===Object.keys(b).length)?h():await G(()=>f(a.id,b))&&e()}async function I(){await G(()=>g(a.id))&&e()}return(0,b.jsxs)("div",{className:"flex min-h-full flex-col",children:[(0,b.jsxs)("div",{className:"border-b border-border px-6 pb-4 pt-6 pr-12",children:[(0,b.jsxs)(N.SheetDescription,{className:"font-mono text-[11px] text-muted",children:["Editing ",a.id," · ",E?"horizon":"epic"]}),(0,b.jsx)(N.SheetTitle,{className:"mt-1 text-base text-txt",children:a.title})]}),(0,b.jsxs)("div",{className:"flex flex-1 flex-col gap-4 px-6 py-5",children:[(0,b.jsxs)("label",{className:"flex flex-col gap-1",children:[(0,b.jsx)("span",{className:ah,children:"Title"}),(0,b.jsx)(O.Input,{value:j,onChange:a=>k(a.target.value),className:"bg-bg border-border text-txt"})]}),(0,b.jsxs)("div",{className:"grid grid-cols-3 gap-3",children:[(0,b.jsxs)("label",{className:"flex flex-col gap-1",children:[(0,b.jsx)("span",{className:ah,children:"Status"}),(0,b.jsx)("select",{value:l,onChange:a=>m(a.target.value),className:ag,children:af.map(a=>(0,b.jsx)("option",{value:a,children:a},a))})]}),(0,b.jsxs)("label",{className:"flex flex-col gap-1",children:[(0,b.jsx)("span",{className:ah,children:"Parent"}),(0,b.jsxs)("select",{value:n,onChange:a=>o(a.target.value),disabled:C,title:C?"Items with children must stay on the spine":void 0,className:ag,children:[(0,b.jsx)("option",{value:"",children:"— (horizon)"}),F&&(0,b.jsxs)("option",{value:a.parent??"",children:[a.parent," · missing"]}),D.map(a=>(0,b.jsxs)("option",{value:a.id,children:[a.id," · ",a.title]},a.id))]})]}),(0,b.jsxs)("label",{className:"flex flex-col gap-1",children:[(0,b.jsx)("span",{className:ah,children:"Order"}),(0,b.jsx)(O.Input,{type:"number",step:10,value:p,onChange:a=>q(a.target.value),title:E?"Position on the spine":"Position within the branch",className:"bg-bg border-border text-txt"})]})]}),(0,b.jsxs)("label",{className:"flex flex-col gap-1",children:[(0,b.jsx)("span",{className:ah,children:"Due"}),(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)(O.Input,{type:"date",value:u,onChange:a=>v(a.target.value),className:"bg-bg border-border text-txt scheme-light dark:scheme-dark"}),u&&(0,b.jsx)("button",{type:"button",onClick:()=>v(""),className:"text-xs text-muted hover:text-txt",children:"Clear"})]})]}),(0,b.jsxs)("label",{className:"flex flex-col gap-1",children:[(0,b.jsx)("span",{className:ah,children:"Tasks"}),(0,b.jsx)(O.Input,{value:s,onChange:a=>t(a.target.value),placeholder:"T001, T012",className:"bg-bg border-border text-txt font-mono"})]}),(0,b.jsxs)("label",{className:"flex flex-col gap-1",children:[(0,b.jsx)("span",{className:ah,children:"Body (markdown)"}),(0,b.jsx)("textarea",{value:w,onChange:a=>x(a.target.value),rows:12,className:`${ag} font-mono resize-y`})]}),y&&(0,b.jsx)("p",{className:"text-xs text-danger",children:y})]}),(0,b.jsxs)("footer",{className:"sticky bottom-0 flex items-center gap-2 border-t border-border bg-surface px-6 py-3",children:[(0,b.jsx)(r.Button,{size:"sm",onClick:H,disabled:A,className:"bg-accent text-accent-fg hover:bg-accent/90",children:"Save"}),(0,b.jsx)(r.Button,{size:"sm",variant:"ghost",onClick:h,disabled:A,className:"text-txt",children:"Cancel"}),(0,b.jsx)(r.Button,{size:"sm",variant:"ghost",onClick:I,disabled:A,className:"ml-auto text-danger hover:text-danger",children:"Delete"})]})]})}function an({item:a,tasksById:c,onOpen:d}){let e=(0,u.localToday)(),f=t(a,Object.values(c)),g="ready"===f.kind?f.taskId:null,h="waiting"===f.kind?[...f.waiting].sort((a,b)=>Number(c[b.taskId]?.status==="todo")-Number(c[a.taskId]?.status==="todo")).map(a=>a.reason):[];return(0,b.jsxs)("section",{className:"flex flex-col gap-2",children:[(0,b.jsxs)("p",{className:ai,children:["Tasks · ",a.tasks.length]}),(0,b.jsx)("ul",{className:"-mx-2 flex flex-col",children:a.tasks.map(a=>{let f=c[a];if(!f)return(0,b.jsxs)("li",{className:"px-2 py-2 font-mono text-xs text-danger",children:[a," · missing task file"]},a);let h=f.id===g;return(0,b.jsxs)("li",{className:(0,v.cn)("group flex items-center rounded-md hover:bg-surface2",h&&"bg-accent/10 hover:bg-accent/15"),children:[(0,b.jsxs)("button",{type:"button",onClick:()=>d(f.file),className:"flex min-w-0 flex-1 items-center gap-3 px-2 py-2 text-left",children:[(0,b.jsx)("span",{title:f.status,className:(0,v.cn)("h-2 w-2 shrink-0 rounded-full",x.TASK_STATUS_BG[f.status])}),(0,b.jsx)("span",{className:"shrink-0 font-mono text-[11px] text-muted",children:f.id}),(0,b.jsx)("span",{className:(0,v.cn)("min-w-0 flex-1 truncate text-sm","cancelled"===f.status?"text-muted line-through":"done"===f.status?"text-muted":"text-txt"),children:f.title}),(0,b.jsx)(x.DueChip,{due:f.due,state:(0,u.dueState)(f.due,"done"===f.status?"done":"planned",e)}),h?(0,b.jsx)("span",{className:"shrink-0 font-mono text-[10px] uppercase tracking-wider text-accent",children:"Next up"}):f.size&&"—"!==f.size&&(0,b.jsx)("span",{className:"shrink-0 font-mono text-[10px] text-muted",children:f.size.split(" ")[0]}),(0,b.jsx)(y.AgentDot,{attach:{kind:"task",id:f.id}})]}),(0,b.jsx)(ao,{taskId:f.id})]},a)})}),h.length>0&&(0,b.jsxs)("p",{className:"truncate text-xs text-muted",title:h.join("\n"),children:[h[0],h.length>1&&` (+${h.length-1} more)`]})]})}function ao({taskId:a}){let{chats:c,showAbout:d}=(0,R.useChats)(),{demo:e}=(0,p.useApp)(),f=!!(0,Q.chatFor)(c,{kind:"task",id:a});return e?null:(0,b.jsx)("button",{type:"button",onClick:()=>d({kind:"task",id:a}),"aria-label":`${f?"Open chat":"Chat"} about ${a}`,title:f?`Open the chat about ${a}`:`Chat about ${a}`,className:(0,v.cn)("mr-1 grid size-7 shrink-0 place-items-center rounded-md text-muted transition-[opacity,color] duration-(--duration-fast) hover:bg-surface hover:text-accent focus-visible:opacity-100",f?"text-accent opacity-100":"opacity-0 group-hover:opacity-100"),children:(0,b.jsx)(K.MessageSquare,{className:"size-3.5"})})}var ap=a.i(814574);function aq({open:a,heading:d,onOpenChange:e,onSubmit:f}){let[g,h]=(0,c.useState)(""),[i,j]=(0,c.useState)(null),[k,l]=(0,c.useState)(!1);function m(a){a||(h(""),j(null)),e(a)}async function n(a){if(a.preventDefault(),!g.trim())return;l(!0);let b=await f(g.trim());l(!1),b?j(b):m(!1)}return(0,b.jsx)(ap.Dialog,{open:a,onOpenChange:m,children:(0,b.jsxs)(ap.DialogContent,{className:"max-w-sm bg-surface border-border text-txt",children:[(0,b.jsx)(ap.DialogTitle,{className:"text-sm font-semibold text-txt",children:d}),(0,b.jsxs)("form",{onSubmit:n,className:"flex flex-col gap-3",children:[(0,b.jsx)(O.Input,{autoFocus:!0,value:g,onChange:a=>h(a.target.value),placeholder:"Title",className:"bg-bg border-border text-txt"}),i&&(0,b.jsx)("p",{className:"text-xs text-danger",children:i}),(0,b.jsxs)("div",{className:"flex justify-end gap-2",children:[(0,b.jsx)(r.Button,{type:"button",variant:"ghost",size:"sm",onClick:()=>m(!1),children:"Cancel"}),(0,b.jsx)(r.Button,{type:"submit",size:"sm",disabled:k||!g.trim(),className:"bg-accent text-accent-fg hover:bg-accent/90",children:"Create"})]})]})]})})}function ar({open:a,onOpenChange:d}){let[e,f]=(0,c.useState)("");return(0,b.jsx)(ap.Dialog,{open:a,onOpenChange:d,children:(0,b.jsxs)(ap.DialogContent,{className:"max-w-lg bg-surface border-border text-txt",children:[(0,b.jsx)(ap.DialogTitle,{className:"text-sm font-semibold text-txt",children:"Plan from spec"}),(0,b.jsxs)("form",{onSubmit:function(a){a.preventDefault(),e.trim()&&(d(!1),(0,w.askAgent)(`Break down this spec into tasks:
|
|
2
2
|
|
|
3
|
-
${e.trim()}`))},className:"flex flex-col gap-3",children:[(0,b.jsx)("textarea",{autoFocus:!0,value:e,onChange:a=>f(a.target.value),placeholder:"Paste a feature spec…",rows:12,className:"w-full resize-y rounded-md border border-border bg-bg px-3 py-2 text-sm text-txt placeholder:text-muted focus:outline-none focus:ring-1 focus:ring-accent"}),(0,b.jsx)("p",{className:"text-xs text-muted",children:"The agent asks where the tasks go (a new epic, an existing epic, or no epic) and shows a plan before writing anything."}),(0,b.jsxs)("div",{className:"flex justify-end gap-2",children:[(0,b.jsx)(r.Button,{type:"button",variant:"ghost",size:"sm",onClick:()=>{f(""),d(!1)},children:"Cancel"}),(0,b.jsx)(r.Button,{type:"submit",size:"sm",disabled:!e.trim(),className:"bg-accent text-accent-fg hover:bg-accent/90",children:"Break down"})]})]})]})})}function as({open:a,onOpenChange:c,items:d}){return(0,b.jsx)(ap.Dialog,{open:a,onOpenChange:c,children:(0,b.jsxs)(ap.DialogContent,{className:"max-w-lg bg-surface border-border text-txt",children:[(0,b.jsx)(ap.DialogTitle,{className:"text-sm font-semibold text-txt",children:"Break down epics"}),(0,b.jsx)(at,{items:d,onDone:()=>c(!1)})]})})}function at({items:a,onDone:d}){let e,f=(e=(a,b)=>a.order-b.order,a.filter(a=>null===a.parent).sort(e).map(b=>({horizon:b,epics:a.filter(a=>a.parent===b.id&&"done"!==a.status).sort((a,b)=>Number(a.tasks.length>0)-Number(b.tasks.length>0)||e(a,b))})).filter(a=>a.epics.length>0)),[g,h]=(0,c.useState)(()=>new Set(f.flatMap(a=>a.epics.filter(a=>0===a.tasks.length).map(a=>a.id)))),i=(0,R.useChats)().runningCount,j=Math.max(0,Q.MAX_RUNNING_CHATS-i),k=g.size>j;return(0,b.jsxs)("form",{onSubmit:function(a){if(a.preventDefault(),g.size&&!k)for(let a of(d(),f))for(let b of a.epics)g.has(b.id)&&(0,w.askAgent)(`Break down epic ${b.id} into tasks.`,{newChat:!0})},className:"flex flex-col gap-3",children:[(0,b.jsx)("div",{className:"max-h-[50vh] overflow-y-auto rounded-md border border-border",children:f.map(a=>(0,b.jsxs)("div",{children:[(0,b.jsxs)("div",{className:"sticky top-0 bg-surface2 px-3 py-1 text-[10px] font-mono uppercase tracking-widest text-muted",children:[a.horizon.id," · ",a.horizon.title]}),(0,b.jsx)("ul",{children:a.epics.map(a=>{let c=g.has(a.id);return(0,b.jsx)("li",{className:"border-b border-border last:border-b-0",children:(0,b.jsxs)("label",{className:"flex items-start gap-2 px-3 py-1.5 text-xs cursor-pointer has-[:disabled]:cursor-not-allowed",children:[(0,b.jsx)("input",{type:"checkbox",checked:c,disabled:!c&&g.size>=j,onChange:()=>{var b;return b=a.id,void h(a=>{let c=new Set(a);return c.delete(b)||c.add(b),c})},className:"mt-0.5 accent-accent"}),(0,b.jsxs)("span",{className:"flex-1 min-w-0 text-txt",children:[(0,b.jsx)("span",{className:"font-mono text-muted mr-1",children:a.id}),a.title]}),a.tasks.length>0&&(0,b.jsxs)("span",{className:"shrink-0 text-[10px] font-mono text-muted",children:["has ",a.tasks.length," task",1===a.tasks.length?"":"s"]})]})},a.id)})})]},a.horizon.id))}),(0,b.jsx)("p",{className:k||0===j?"text-xs text-amber":"text-xs text-muted",children:0===j?`All ${Q.MAX_RUNNING_CHATS} agent slots are busy. Stop a chat or wait for one to finish.`:k?`${g.size} selected, but only ${j} of ${Q.MAX_RUNNING_CHATS} agent slots ${1===j?"is":"are"} free (${i} running). Uncheck some or stop a chat.`:`One chat per epic, running at once (${j} of ${Q.MAX_RUNNING_CHATS} agent slots free). Each shows a plan before writing anything.`}),(0,b.jsxs)("div",{className:"flex justify-end gap-2",children:[(0,b.jsx)(r.Button,{type:"button",variant:"ghost",size:"sm",onClick:d,children:"Cancel"}),(0,b.jsxs)(r.Button,{type:"submit",size:"sm",disabled:!g.size||k,className:"bg-accent text-accent-fg hover:bg-accent/90",children:["Break down ",g.size||""," epic",1===g.size?"":"s"]})]})]})}async function au(a,b){try{let c=await fetch(a,void 0===b?void 0:{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(b)}),d=await c.json().catch(()=>null);if(!c.ok)return{error:d?.error??`Request failed (${c.status})`};return{data:d}}catch{return{error:"Could not reach the server"}}}function av(a,b,c,d){var f;let g,h,i,j,k,[l,m]=(f=!d,h=(g=a=>({x:a.position.x+(a.measured?.width??("horizon"===a.type?C.HORIZON_W:C.FEATURE_W))/2,y:a.position.y+(a.measured?.height??48)/2}))(b),j=(i=g(c)).x-h.x,k=i.y-h.y,f||Math.abs(j)>Math.abs(k)?j>0?[e.Position.Right,e.Position.Left]:[e.Position.Left,e.Position.Right]:k>0?[e.Position.Bottom,e.Position.Top]:[e.Position.Top,e.Position.Bottom]);return{id:a,source:b.id,target:c.id,sourceHandle:l,targetHandle:`${m}-t`,type:d?"straight":"default",selectable:!1,...function(a,b,c){if(c)return"done"===a.data.item.status?{style:{stroke:"var(--color-accent)",strokeWidth:3}}:{style:{stroke:"var(--color-border2)",strokeWidth:3,strokeDasharray:"6 6"}};let d=b.data.item.status;return"in-progress"===d?{animated:!0,style:{stroke:"var(--color-accent)",strokeWidth:2}}:"done"===d?{style:{stroke:"var(--color-border2)",strokeWidth:1.5}}:{style:{stroke:"var(--color-border2)",strokeWidth:1.5,strokeDasharray:"2 5",strokeLinecap:"round"}}}(b,c,d)}}function aw(a){let b=new MutationObserver(a);return b.observe(document.documentElement,{attributes:!0,attributeFilter:["class"]}),()=>b.disconnect()}let ax={"--xy-background-color":"var(--color-bg)"};function ay(){let{rootParam:a,openDoc:e,board:f}=(0,p.useApp)(),{showAbout:i}=(0,R.useChats)(),j=(0,o.useRouter)(),s=(0,o.useSearchParams)(),y="timeline"===s.get("view")?"timeline":"map",z=(0,u.localToday)(),[B,D]=(0,c.useState)([]),[E,F]=(0,c.useState)({}),[G,H]=(0,c.useState)([]),[I,J]=(0,c.useState)(!0),[K,L]=(0,c.useState)(null),[M,N]=(0,c.useState)(null),[O,P]=(0,c.useState)(null),[Q,S]=(0,c.useState)(null),T=s.get("item"),[U,V]=(0,c.useState)(null);T!==U&&(V(T),T&&N(T));let[W,X]=(0,c.useState)(null),[Y,Z]=(0,c.useState)(!1),[$,aa]=(0,c.useState)(null),[ab,ac]=(0,c.useState)(!1),[ad,af]=(0,c.useState)(!1),ag=(0,c.useRef)(!1),ah=(0,c.useRef)(null),ai=(0,c.useRef)(null),ak=(0,c.useCallback)((a,b=0)=>{ai.current=a;let c=ah.current?.clientWidth??0,d=a.getNodesBounds(a.getNodes());if(!c||!d.width)return;let e=Math.min(1,Math.max(.75,(c-80)/d.width));a.setViewport({x:c/2-(d.x+d.width/2)*e,y:40-d.y*e,zoom:e},{duration:b})},[]),al=(0,c.useRef)(!1),am=(0,c.useRef)(0),an=(0,c.useSyncExternalStore)(aw,()=>document.documentElement.classList.contains("dark"),()=>!0),ao=(0,c.useCallback)((a,b)=>{D(a),F(b),H(c=>{let d,e;return d=(0,C.resolvePositions)(a,b),e=new Map(c.map(a=>[a.id,a])),a.map(a=>{let b=e.get(a.id);return{id:a.id,type:null===a.parent?"horizon":"feature",position:d[a.id]??{x:0,y:0},data:{item:a},measured:b?.measured,selected:b?.selected}})})},[]),ap=(0,c.useCallback)(()=>{let b=++am.current;return au(`/api/roadmap${a}`).then(({data:a,error:c})=>{if(b===am.current){if(J(!1),c){L(c),ao([],{}),N(null);return}L(null),X(a?.generateSource??null),ao(a?.items??[],a?.layout??{})}})},[a,ao]);(0,c.useEffect)(()=>{ap()},[ap]),(0,c.useEffect)(()=>{let a=new EventSource("/api/events");return a.onmessage=a=>{try{let b=JSON.parse(a.data);if("roadmap_updated"!==b.type)return;ag.current?al.current=!0:ap()}catch{}},()=>a.close()},[ap]);let at=(0,c.useMemo)(()=>{let a=new Map(G.map(a=>[a.id,a])),b=[],c=B.filter(a=>null===a.parent).sort((a,b)=>a.order-b.order);for(let d of(c.forEach((d,e)=>{let f=a.get(d.id),g=c[e+1]&&a.get(c[e+1].id);f&&g&&b.push(av(`spine-${d.id}`,f,g,!0))}),B)){let c=d.parent&&a.get(d.parent),e=a.get(d.id);c&&e&&"horizon"===c.type&&b.push(av(`branch-${d.id}`,c,e,!1))}return b},[B,G]),ay=(0,c.useMemo)(()=>Object.fromEntries(Object.values(f??{}).flat().map(a=>[a.id,a])),[f]),aB=(0,c.useMemo)(()=>(0,u.roadmapHealth)(B,ay,z),[B,ay,z]),aC=(0,c.useMemo)(()=>{let a=Object.values(ay),b=new Map(B.filter(a=>null===a.parent).sort((a,b)=>a.order-b.order).map((a,b)=>[a.id,b+1]));return G.map(c=>{var d;let e,{item:f}=c.data,g=B.filter(a=>a.parent===f.id),h="feature"===c.type&&"in-progress"===f.status?t(f,a):null;return{...c,data:{...c.data,progress:aB.progress[c.id],drift:aB.drift.filter(a=>a.id===c.id).map(a=>a.message),dueState:(0,u.dueState)(f.due,f.status,z),..."feature"===c.type&&{...(d=f.tasks,{taskDue:e=(0,u.taskDueSummary)(d,ay,z),taskDueSoon:!!e?.next&&"soon"===(0,u.dueState)(e.next,"planned",z)}),taskStatuses:f.tasks.map(a=>ay[a]?.status).filter(a=>!!a&&"cancelled"!==a),nextTaskId:h?.kind==="ready"?h.taskId:null},..."horizon"===c.type&&{chapter:b.get(f.id),epics:{done:g.filter(a=>"done"===a.status).length,total:g.length}}}}})},[G,B,aB,z,ay]),aD=(0,c.useCallback)(a=>H(b=>(0,d.applyNodeChanges)(a,b)),[]),[aE,aF]=(0,c.useState)(!1);async function aG(){Z(!0),L(null);let{data:b,error:c}=await au(`/api/roadmap/generate${a}`,{});if(c){L(c),Z(!1);return}let d=Object.fromEntries(Object.entries((0,C.resolvePositions)(b?.items??[],{})).map(([a,b])=>[a,{x:Math.round(b.x),y:Math.round(b.y)}])),{error:e}=await au(`/api/roadmap/layout${a}`,{positions:d});await ap(),e&&L(e),Z(!1)}let aH=Object.values(f??{}).flat().filter(a=>"cancelled"!==a.status).length,aI="roadmap-md"===W?"from ROADMAP.md":"tasks"===W?`from ${aH} tasks, grouped by phase`:"starter horizons: Shipped · Now · Next · Later";async function aJ(b){let{error:c}=await au(`/api/roadmap/create${a}`,{title:b,parent:$||null});return c||(await ap(),null)}async function aK(b,c){ao(B.map(a=>a.id===b?{...a,...c}:a),E);let{data:d,error:e}=await au(`/api/roadmap/update${a}`,{id:b,patch:c});if(e)return await ap(),e;let f=d?.item;return f?ao(B.map(a=>a.id===b?f:a),E):await ap(),null}async function aL(b){let{data:c,error:d}=await au(`/api/roadmap/delete${a}`,{id:b});return d||(ao(B.filter(a=>a.id!==b),E),c&&(0,ae.undoToast)(`Deleted ${b}`,async()=>{let{error:b}=await au(`/api/roadmap/restore${a}`,c);if(b)throw Error(b);await ap()}),null)}let aM=B.find(a=>a.id===M)??null,aN=a=>{a&&L(a)},aO={edit:a=>{N(a),P(a)},setStatus:(a,b)=>{aK(a,{status:b}).then(aN)},move:(a,b)=>{aK(a,{parent:b}).then(aN)},addEpic:a=>{N(null),aa(a)},duplicate:async b=>{let c=B.find(a=>a.id===b);if(!c)return;let{data:d,error:e}=await au(`/api/roadmap/create${a}`,{title:`${c.title} (copy)`,parent:c.parent,status:"planned",order:c.order+1,due:c.due,body:c.body});if(e)return L(e);await ap(),d?.item&&N(d.item.id)},openFile:a=>e(a),chat:a=>{N(null),i({kind:"epic",id:a})},remove:async a=>{let b=await aL(a);if(b)return L(b);M===a&&N(null)}},aP=(a,b)=>{b.preventDefault(),S({id:a,x:b.clientX,y:b.clientY})},aQ=(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(aq,{open:null!==$,heading:$?`New feature under ${$}`:"New horizon",onOpenChange:a=>{a||aa(null)},onSubmit:aJ}),(0,b.jsx)(ar,{open:ab,onOpenChange:ac}),(0,b.jsx)(as,{open:ad,onOpenChange:af,items:B})]});return I?(0,b.jsx)("div",{className:"flex-1 flex items-center justify-center text-sm text-muted",children:"Loading…"}):0===B.length?(0,b.jsxs)("div",{className:"flex-1 p-6",children:[K&&(0,b.jsx)("p",{className:"mb-4 text-sm text-danger",children:K}),(0,b.jsx)(q.EmptyState,{icon:"🗺️",message:"No roadmap yet",subMessage:"Items live in plans/roadmap/R*.md",bordered:!0}),(0,b.jsxs)("div",{className:"mt-4 flex flex-col items-center gap-2",children:[(0,b.jsxs)("div",{className:"flex gap-2",children:[(0,b.jsxs)(r.Button,{size:"sm",onClick:aG,disabled:Y,className:"bg-accent text-accent-fg hover:bg-accent/90",children:[(0,b.jsx)(n.Sparkles,{})," ",Y?"Generating…":"Generate roadmap"]}),(0,b.jsxs)(r.Button,{size:"sm",variant:"outline",onClick:()=>(0,w.askAgent)("Plan a roadmap for this project."),disabled:Y,children:[(0,b.jsx)(g.Bot,{})," Plan with agent"]}),(0,b.jsxs)(r.Button,{size:"sm",variant:"outline",onClick:()=>ac(!0),disabled:Y,children:[(0,b.jsx)(h.FileText,{})," Plan from spec"]}),(0,b.jsxs)(r.Button,{size:"sm",variant:"outline",onClick:()=>aa(""),disabled:Y,children:[(0,b.jsx)(m.Plus,{})," Create first horizon"]})]}),(0,b.jsxs)("p",{className:"text-xs text-muted",children:["Generate ",aI,". Existing files are not modified."]})]}),aQ]}):(0,b.jsxs)("div",{className:"relative flex flex-1 min-h-0 flex-col",children:[(0,b.jsxs)("div",{className:"flex shrink-0 items-center gap-4 border-b border-border px-3 py-2",children:[(0,b.jsx)("div",{className:"flex rounded-md border border-border p-0.5 text-xs",children:["map","timeline"].map(a=>(0,b.jsx)("button",{type:"button",onClick:()=>{let b,c;return b=new URLSearchParams(s.toString()),"map"===a?b.delete("view"):b.set("view",a),c=b.toString(),void j.replace(c?`/roadmap?${c}`:"/roadmap")},className:(0,v.cn)("rounded-sm px-3 py-1 capitalize",y===a?"bg-surface2 text-txt":"text-muted hover:text-txt"),children:a},a))}),(0,b.jsx)(az,{items:B,tasksById:ay}),(0,b.jsxs)("div",{className:"ml-auto flex items-center gap-2",children:[K&&(0,b.jsx)("p",{className:"text-xs text-danger",children:K}),aB.drift.length>0&&(0,b.jsx)(aA,{drift:aB.drift,onSelect:N,onApply:a=>a.suggestedStatus&&aK(a.id,{status:a.suggestedStatus}).then(a=>{a&&L(a)})}),"map"===y&&(0,b.jsxs)(r.Button,{size:"sm",variant:"outline",onClick:function(){let b=a=>({x:Math.round(a.x),y:Math.round(a.y)}),c=new Map(G.map(a=>[a.id,a.measured?.height??48])),d=(0,C.resolvePositions)(B,E),e=Object.fromEntries(Object.entries((0,C.arrangePositions)(B,a=>c.get(a)??48)).map(([a,c])=>[a,b(c)])),f=Object.fromEntries(Object.entries(d).map(([a,c])=>[a,b(c)]));aF(!0);let g=()=>{ao(B,{...E,...e}),aF(!1),requestAnimationFrame(()=>{ai.current&&ak(ai.current,320)}),au(`/api/roadmap/layout${a}`,{positions:e}).then(({error:b})=>{if(b)return L(b);(0,ae.undoToast)("Arranged the map",async()=>{let{error:b}=await au(`/api/roadmap/layout${a}`,{positions:f});if(b)throw Error(b);await ap()})})};if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return g();let h=new Map(G.map(a=>[a.id,a.position])),i=performance.now(),j=a=>{let b=Math.min(1,(a-i)/420),c=1-Math.pow(1-b,4);H(a=>a.map(a=>{let b=h.get(a.id),d=e[a.id];return b&&d?{...a,position:{x:b.x+(d.x-b.x)*c,y:b.y+(d.y-b.y)*c}}:a})),b<1?requestAnimationFrame(j):g()};requestAnimationFrame(j)},disabled:aE,title:"Tidy the map: epics in one column each side of their horizon, nothing overlapping",children:[(0,b.jsx)(k,{})," Arrange"]}),(0,b.jsxs)(r.Button,{size:"sm",variant:"outline",onClick:()=>ac(!0),children:[(0,b.jsx)(h.FileText,{})," Plan from spec"]}),B.some(a=>null!==a.parent&&"done"!==a.status)&&(0,b.jsxs)(r.Button,{size:"sm",variant:"outline",onClick:()=>af(!0),children:[(0,b.jsx)(l.ListTree,{})," Break down epics…"]}),(0,b.jsxs)(r.Button,{size:"sm",onClick:()=>aa(""),className:"bg-accent text-accent-fg hover:bg-accent/90",children:[(0,b.jsx)(m.Plus,{})," Horizon"]})]})]}),"map"===y?(0,b.jsx)("div",{ref:ah,className:"relative flex-1 min-h-0",children:(0,b.jsxs)(d.ReactFlow,{nodes:aC,edges:at,nodeTypes:x.nodeTypes,onNodesChange:aD,onNodeClick:(a,b)=>N(b.id),onNodeContextMenu:(a,b)=>aP(b.id,a),onNodeDragStart:()=>{ag.current=!0},onNodeDragStop:(b,c,d)=>{let e;return ag.current=!1,e=Object.fromEntries(d.map(a=>[a.id,{x:Math.round(a.position.x),y:Math.round(a.position.y)}])),void(ao(B,{...E,...e}),au(`/api/roadmap/layout${a}`,{positions:e}).then(({error:a})=>{a&&L(a),al.current&&(al.current=!1,ap())}))},nodesConnectable:!1,deleteKeyCode:null,colorMode:an?"dark":"light",onInit:ak,minZoom:.2,style:ax,children:[(0,b.jsx)(d.Background,{variant:d.BackgroundVariant.Dots,gap:20,size:1}),(0,b.jsx)(d.Controls,{showInteractive:!1})]})}):(0,b.jsx)(A,{items:B,today:z,onSelect:N,onItemContextMenu:aP,progressById:aB.progress}),(0,b.jsx)(aj,{item:aM,items:B,onClose:()=>N(null),editing:!!aM&&O===aM.id,onEditingChange:a=>P(a?M:null),actions:aO,onSave:aK,onDelete:aL,onAddFeature:a=>{N(null),aa(a)},onEditRaw:a=>{e(a)},tasksById:ay,progressById:aB.progress,onSelect:N}),(0,b.jsx)(_,{at:Q,items:B,actions:aO,onClose:()=>S(null)}),aQ]})}function az({items:a,tasksById:c}){let d=a.filter(a=>null!==a.parent),e=a=>d.filter(b=>b.status===a).length,f=[...new Set(d.flatMap(a=>a.tasks))].map(a=>c[a]).filter(a=>a&&"cancelled"!==a.status),g=f.filter(a=>"done"===a.status).length;return(0,b.jsxs)("div",{className:"hidden items-center gap-4 font-mono text-[11px] text-muted md:flex",children:[["in-progress","paused","done","planned"].filter(a=>"paused"!==a||e(a)>0).map(a=>(0,b.jsxs)("span",{className:"flex items-center gap-1.5",children:[(0,b.jsx)(x.StatusDot,{status:a}),(0,b.jsx)("span",{className:(0,v.cn)("tabular-nums","in-progress"===a&&e(a)>0?"text-accent":"text-txt"),children:e(a)}),x.STATUS_LABEL[a].toLowerCase()]},a)),f.length>0&&(0,b.jsxs)("span",{className:"flex items-center gap-2 border-l border-border pl-4",children:[(0,b.jsx)("span",{className:"relative h-1 w-20 overflow-hidden rounded-full bg-border",children:(0,b.jsx)("span",{className:"absolute inset-y-0 left-0 rounded-full bg-teal",style:{width:`${g/f.length*100}%`}})}),(0,b.jsxs)("span",{children:[(0,b.jsxs)("span",{className:"tabular-nums text-txt",children:[g,"/",f.length]})," tasks"]})]})]})}function aA({drift:a,onSelect:c,onApply:d}){return(0,b.jsxs)("details",{className:"group relative",children:[(0,b.jsxs)("summary",{className:"flex h-8 cursor-pointer list-none items-center gap-1.5 rounded-md border border-amber/40 bg-amber/10 px-2.5 text-xs font-medium text-txt hover:bg-amber/15 [&::-webkit-details-marker]:hidden",children:[(0,b.jsx)(f.AlertTriangle,{className:"h-3.5 w-3.5 text-amber"})," ",a.length," need attention"]}),(0,b.jsx)("ul",{className:"absolute right-0 top-full z-30 mt-1.5 max-h-72 w-80 overflow-y-auto rounded-lg border border-border bg-surface text-xs shadow-xl",children:a.map(a=>(0,b.jsxs)("li",{className:"flex items-start gap-2 border-b border-border px-3 py-2.5 last:border-0",children:[(0,b.jsx)("span",{className:"mt-1 h-1.5 w-1.5 shrink-0 rounded-full bg-amber"}),(0,b.jsx)("button",{type:"button",onClick:()=>c(a.id),className:"flex-1 text-left leading-relaxed text-muted hover:text-txt",children:a.message}),a.suggestedStatus&&(0,b.jsxs)("button",{type:"button",onClick:()=>d(a),className:"shrink-0 rounded-sm border border-border px-1.5 py-0.5 font-mono text-[10px] text-txt hover:border-accent hover:text-accent",title:`Set status to ${a.suggestedStatus}`,children:["→ ",a.suggestedStatus]})]},`${a.id}-${a.kind}`))})]})}a.s(["default",0,function(){return(0,b.jsx)("div",{className:"flex flex-col h-[calc(100svh-3rem)]",children:(0,b.jsx)(c.Suspense,{children:(0,b.jsx)(ay,{})})})}],690793)}];
|
|
3
|
+
${e.trim()}`))},className:"flex flex-col gap-3",children:[(0,b.jsx)("textarea",{autoFocus:!0,value:e,onChange:a=>f(a.target.value),placeholder:"Paste a feature spec…",rows:12,className:"w-full resize-y rounded-md border border-border bg-bg px-3 py-2 text-sm text-txt placeholder:text-muted focus:outline-none focus:ring-1 focus:ring-accent"}),(0,b.jsx)("p",{className:"text-xs text-muted",children:"The agent asks where the tasks go (a new epic, an existing epic, or no epic) and shows a plan before writing anything."}),(0,b.jsxs)("div",{className:"flex justify-end gap-2",children:[(0,b.jsx)(r.Button,{type:"button",variant:"ghost",size:"sm",onClick:()=>{f(""),d(!1)},children:"Cancel"}),(0,b.jsx)(r.Button,{type:"submit",size:"sm",disabled:!e.trim(),className:"bg-accent text-accent-fg hover:bg-accent/90",children:"Break down"})]})]})]})})}function as({open:a,onOpenChange:c,items:d}){return(0,b.jsx)(ap.Dialog,{open:a,onOpenChange:c,children:(0,b.jsxs)(ap.DialogContent,{className:"max-w-lg bg-surface border-border text-txt",children:[(0,b.jsx)(ap.DialogTitle,{className:"text-sm font-semibold text-txt",children:"Break down epics"}),(0,b.jsx)(at,{items:d,onDone:()=>c(!1)})]})})}function at({items:a,onDone:d}){let e,f=(e=(a,b)=>a.order-b.order,a.filter(a=>null===a.parent).sort(e).map(b=>({horizon:b,epics:a.filter(a=>a.parent===b.id&&"done"!==a.status).sort((a,b)=>Number(a.tasks.length>0)-Number(b.tasks.length>0)||e(a,b))})).filter(a=>a.epics.length>0)),[g,h]=(0,c.useState)(()=>new Set(f.flatMap(a=>a.epics.filter(a=>0===a.tasks.length).map(a=>a.id)))),i=(0,R.useChats)().runningCount,j=Math.max(0,Q.MAX_RUNNING_CHATS-i),k=g.size>j;return(0,b.jsxs)("form",{onSubmit:function(a){if(a.preventDefault(),g.size&&!k)for(let a of(d(),f))for(let b of a.epics)g.has(b.id)&&(0,w.askAgent)(`Break down epic ${b.id} into tasks.`,{newChat:!0})},className:"flex flex-col gap-3",children:[(0,b.jsx)("div",{className:"max-h-[50vh] overflow-y-auto rounded-md border border-border",children:f.map(a=>(0,b.jsxs)("div",{children:[(0,b.jsxs)("div",{className:"sticky top-0 bg-surface2 px-3 py-1 text-[10px] font-mono uppercase tracking-widest text-muted",children:[a.horizon.id," · ",a.horizon.title]}),(0,b.jsx)("ul",{children:a.epics.map(a=>{let c=g.has(a.id);return(0,b.jsx)("li",{className:"border-b border-border last:border-b-0",children:(0,b.jsxs)("label",{className:"flex items-start gap-2 px-3 py-1.5 text-xs cursor-pointer has-[:disabled]:cursor-not-allowed",children:[(0,b.jsx)("input",{type:"checkbox",checked:c,disabled:!c&&g.size>=j,onChange:()=>{var b;return b=a.id,void h(a=>{let c=new Set(a);return c.delete(b)||c.add(b),c})},className:"mt-0.5 accent-accent"}),(0,b.jsxs)("span",{className:"flex-1 min-w-0 text-txt",children:[(0,b.jsx)("span",{className:"font-mono text-muted mr-1",children:a.id}),a.title]}),a.tasks.length>0&&(0,b.jsxs)("span",{className:"shrink-0 text-[10px] font-mono text-muted",children:["has ",a.tasks.length," task",1===a.tasks.length?"":"s"]})]})},a.id)})})]},a.horizon.id))}),(0,b.jsx)("p",{className:k||0===j?"text-xs text-amber":"text-xs text-muted",children:0===j?`All ${Q.MAX_RUNNING_CHATS} agent slots are busy. Stop a chat or wait for one to finish.`:k?`${g.size} selected, but only ${j} of ${Q.MAX_RUNNING_CHATS} agent slots ${1===j?"is":"are"} free (${i} running). Uncheck some or stop a chat.`:`One chat per epic, running at once (${j} of ${Q.MAX_RUNNING_CHATS} agent slots free). Each shows a plan before writing anything.`}),(0,b.jsxs)("div",{className:"flex justify-end gap-2",children:[(0,b.jsx)(r.Button,{type:"button",variant:"ghost",size:"sm",onClick:d,children:"Cancel"}),(0,b.jsxs)(r.Button,{type:"submit",size:"sm",disabled:!g.size||k,className:"bg-accent text-accent-fg hover:bg-accent/90",children:["Break down ",g.size||""," epic",1===g.size?"":"s"]})]})]})}async function au(a,b){try{let c=await fetch(a,void 0===b?void 0:{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(b)}),d=await c.json().catch(()=>null);if(!c.ok)return{error:d?.error??`Request failed (${c.status})`};return{data:d}}catch{return{error:"Could not reach the server"}}}function av(a,b,c,d){var f;let g,h,i,j,k,[l,m]=(f=!d,h=(g=a=>({x:a.position.x+(a.measured?.width??("horizon"===a.type?C.HORIZON_W:C.FEATURE_W))/2,y:a.position.y+(a.measured?.height??48)/2}))(b),j=(i=g(c)).x-h.x,k=i.y-h.y,f||Math.abs(j)>Math.abs(k)?j>0?[e.Position.Right,e.Position.Left]:[e.Position.Left,e.Position.Right]:k>0?[e.Position.Bottom,e.Position.Top]:[e.Position.Top,e.Position.Bottom]);return{id:a,source:b.id,target:c.id,sourceHandle:l,targetHandle:`${m}-t`,type:d?"straight":"default",selectable:!1,...function(a,b,c){if(c)return"done"===a.data.item.status?{style:{stroke:"var(--color-accent)",strokeWidth:3}}:{style:{stroke:"var(--color-border2)",strokeWidth:3,strokeDasharray:"6 6"}};let d=b.data.item.status;return"in-progress"===d?{animated:!0,style:{stroke:"var(--color-accent)",strokeWidth:2}}:"done"===d?{style:{stroke:"var(--color-border2)",strokeWidth:1.5}}:{style:{stroke:"var(--color-border2)",strokeWidth:1.5,strokeDasharray:"2 5",strokeLinecap:"round"}}}(b,c,d)}}function aw(a){let b=new MutationObserver(a);return b.observe(document.documentElement,{attributes:!0,attributeFilter:["class"]}),()=>b.disconnect()}let ax={"--xy-background-color":"var(--color-bg)"};function ay(){let{rootParam:a,openDoc:e,board:f,demo:i}=(0,p.useApp)(),{showAbout:j}=(0,R.useChats)(),s=(0,o.useRouter)(),y=(0,o.useSearchParams)(),z="timeline"===y.get("view")?"timeline":"map",B=(0,u.localToday)(),[D,E]=(0,c.useState)([]),[F,G]=(0,c.useState)({}),[H,I]=(0,c.useState)([]),[J,K]=(0,c.useState)(!0),[L,M]=(0,c.useState)(null),[N,O]=(0,c.useState)(null),[P,Q]=(0,c.useState)(null),[S,T]=(0,c.useState)(null),U=y.get("item"),[V,W]=(0,c.useState)(null);U!==V&&(W(U),U&&O(U));let[X,Y]=(0,c.useState)(null),[Z,$]=(0,c.useState)(!1),[aa,ab]=(0,c.useState)(null),[ac,ad]=(0,c.useState)(!1),[af,ag]=(0,c.useState)(!1),ah=(0,c.useRef)(!1),ai=(0,c.useRef)(null),ak=(0,c.useRef)(null),al=(0,c.useCallback)((a,b=0)=>{ak.current=a;let c=ai.current?.clientWidth??0,d=a.getNodesBounds(a.getNodes());if(!c||!d.width)return;let e=Math.min(1,Math.max(.75,(c-80)/d.width));a.setViewport({x:c/2-(d.x+d.width/2)*e,y:40-d.y*e,zoom:e},{duration:b})},[]),am=(0,c.useRef)(!1),an=(0,c.useRef)(0),ao=(0,c.useSyncExternalStore)(aw,()=>document.documentElement.classList.contains("dark"),()=>!0),ap=(0,c.useCallback)((a,b)=>{E(a),G(b),I(c=>{let d,e;return d=(0,C.resolvePositions)(a,b),e=new Map(c.map(a=>[a.id,a])),a.map(a=>{let b=e.get(a.id);return{id:a.id,type:null===a.parent?"horizon":"feature",position:d[a.id]??{x:0,y:0},data:{item:a},measured:b?.measured,selected:b?.selected}})})},[]),at=(0,c.useCallback)(()=>{let b=++an.current;return au(`/api/roadmap${a}`).then(({data:a,error:c})=>{if(b===an.current){if(K(!1),c){M(c),ap([],{}),O(null);return}M(null),Y(a?.generateSource??null),ap(a?.items??[],a?.layout??{})}})},[a,ap]);(0,c.useEffect)(()=>{at()},[at]),(0,c.useEffect)(()=>{let a=new EventSource("/api/events");return a.onmessage=a=>{try{let b=JSON.parse(a.data);if("roadmap_updated"!==b.type)return;ah.current?am.current=!0:at()}catch{}},()=>a.close()},[at]);let ay=(0,c.useMemo)(()=>{let a=new Map(H.map(a=>[a.id,a])),b=[],c=D.filter(a=>null===a.parent).sort((a,b)=>a.order-b.order);for(let d of(c.forEach((d,e)=>{let f=a.get(d.id),g=c[e+1]&&a.get(c[e+1].id);f&&g&&b.push(av(`spine-${d.id}`,f,g,!0))}),D)){let c=d.parent&&a.get(d.parent),e=a.get(d.id);c&&e&&"horizon"===c.type&&b.push(av(`branch-${d.id}`,c,e,!1))}return b},[D,H]),aB=(0,c.useMemo)(()=>Object.fromEntries(Object.values(f??{}).flat().map(a=>[a.id,a])),[f]),aC=(0,c.useMemo)(()=>(0,u.roadmapHealth)(D,aB,B),[D,aB,B]),aD=(0,c.useMemo)(()=>{let a=Object.values(aB),b=new Map(D.filter(a=>null===a.parent).sort((a,b)=>a.order-b.order).map((a,b)=>[a.id,b+1]));return H.map(c=>{var d;let e,{item:f}=c.data,g=D.filter(a=>a.parent===f.id),h="feature"===c.type&&"in-progress"===f.status?t(f,a):null;return{...c,data:{...c.data,progress:aC.progress[c.id],drift:aC.drift.filter(a=>a.id===c.id).map(a=>a.message),dueState:(0,u.dueState)(f.due,f.status,B),..."feature"===c.type&&{...(d=f.tasks,{taskDue:e=(0,u.taskDueSummary)(d,aB,B),taskDueSoon:!!e?.next&&"soon"===(0,u.dueState)(e.next,"planned",B)}),taskStatuses:f.tasks.map(a=>aB[a]?.status).filter(a=>!!a&&"cancelled"!==a),nextTaskId:h?.kind==="ready"?h.taskId:null},..."horizon"===c.type&&{chapter:b.get(f.id),epics:{done:g.filter(a=>"done"===a.status).length,total:g.length}}}}})},[H,D,aC,B,aB]),aE=(0,c.useCallback)(a=>I(b=>(0,d.applyNodeChanges)(a,b)),[]),[aF,aG]=(0,c.useState)(!1);async function aH(){$(!0),M(null);let{data:b,error:c}=await au(`/api/roadmap/generate${a}`,{});if(c){M(c),$(!1);return}let d=Object.fromEntries(Object.entries((0,C.resolvePositions)(b?.items??[],{})).map(([a,b])=>[a,{x:Math.round(b.x),y:Math.round(b.y)}])),{error:e}=await au(`/api/roadmap/layout${a}`,{positions:d});await at(),e&&M(e),$(!1)}let aI=Object.values(f??{}).flat().filter(a=>"cancelled"!==a.status).length,aJ="roadmap-md"===X?"from ROADMAP.md":"tasks"===X?`from ${aI} tasks, grouped by phase`:"starter horizons: Shipped · Now · Next · Later";async function aK(b){let{error:c}=await au(`/api/roadmap/create${a}`,{title:b,parent:aa||null});return c||(await at(),null)}async function aL(b,c){ap(D.map(a=>a.id===b?{...a,...c}:a),F);let{data:d,error:e}=await au(`/api/roadmap/update${a}`,{id:b,patch:c});if(e)return await at(),e;let f=d?.item;return f?ap(D.map(a=>a.id===b?f:a),F):await at(),null}async function aM(b){let{data:c,error:d}=await au(`/api/roadmap/delete${a}`,{id:b});return d||(ap(D.filter(a=>a.id!==b),F),c&&(0,ae.undoToast)(`Deleted ${b}`,async()=>{let{error:b}=await au(`/api/roadmap/restore${a}`,c);if(b)throw Error(b);await at()}),null)}let aN=D.find(a=>a.id===N)??null,aO=a=>{a&&M(a)},aP={edit:a=>{O(a),Q(a)},setStatus:(a,b)=>{aL(a,{status:b}).then(aO)},move:(a,b)=>{aL(a,{parent:b}).then(aO)},addEpic:a=>{O(null),ab(a)},duplicate:async b=>{let c=D.find(a=>a.id===b);if(!c)return;let{data:d,error:e}=await au(`/api/roadmap/create${a}`,{title:`${c.title} (copy)`,parent:c.parent,status:"planned",order:c.order+1,due:c.due,body:c.body});if(e)return M(e);await at(),d?.item&&O(d.item.id)},openFile:a=>e(a),chat:a=>{O(null),j({kind:"epic",id:a})},remove:async a=>{let b=await aM(a);if(b)return M(b);N===a&&O(null)}},aQ=(a,b)=>{i||(b.preventDefault(),T({id:a,x:b.clientX,y:b.clientY}))},aR=(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(aq,{open:null!==aa,heading:aa?`New feature under ${aa}`:"New horizon",onOpenChange:a=>{a||ab(null)},onSubmit:aK}),(0,b.jsx)(ar,{open:ac,onOpenChange:ad}),(0,b.jsx)(as,{open:af,onOpenChange:ag,items:D})]});return J?(0,b.jsx)("div",{className:"flex-1 flex items-center justify-center text-sm text-muted",children:"Loading…"}):0===D.length?(0,b.jsxs)("div",{className:"flex-1 p-6",children:[L&&(0,b.jsx)("p",{className:"mb-4 text-sm text-danger",children:L}),(0,b.jsx)(q.EmptyState,{icon:"🗺️",message:"No roadmap yet",subMessage:"Items live in plans/roadmap/R*.md",bordered:!0}),!i&&(0,b.jsxs)("div",{className:"mt-4 flex flex-col items-center gap-2",children:[(0,b.jsxs)("div",{className:"flex gap-2",children:[(0,b.jsxs)(r.Button,{size:"sm",onClick:aH,disabled:Z,className:"bg-accent text-accent-fg hover:bg-accent/90",children:[(0,b.jsx)(n.Sparkles,{})," ",Z?"Generating…":"Generate roadmap"]}),(0,b.jsxs)(r.Button,{size:"sm",variant:"outline",onClick:()=>(0,w.askAgent)("Plan a roadmap for this project."),disabled:Z,children:[(0,b.jsx)(g.Bot,{})," Plan with agent"]}),(0,b.jsxs)(r.Button,{size:"sm",variant:"outline",onClick:()=>ad(!0),disabled:Z,children:[(0,b.jsx)(h.FileText,{})," Plan from spec"]}),(0,b.jsxs)(r.Button,{size:"sm",variant:"outline",onClick:()=>ab(""),disabled:Z,children:[(0,b.jsx)(m.Plus,{})," Create first horizon"]})]}),(0,b.jsxs)("p",{className:"text-xs text-muted",children:["Generate ",aJ,". Existing files are not modified."]})]}),aR]}):(0,b.jsxs)("div",{className:"relative flex flex-1 min-h-0 flex-col",children:[(0,b.jsxs)("div",{className:"flex shrink-0 items-center gap-4 border-b border-border px-3 py-2",children:[(0,b.jsx)("div",{className:"flex rounded-md border border-border p-0.5 text-xs",children:["map","timeline"].map(a=>(0,b.jsx)("button",{type:"button",onClick:()=>{let b,c;return b=new URLSearchParams(y.toString()),"map"===a?b.delete("view"):b.set("view",a),c=b.toString(),void s.replace(c?`/roadmap?${c}`:"/roadmap")},className:(0,v.cn)("rounded-sm px-3 py-1 capitalize",z===a?"bg-surface2 text-txt":"text-muted hover:text-txt"),children:a},a))}),(0,b.jsx)(az,{items:D,tasksById:aB}),(0,b.jsxs)("div",{className:"ml-auto flex items-center gap-2",children:[L&&(0,b.jsx)("p",{className:"text-xs text-danger",children:L}),aC.drift.length>0&&(0,b.jsx)(aA,{drift:aC.drift,onSelect:O,onApply:i?void 0:a=>a.suggestedStatus&&aL(a.id,{status:a.suggestedStatus}).then(a=>{a&&M(a)})}),!i&&(0,b.jsxs)(b.Fragment,{children:["map"===z&&(0,b.jsxs)(r.Button,{size:"sm",variant:"outline",onClick:function(){let b=a=>({x:Math.round(a.x),y:Math.round(a.y)}),c=new Map(H.map(a=>[a.id,a.measured?.height??48])),d=(0,C.resolvePositions)(D,F),e=Object.fromEntries(Object.entries((0,C.arrangePositions)(D,a=>c.get(a)??48)).map(([a,c])=>[a,b(c)])),f=Object.fromEntries(Object.entries(d).map(([a,c])=>[a,b(c)]));aG(!0);let g=()=>{ap(D,{...F,...e}),aG(!1),requestAnimationFrame(()=>{ak.current&&al(ak.current,320)}),au(`/api/roadmap/layout${a}`,{positions:e}).then(({error:b})=>{if(b)return M(b);(0,ae.undoToast)("Arranged the map",async()=>{let{error:b}=await au(`/api/roadmap/layout${a}`,{positions:f});if(b)throw Error(b);await at()})})};if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return g();let h=new Map(H.map(a=>[a.id,a.position])),i=performance.now(),j=a=>{let b=Math.min(1,(a-i)/420),c=1-Math.pow(1-b,4);I(a=>a.map(a=>{let b=h.get(a.id),d=e[a.id];return b&&d?{...a,position:{x:b.x+(d.x-b.x)*c,y:b.y+(d.y-b.y)*c}}:a})),b<1?requestAnimationFrame(j):g()};requestAnimationFrame(j)},disabled:aF,title:"Tidy the map: epics in one column each side of their horizon, nothing overlapping",children:[(0,b.jsx)(k,{})," Arrange"]}),(0,b.jsxs)(r.Button,{size:"sm",variant:"outline",onClick:()=>ad(!0),children:[(0,b.jsx)(h.FileText,{})," Plan from spec"]}),D.some(a=>null!==a.parent&&"done"!==a.status)&&(0,b.jsxs)(r.Button,{size:"sm",variant:"outline",onClick:()=>ag(!0),children:[(0,b.jsx)(l.ListTree,{})," Break down epics…"]}),(0,b.jsxs)(r.Button,{size:"sm",onClick:()=>ab(""),className:"bg-accent text-accent-fg hover:bg-accent/90",children:[(0,b.jsx)(m.Plus,{})," Horizon"]})]})]})]}),"map"===z?(0,b.jsx)("div",{ref:ai,className:"relative flex-1 min-h-0",children:(0,b.jsxs)(d.ReactFlow,{nodes:aD,edges:ay,nodeTypes:x.nodeTypes,onNodesChange:aE,nodesDraggable:!i,onNodeClick:(a,b)=>O(b.id),onNodeContextMenu:(a,b)=>aQ(b.id,a),onNodeDragStart:()=>{ah.current=!0},onNodeDragStop:(b,c,d)=>{let e;return ah.current=!1,e=Object.fromEntries(d.map(a=>[a.id,{x:Math.round(a.position.x),y:Math.round(a.position.y)}])),void(ap(D,{...F,...e}),au(`/api/roadmap/layout${a}`,{positions:e}).then(({error:a})=>{a&&M(a),am.current&&(am.current=!1,at())}))},nodesConnectable:!1,deleteKeyCode:null,colorMode:ao?"dark":"light",onInit:al,minZoom:.2,style:ax,children:[(0,b.jsx)(d.Background,{variant:d.BackgroundVariant.Dots,gap:20,size:1}),(0,b.jsx)(d.Controls,{showInteractive:!1})]})}):(0,b.jsx)(A,{items:D,today:B,onSelect:O,onItemContextMenu:aQ,progressById:aC.progress}),(0,b.jsx)(aj,{item:aN,items:D,onClose:()=>O(null),editing:!!aN&&P===aN.id,onEditingChange:a=>Q(a?N:null),actions:aP,onSave:aL,onDelete:aM,onAddFeature:a=>{O(null),ab(a)},onEditRaw:a=>{e(a)},tasksById:aB,progressById:aC.progress,onSelect:O}),(0,b.jsx)(_,{at:S,items:D,actions:aP,onClose:()=>T(null)}),aR]})}function az({items:a,tasksById:c}){let d=a.filter(a=>null!==a.parent),e=a=>d.filter(b=>b.status===a).length,f=[...new Set(d.flatMap(a=>a.tasks))].map(a=>c[a]).filter(a=>a&&"cancelled"!==a.status),g=f.filter(a=>"done"===a.status).length;return(0,b.jsxs)("div",{className:"hidden items-center gap-4 font-mono text-[11px] text-muted md:flex",children:[["in-progress","paused","done","planned"].filter(a=>"paused"!==a||e(a)>0).map(a=>(0,b.jsxs)("span",{className:"flex items-center gap-1.5",children:[(0,b.jsx)(x.StatusDot,{status:a}),(0,b.jsx)("span",{className:(0,v.cn)("tabular-nums","in-progress"===a&&e(a)>0?"text-accent":"text-txt"),children:e(a)}),x.STATUS_LABEL[a].toLowerCase()]},a)),f.length>0&&(0,b.jsxs)("span",{className:"flex items-center gap-2 border-l border-border pl-4",children:[(0,b.jsx)("span",{className:"relative h-1 w-20 overflow-hidden rounded-full bg-border",children:(0,b.jsx)("span",{className:"absolute inset-y-0 left-0 rounded-full bg-teal",style:{width:`${g/f.length*100}%`}})}),(0,b.jsxs)("span",{children:[(0,b.jsxs)("span",{className:"tabular-nums text-txt",children:[g,"/",f.length]})," tasks"]})]})]})}function aA({drift:a,onSelect:c,onApply:d}){return(0,b.jsxs)("details",{className:"group relative",children:[(0,b.jsxs)("summary",{className:"flex h-8 cursor-pointer list-none items-center gap-1.5 rounded-md border border-amber/40 bg-amber/10 px-2.5 text-xs font-medium text-txt hover:bg-amber/15 [&::-webkit-details-marker]:hidden",children:[(0,b.jsx)(f.AlertTriangle,{className:"h-3.5 w-3.5 text-amber"})," ",a.length," need attention"]}),(0,b.jsx)("ul",{className:"absolute right-0 top-full z-30 mt-1.5 max-h-72 w-80 overflow-y-auto rounded-lg border border-border bg-surface text-xs shadow-xl",children:a.map(a=>(0,b.jsxs)("li",{className:"flex items-start gap-2 border-b border-border px-3 py-2.5 last:border-0",children:[(0,b.jsx)("span",{className:"mt-1 h-1.5 w-1.5 shrink-0 rounded-full bg-amber"}),(0,b.jsx)("button",{type:"button",onClick:()=>c(a.id),className:"flex-1 text-left leading-relaxed text-muted hover:text-txt",children:a.message}),a.suggestedStatus&&d&&(0,b.jsxs)("button",{type:"button",onClick:()=>d(a),className:"shrink-0 rounded-sm border border-border px-1.5 py-0.5 font-mono text-[10px] text-txt hover:border-accent hover:text-accent",title:`Set status to ${a.suggestedStatus}`,children:["→ ",a.suggestedStatus]})]},`${a.id}-${a.kind}`))})]})}a.s(["default",0,function(){return(0,b.jsx)("div",{className:"flex flex-col h-[calc(100svh-3rem)]",children:(0,b.jsx)(c.Suspense,{children:(0,b.jsx)(ay,{})})})}],690793)}];
|
|
4
4
|
|
|
5
5
|
//# sourceMappingURL=src_app_%28app%29_roadmap_page_tsx_0vcq3jr._.js.map
|