vibedoc 1.7.0 → 1.8.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 +9 -0
- package/.next/build-manifest.json +3 -3
- package/.next/prerender-manifest.json +42 -14
- package/.next/routes-manifest.json +54 -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)/manual-tests/page/app-paths-manifest.json +3 -0
- package/.next/server/app/(app)/manual-tests/page/build-manifest.json +20 -0
- package/.next/server/app/(app)/manual-tests/page/next-font-manifest.json +11 -0
- package/.next/server/app/(app)/manual-tests/page/react-loadable-manifest.json +1 -0
- package/.next/server/app/(app)/manual-tests/page/server-reference-manifest.json +4 -0
- package/.next/server/app/(app)/manual-tests/page.js +15 -0
- package/.next/server/app/(app)/manual-tests/page.js.map +5 -0
- package/.next/server/app/(app)/manual-tests/page.js.nft.json +1 -0
- package/.next/server/app/(app)/manual-tests/page_client-reference-manifest.js +3 -0
- package/.next/server/app/(app)/memory/page.js.nft.json +1 -1
- package/.next/server/app/(app)/memory/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(app)/roadmap/page.js.nft.json +1 -1
- package/.next/server/app/(app)/roadmap/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(app)/settings/page.js.nft.json +1 -1
- package/.next/server/app/(app)/settings/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(app)/setup/page.js.nft.json +1 -1
- package/.next/server/app/(app)/setup/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_global-error.html +1 -1
- package/.next/server/app/_global-error.rsc +1 -1
- package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_not-found.html +1 -1
- package/.next/server/app/_not-found.rsc +3 -2
- package/.next/server/app/_not-found.segments/_full.segment.rsc +3 -2
- package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +3 -2
- package/.next/server/app/_not-found.segments/_tree.segment.rsc +3 -2
- package/.next/server/app/activity.html +1 -1
- package/.next/server/app/activity.rsc +20 -18
- package/.next/server/app/activity.segments/!KGFwcCk/activity/__PAGE__.segment.rsc +7 -6
- package/.next/server/app/activity.segments/_full.segment.rsc +20 -18
- package/.next/server/app/activity.segments/_tree.segment.rsc +3 -2
- package/.next/server/app/api/activity/route.js +2 -2
- package/.next/server/app/api/activity/route.js.nft.json +1 -1
- package/.next/server/app/api/backlinks/route.js +2 -2
- package/.next/server/app/api/backlinks/route.js.nft.json +1 -1
- package/.next/server/app/api/chat/route.js +1 -1
- package/.next/server/app/api/chat/route.js.nft.json +1 -1
- package/.next/server/app/api/context/route.js +2 -2
- package/.next/server/app/api/context/route.js.nft.json +1 -1
- package/.next/server/app/api/conversations/route.js +2 -2
- package/.next/server/app/api/conversations/route.js.nft.json +1 -1
- package/.next/server/app/api/decisions/route.js +2 -2
- package/.next/server/app/api/decisions/route.js.nft.json +1 -1
- package/.next/server/app/api/docs/route.js +1 -1
- package/.next/server/app/api/docs/route.js.nft.json +1 -1
- package/.next/server/app/api/explorer/route.js +2 -2
- package/.next/server/app/api/explorer/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/route.js +1 -1
- package/.next/server/app/api/mcp/route.js.nft.json +1 -1
- package/.next/server/app/api/memory/route.js +2 -2
- package/.next/server/app/api/memory/route.js.nft.json +1 -1
- package/.next/server/app/api/plan/apply/route.js +3 -3
- package/.next/server/app/api/plan/apply/route.js.nft.json +1 -1
- package/.next/server/app/api/projects/route.js +2 -2
- package/.next/server/app/api/projects/route.js.nft.json +1 -1
- package/.next/server/app/api/registry/route.js +2 -2
- package/.next/server/app/api/registry/route.js.nft.json +1 -1
- package/.next/server/app/api/roadmap/create/route.js +3 -3
- package/.next/server/app/api/roadmap/create/route.js.nft.json +1 -1
- package/.next/server/app/api/roadmap/delete/route.js +3 -3
- package/.next/server/app/api/roadmap/delete/route.js.nft.json +1 -1
- package/.next/server/app/api/roadmap/generate/route.js +3 -3
- package/.next/server/app/api/roadmap/generate/route.js.nft.json +1 -1
- package/.next/server/app/api/roadmap/layout/route.js +3 -3
- package/.next/server/app/api/roadmap/layout/route.js.nft.json +1 -1
- package/.next/server/app/api/roadmap/restore/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/roadmap/restore/route/build-manifest.json +12 -0
- package/.next/server/app/api/roadmap/restore/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/roadmap/restore/route.js +9 -0
- package/.next/server/app/api/roadmap/restore/route.js.map +5 -0
- package/.next/server/app/api/roadmap/restore/route.js.nft.json +1 -0
- package/.next/server/app/api/roadmap/restore/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/roadmap/route.js +3 -3
- package/.next/server/app/api/roadmap/route.js.nft.json +1 -1
- package/.next/server/app/api/roadmap/update/route.js +3 -3
- package/.next/server/app/api/roadmap/update/route.js.nft.json +1 -1
- package/.next/server/app/api/sessions/route.js +2 -2
- package/.next/server/app/api/sessions/route.js.nft.json +1 -1
- package/.next/server/app/api/settings/route.js +3 -3
- package/.next/server/app/api/settings/route.js.nft.json +1 -1
- package/.next/server/app/api/setup/generate/route.js +1 -1
- package/.next/server/app/api/setup/generate/route.js.nft.json +1 -1
- package/.next/server/app/api/setup/write/route.js +2 -2
- package/.next/server/app/api/setup/write/route.js.nft.json +1 -1
- package/.next/server/app/api/summary/route.js +2 -2
- package/.next/server/app/api/summary/route.js.nft.json +1 -1
- package/.next/server/app/api/tasks/bulk/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/tasks/bulk/route/build-manifest.json +12 -0
- package/.next/server/app/api/tasks/bulk/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/tasks/bulk/route.js +9 -0
- package/.next/server/app/api/tasks/bulk/route.js.map +5 -0
- package/.next/server/app/api/tasks/bulk/route.js.nft.json +1 -0
- package/.next/server/app/api/tasks/bulk/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/tasks/create/route.js +2 -2
- package/.next/server/app/api/tasks/create/route.js.nft.json +1 -1
- package/.next/server/app/api/tasks/delete/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/tasks/delete/route/build-manifest.json +12 -0
- package/.next/server/app/api/tasks/delete/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/tasks/delete/route.js +9 -0
- package/.next/server/app/api/tasks/delete/route.js.map +5 -0
- package/.next/server/app/api/tasks/delete/route.js.nft.json +1 -0
- package/.next/server/app/api/tasks/delete/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/tasks/manual-tests/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/tasks/manual-tests/route/build-manifest.json +12 -0
- package/.next/server/app/api/tasks/manual-tests/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/tasks/manual-tests/route.js +8 -0
- package/.next/server/app/api/tasks/manual-tests/route.js.map +5 -0
- package/.next/server/app/api/tasks/manual-tests/route.js.nft.json +1 -0
- package/.next/server/app/api/tasks/manual-tests/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/tasks/restore/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/tasks/restore/route/build-manifest.json +12 -0
- package/.next/server/app/api/tasks/restore/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/tasks/restore/route.js +9 -0
- package/.next/server/app/api/tasks/restore/route.js.map +5 -0
- package/.next/server/app/api/tasks/restore/route.js.nft.json +1 -0
- package/.next/server/app/api/tasks/restore/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/tasks/review/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/tasks/review/route/build-manifest.json +12 -0
- package/.next/server/app/api/tasks/review/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/tasks/review/route.js +9 -0
- package/.next/server/app/api/tasks/review/route.js.map +5 -0
- package/.next/server/app/api/tasks/review/route.js.nft.json +1 -0
- package/.next/server/app/api/tasks/review/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/tasks/route.js +2 -2
- package/.next/server/app/api/tasks/route.js.nft.json +1 -1
- package/.next/server/app/api/tasks/update/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/tasks/update/route/build-manifest.json +12 -0
- package/.next/server/app/api/tasks/update/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/tasks/update/route.js +9 -0
- package/.next/server/app/api/tasks/update/route.js.map +5 -0
- package/.next/server/app/api/tasks/update/route.js.nft.json +1 -0
- package/.next/server/app/api/tasks/update/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/views/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/views/route/build-manifest.json +12 -0
- package/.next/server/app/api/views/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/views/route.js +9 -0
- package/.next/server/app/api/views/route.js.map +5 -0
- package/.next/server/app/api/views/route.js.nft.json +1 -0
- package/.next/server/app/api/views/route_client-reference-manifest.js +3 -0
- package/.next/server/app/board.html +1 -1
- package/.next/server/app/board.rsc +20 -18
- package/.next/server/app/board.segments/!KGFwcCk/board/__PAGE__.segment.rsc +7 -6
- package/.next/server/app/board.segments/_full.segment.rsc +20 -18
- package/.next/server/app/board.segments/_tree.segment.rsc +3 -2
- package/.next/server/app/chat.html +1 -1
- package/.next/server/app/chat.rsc +20 -18
- package/.next/server/app/chat.segments/!KGFwcCk/chat/__PAGE__.segment.rsc +12 -9
- package/.next/server/app/chat.segments/_full.segment.rsc +20 -18
- package/.next/server/app/chat.segments/_tree.segment.rsc +3 -2
- package/.next/server/app/docs.html +1 -1
- package/.next/server/app/docs.rsc +20 -18
- package/.next/server/app/docs.segments/!KGFwcCk/docs/__PAGE__.segment.rsc +6 -5
- package/.next/server/app/docs.segments/_full.segment.rsc +20 -18
- package/.next/server/app/docs.segments/_tree.segment.rsc +3 -2
- package/.next/server/app/explorer.html +1 -1
- package/.next/server/app/explorer.rsc +20 -18
- package/.next/server/app/explorer.segments/!KGFwcCk/explorer/__PAGE__.segment.rsc +11 -9
- package/.next/server/app/explorer.segments/_full.segment.rsc +20 -18
- package/.next/server/app/explorer.segments/_tree.segment.rsc +3 -2
- package/.next/server/app/index.html +1 -1
- package/.next/server/app/index.rsc +3 -2
- package/.next/server/app/index.segments/__PAGE__.segment.rsc +3 -2
- package/.next/server/app/index.segments/_full.segment.rsc +3 -2
- package/.next/server/app/index.segments/_tree.segment.rsc +3 -2
- package/.next/server/app/manual-tests.html +1 -0
- package/.next/server/app/manual-tests.meta +31 -0
- package/.next/server/app/manual-tests.rsc +31 -0
- package/.next/server/app/manual-tests.segments/!KGFwcCk/manual-tests/__PAGE__.segment.rsc +33 -0
- package/.next/server/app/manual-tests.segments/_full.segment.rsc +31 -0
- package/.next/server/app/manual-tests.segments/_tree.segment.rsc +5 -0
- package/.next/server/app/memory.html +1 -1
- package/.next/server/app/memory.rsc +20 -18
- package/.next/server/app/memory.segments/!KGFwcCk/memory/__PAGE__.segment.rsc +11 -9
- package/.next/server/app/memory.segments/_full.segment.rsc +20 -18
- package/.next/server/app/memory.segments/_tree.segment.rsc +3 -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 +20 -18
- package/.next/server/app/roadmap.segments/!KGFwcCk/roadmap/__PAGE__.segment.rsc +6 -5
- package/.next/server/app/roadmap.segments/_full.segment.rsc +20 -18
- package/.next/server/app/roadmap.segments/_tree.segment.rsc +3 -2
- package/.next/server/app/settings.html +1 -1
- package/.next/server/app/settings.rsc +20 -18
- package/.next/server/app/settings.segments/!KGFwcCk/settings/__PAGE__.segment.rsc +7 -6
- package/.next/server/app/settings.segments/_full.segment.rsc +20 -18
- package/.next/server/app/settings.segments/_tree.segment.rsc +3 -2
- package/.next/server/app/setup.html +1 -1
- package/.next/server/app/setup.rsc +20 -18
- package/.next/server/app/setup.segments/!KGFwcCk/setup/__PAGE__.segment.rsc +11 -9
- package/.next/server/app/setup.segments/_full.segment.rsc +20 -18
- package/.next/server/app/setup.segments/_tree.segment.rsc +3 -2
- package/.next/server/app-paths-manifest.json +9 -0
- package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0-5bkpj._.js → 11mp_@anthropic-ai_sdk_00p3fu1._.js} +1 -1
- package/.next/server/chunks/{11mp_@anthropic-ai_sdk_01l5h3i._.js → 11mp_@anthropic-ai_sdk_01amtux._.js} +1 -1
- package/.next/server/chunks/{11mp_@anthropic-ai_sdk_00psb_y._.js → 11mp_@anthropic-ai_sdk_01jjl08._.js} +1 -1
- package/.next/server/chunks/{11mp_@anthropic-ai_sdk_072r2bd._.js → 11mp_@anthropic-ai_sdk_071zfm8._.js} +1 -1
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_07v3boe._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_09iva72._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_0bom1b1._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_0dvji7p._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_0dzo8jn._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_0hvqsqq._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_0i7i-jw._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_0k0iop5._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_0l3-6aq._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_0oegm3y._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_0p5cyes._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_0qw8i6_._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_0yk-a7v._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_11fsqvb._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_143_7ez._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_14a4-64._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_17d_oma._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_18qwuyb._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_19au8y6._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_1ak_hy5._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_1cqa0nq._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_1i-x_q0._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_1jmtliz._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_1jmtliz._.js.map +1 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_1jouwlj._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_1jouwlj._.js.map +1 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_1r_q5um._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_1r_q5um._.js.map +1 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_1t959xd._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_1t959xd._.js.map +1 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_1vkprw9._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_1vkprw9._.js.map +1 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_1y95ax9._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_1y95ax9._.js.map +1 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_1y9misr._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_1y9misr._.js.map +1 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_21b8wwy._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_21b8wwy._.js.map +1 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_08ecfgc._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_09--sd6._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_0e3mwc6._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_0go4301._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_0iq9dmt._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_0n9ijke._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_0szcyrx._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_0xy2s3x._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_0yaujn7._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_0z9ly74._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1hmq3al._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1tqk4bp._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1x-hr6f._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1zsdhg0._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_20t__fe._.js +3 -0
- package/.next/server/chunks/{[root-of-the-server]__1u_q61h._.js → [root-of-the-server]__0-pmfg2._.js} +2 -2
- package/.next/server/chunks/[root-of-the-server]__02co2yq._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__02co2yq._.js.map +1 -0
- package/.next/server/chunks/{[root-of-the-server]__1y3u5ud._.js → [root-of-the-server]__04tibmn._.js} +2 -2
- package/.next/server/chunks/{[root-of-the-server]__17xb02p._.js → [root-of-the-server]__05g5cgo._.js} +2 -2
- package/.next/server/chunks/{[root-of-the-server]__0aynzrb._.js → [root-of-the-server]__0b5pwze._.js} +2 -2
- package/.next/server/chunks/{[root-of-the-server]__142icjb._.js → [root-of-the-server]__0druay_._.js} +2 -2
- package/.next/server/chunks/{[root-of-the-server]__106gpvh._.js → [root-of-the-server]__0p6ja6l._.js} +2 -2
- package/.next/server/chunks/[root-of-the-server]__0q3-t8a._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0q3-t8a._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__0vcsqzd._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0vcsqzd._.js.map +1 -0
- package/.next/server/chunks/{[root-of-the-server]__0nfvvy9._.js → [root-of-the-server]__1-e3i_5._.js} +2 -2
- package/.next/server/chunks/[root-of-the-server]__1-ic3af._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__1-ic3af._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__11a4ptn._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__11a4ptn._.js.map +1 -0
- package/.next/server/chunks/{[root-of-the-server]__0e59y5j._.js → [root-of-the-server]__11c8641._.js} +2 -2
- package/.next/server/chunks/[root-of-the-server]__12nzy_6._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__12nzy_6._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__15ck1wv._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__15ck1wv._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__1613hjb._.js +30 -19
- package/.next/server/chunks/[root-of-the-server]__1613hjb._.js.map +1 -1
- package/.next/server/chunks/{[root-of-the-server]__06zf_sh._.js → [root-of-the-server]__197vw9g._.js} +2 -2
- package/.next/server/chunks/{[root-of-the-server]__1j0rrps._.js → [root-of-the-server]__19k8t87._.js} +2 -2
- package/.next/server/chunks/{[root-of-the-server]__0eqd-tw._.js → [root-of-the-server]__1ezzeji._.js} +2 -2
- package/.next/server/chunks/[root-of-the-server]__1mrmaf9._.js +3 -0
- package/.next/server/chunks/{[root-of-the-server]__17p0rkn._.js → [root-of-the-server]__1n68akx._.js} +2 -2
- package/.next/server/chunks/[root-of-the-server]__1n68akx._.js.map +1 -0
- package/.next/server/chunks/{[root-of-the-server]__11s76m8._.js → [root-of-the-server]__1npya5q._.js} +2 -2
- package/.next/server/chunks/[root-of-the-server]__1npya5q._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__1qusy4g._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__1qusy4g._.js.map +1 -0
- package/.next/server/chunks/{[root-of-the-server]__1q4ahvz._.js → [root-of-the-server]__1umrorf._.js} +2 -2
- package/.next/server/chunks/{[root-of-the-server]__093hlkh._.js → [root-of-the-server]__1vh9g2o._.js} +2 -2
- package/.next/server/chunks/{[root-of-the-server]__1y-tt29._.js → [root-of-the-server]__1vq38ov._.js} +2 -2
- package/.next/server/chunks/[root-of-the-server]__1xb0fmp._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__1xb0fmp._.js.map +1 -1
- package/.next/server/chunks/_04byth9._.js +24 -19
- package/.next/server/chunks/_04byth9._.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.map +1 -1
- package/.next/server/chunks/_1ivswa9._.js +3 -0
- package/.next/server/chunks/_1ivswa9._.js.map +1 -0
- package/.next/server/chunks/_next-internal_server_app_api_roadmap_restore_route_actions_0skshp1.js +3 -0
- package/.next/server/chunks/_next-internal_server_app_api_roadmap_restore_route_actions_0skshp1.js.map +1 -0
- package/.next/server/chunks/_next-internal_server_app_api_tasks_bulk_route_actions_1k75mlb.js +3 -0
- package/.next/server/chunks/_next-internal_server_app_api_tasks_bulk_route_actions_1k75mlb.js.map +1 -0
- package/.next/server/chunks/_next-internal_server_app_api_tasks_delete_route_actions_1k1g6mw.js +3 -0
- package/.next/server/chunks/_next-internal_server_app_api_tasks_delete_route_actions_1k1g6mw.js.map +1 -0
- package/.next/server/chunks/_next-internal_server_app_api_tasks_manual-tests_route_actions_1rpog0y.js +3 -0
- package/.next/server/chunks/_next-internal_server_app_api_tasks_manual-tests_route_actions_1rpog0y.js.map +1 -0
- package/.next/server/chunks/_next-internal_server_app_api_tasks_restore_route_actions_1ecsti8.js +3 -0
- package/.next/server/chunks/_next-internal_server_app_api_tasks_restore_route_actions_1ecsti8.js.map +1 -0
- package/.next/server/chunks/_next-internal_server_app_api_tasks_review_route_actions_1dly07f.js +3 -0
- package/.next/server/chunks/_next-internal_server_app_api_tasks_review_route_actions_1dly07f.js.map +1 -0
- package/.next/server/chunks/_next-internal_server_app_api_tasks_update_route_actions_0z-ho6g.js +3 -0
- package/.next/server/chunks/_next-internal_server_app_api_tasks_update_route_actions_0z-ho6g.js.map +1 -0
- package/.next/server/chunks/_next-internal_server_app_api_views_route_actions_10-2c0e.js +3 -0
- package/.next/server/chunks/_next-internal_server_app_api_views_route_actions_10-2c0e.js.map +1 -0
- package/.next/server/chunks/ssr/0_g__next_dist_000c5_m._.js +3 -0
- package/.next/server/chunks/ssr/0_g__next_dist_000c5_m._.js.map +1 -0
- package/.next/server/chunks/ssr/{0_nd_mermaid_dist_mermaid_core_mjs_0vv_0i3._.js → 0_nd_mermaid_dist_mermaid_core_mjs_027n2yl._.js} +2 -2
- package/.next/server/chunks/ssr/0_nd_mermaid_dist_mermaid_core_mjs_027n2yl._.js.map +1 -0
- package/.next/server/chunks/ssr/{1u84_katex_dist_katex_mjs_1z0p1bs._.js → 1u84_katex_dist_katex_mjs_1kb5xea._.js} +1 -1
- package/.next/server/chunks/ssr/1u84_katex_dist_katex_mjs_1kb5xea._.js.map +1 -0
- package/.next/server/chunks/ssr/1x05_lucide-react_dist_esm_icons_05ggp3i._.js +1 -1
- package/.next/server/chunks/ssr/1x05_lucide-react_dist_esm_icons_05ggp3i._.js.map +1 -1
- package/.next/server/chunks/ssr/1x05_lucide-react_dist_esm_icons_0wurouw._.js +3 -0
- package/.next/server/chunks/ssr/1x05_lucide-react_dist_esm_icons_0wurouw._.js.map +1 -0
- package/.next/server/chunks/ssr/1x05_lucide-react_dist_esm_icons_14hl50o._.js +3 -0
- package/.next/server/chunks/ssr/1x05_lucide-react_dist_esm_icons_14hl50o._.js.map +1 -0
- package/.next/server/chunks/ssr/1x05_lucide-react_dist_esm_icons_folder-open_mjs_117ipzw._.js +3 -0
- package/.next/server/chunks/ssr/1x05_lucide-react_dist_esm_icons_folder-open_mjs_117ipzw._.js.map +1 -0
- package/.next/server/chunks/ssr/1x05_lucide-react_dist_esm_icons_triangle-alert_mjs_0ei-mpz._.js +3 -0
- package/.next/server/chunks/ssr/1x05_lucide-react_dist_esm_icons_triangle-alert_mjs_0ei-mpz._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0hcextx._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0hcextx._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0xt_0w2._.js.map +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/_071j6mr._.js +4 -0
- package/.next/server/chunks/ssr/_071j6mr._.js.map +1 -0
- package/.next/server/chunks/ssr/_09b02z-._.js +3 -0
- package/.next/server/chunks/ssr/_09b02z-._.js.map +1 -0
- package/.next/server/chunks/ssr/_0d0f1s1._.js +3 -0
- package/.next/server/chunks/ssr/_0d0f1s1._.js.map +1 -0
- package/.next/server/chunks/ssr/_0idb-vo._.js +151 -0
- package/.next/server/chunks/ssr/_0idb-vo._.js.map +1 -0
- package/.next/server/chunks/ssr/_0lnt_va._.js +4 -0
- package/.next/server/chunks/ssr/_0lnt_va._.js.map +1 -0
- package/.next/server/chunks/ssr/_0qlymco._.js +3 -0
- package/.next/server/chunks/ssr/_0qlymco._.js.map +1 -0
- package/.next/server/chunks/ssr/_0qp3gu7._.js +3 -0
- package/.next/server/chunks/ssr/_0qp3gu7._.js.map +1 -0
- package/.next/server/chunks/ssr/_0sg1oeq._.js +3 -0
- package/.next/server/chunks/ssr/_0sg1oeq._.js.map +1 -0
- package/.next/server/chunks/ssr/_14emfpq._.js +3 -0
- package/.next/server/chunks/ssr/_14emfpq._.js.map +1 -0
- package/.next/server/chunks/ssr/_1ftruw6._.js +4 -0
- package/.next/server/chunks/ssr/_1ftruw6._.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/_1ncdakv._.js +4 -0
- package/.next/server/chunks/ssr/_1ncdakv._.js.map +1 -0
- package/.next/server/chunks/ssr/_1t76zdx._.js +3 -0
- package/.next/server/chunks/ssr/_1t76zdx._.js.map +1 -0
- package/.next/server/chunks/ssr/_1x7ggg5._.js +4 -0
- package/.next/server/chunks/ssr/_1x7ggg5._.js.map +1 -0
- package/.next/server/chunks/ssr/_next-internal_server_app_(app)_manual-tests_page_actions_1g5zjb7.js +3 -0
- package/.next/server/chunks/ssr/_next-internal_server_app_(app)_manual-tests_page_actions_1g5zjb7.js.map +1 -0
- package/.next/server/chunks/ssr/{node_modules__pnpm_04khl_s._.js → node_modules__pnpm_01bjcv9._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules__pnpm_08sqeu2._.js → node_modules__pnpm_03qrzdb._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules__pnpm_104pzhc._.js → node_modules__pnpm_06d-fdo._.js} +2 -2
- package/.next/server/chunks/ssr/{node_modules__pnpm_1xzf8g_._.js → node_modules__pnpm_0ctisl0._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules__pnpm_0og06fy._.js → node_modules__pnpm_0fwp8jm._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules__pnpm_0a9b2ei._.js → node_modules__pnpm_0kpu0-2._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules__pnpm_0jpv2b6._.js → node_modules__pnpm_0vry74x._.js} +2 -2
- package/.next/server/chunks/ssr/{node_modules__pnpm_0fd3pr1._.js → node_modules__pnpm_0ycbjbd._.js} +2 -2
- package/.next/server/chunks/ssr/{node_modules__pnpm_1l8k8w1._.js → node_modules__pnpm_1-76qxg._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules__pnpm_0ah02mu._.js → node_modules__pnpm_1-r94f7._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules__pnpm_1yq90z7._.js → node_modules__pnpm_14piqi4._.js} +1 -1
- package/.next/server/chunks/ssr/node_modules__pnpm_14piqi4._.js.map +1 -0
- package/.next/server/chunks/ssr/{node_modules__pnpm_0dwi7mu._.js → node_modules__pnpm_16u1vfb._.js} +2 -2
- package/.next/server/chunks/ssr/node_modules__pnpm_16u1vfb._.js.map +1 -0
- package/.next/server/chunks/ssr/{node_modules__pnpm_0f77_ng._.js → node_modules__pnpm_17i6z2d._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules__pnpm_09_i2jk._.js → node_modules__pnpm_189m48n._.js} +1 -1
- package/.next/server/chunks/ssr/node_modules__pnpm_189m48n._.js.map +1 -0
- package/.next/server/chunks/ssr/{node_modules__pnpm_0ttvopp._.js → node_modules__pnpm_192f222._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules__pnpm_07t_e8c._.js → node_modules__pnpm_1a48_nl._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules__pnpm_195j8p_._.js → node_modules__pnpm_1aa37e1._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules__pnpm_0cj8ryj._.js → node_modules__pnpm_1f440kx._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules__pnpm_0u3u82f._.js → node_modules__pnpm_1fn3ejy._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules__pnpm_0ts89ne._.js → node_modules__pnpm_1min2jl._.js} +1 -1
- package/.next/server/chunks/ssr/node_modules__pnpm_1q89l7p._.js +3 -0
- package/.next/server/chunks/ssr/node_modules__pnpm_1q89l7p._.js.map +1 -0
- package/.next/server/chunks/ssr/{node_modules__pnpm_1woddr6._.js → node_modules__pnpm_1q_hhr3._.js} +2 -2
- package/.next/server/chunks/ssr/{node_modules__pnpm_1x0t5_z._.js → node_modules__pnpm_1qmkxyo._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules__pnpm_0gifu-u._.js → node_modules__pnpm_1qp_jvj._.js} +2 -2
- package/.next/server/chunks/ssr/{node_modules__pnpm_0y35hs4._.js → node_modules__pnpm_1ssjj4u._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules__pnpm_0qc3gsk._.js → node_modules__pnpm_1txccoj._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules__pnpm_1w0f1m5._.js → node_modules__pnpm_1uwkcin._.js} +1 -1
- package/.next/server/chunks/ssr/node_modules__pnpm_1xeothw._.js +3 -0
- package/.next/server/chunks/ssr/node_modules__pnpm_1xeothw._.js.map +1 -0
- package/.next/server/chunks/ssr/{node_modules__pnpm_0286-tg._.js → node_modules__pnpm_1ygal0c._.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 +3 -0
- package/.next/server/chunks/ssr/src_app_(app)_board_page_tsx_0gpfc77._.js.map +1 -0
- package/.next/server/chunks/ssr/src_app_(app)_chat_page_tsx_0c3e4l4._.js +1 -1
- package/.next/server/chunks/ssr/src_app_(app)_chat_page_tsx_0c3e4l4._.js.map +1 -1
- 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 +3 -0
- package/.next/server/chunks/ssr/src_app_(app)_manual-tests_page_tsx_01tnunf._.js.map +1 -0
- 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_app_(app)_settings_page_tsx_0zevtee._.js +2 -2
- package/.next/server/chunks/ssr/src_app_(app)_settings_page_tsx_0zevtee._.js.map +1 -1
- package/.next/server/chunks/ssr/src_app_(app)_setup_page_tsx_1yids_n._.js +1 -1
- package/.next/server/chunks/ssr/src_app_(app)_setup_page_tsx_1yids_n._.js.map +1 -1
- package/.next/server/chunks/ssr/src_components_chat_ChatView_tsx_0h5j-e2._.js +3 -0
- package/.next/server/chunks/ssr/src_components_chat_ChatView_tsx_0h5j-e2._.js.map +1 -0
- 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 +4 -0
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/server/prefetch-hints.json +19 -0
- package/.next/server/server-reference-manifest.js +1 -1
- package/.next/server/server-reference-manifest.json +1 -1
- package/.next/static/chunks/02cj5_i9np4sg.js +3 -0
- package/.next/static/chunks/02i5hsdat1nuq.css +9 -0
- package/.next/static/chunks/0mgifb98wbesa.js +1 -0
- package/.next/static/chunks/0p1-hkgnm2ll2.js +1 -0
- package/.next/static/chunks/0pgu5q5vodev6.js +1 -0
- package/.next/static/chunks/0rqzvayflendx.js +2 -0
- package/.next/static/chunks/0vcfs7dii85tw.js +21 -0
- package/.next/static/chunks/13l4l-boqg8fx.js +1 -0
- package/.next/static/chunks/14hxe1qiaram9.js +1 -0
- package/.next/static/chunks/150y5rwg6gwvx.css +1 -0
- package/.next/static/chunks/16k196zyl-n9q.js +1 -0
- package/.next/static/chunks/18b5l8p0vd9f8.js +1 -0
- package/.next/static/chunks/1c_8t2kecjnua.js +1 -0
- package/.next/static/chunks/1fd43t9y42wd3.js +1 -0
- package/.next/static/chunks/1q50zh5z-fq2k.js +2 -0
- package/.next/static/chunks/1tu8lforstp1o.js +1 -0
- package/.next/static/chunks/23-xknrz6o748.js +1 -0
- package/.next/static/chunks/2_xpm7qhr69n8.js +2 -0
- package/.next/static/chunks/2ls_yp4-qgb42.js +1 -0
- package/.next/static/chunks/2zz0ip2l_29c3.js +3 -0
- package/.next/static/chunks/3ly7b47esdb7j.js +1 -0
- package/.next/static/chunks/3ruw8lu2_re-h.js +1 -0
- package/.next/static/chunks/3vf5nnd4xjo5_.js +1 -0
- package/.next/static/chunks/40jaenrnspnlh.js +68 -0
- package/.next/static/chunks/41oxcdcw-pcwt.js +1 -0
- package/README.md +2 -1
- package/package.json +1 -1
- package/skills/work-epic/SKILL.md +22 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_0am8bw2._.js +0 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_0enefn6._.js +0 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_0k3n_5f._.js +0 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_0lcfjm4._.js +0 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_0lfx9av._.js +0 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_0qau3qw._.js +0 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_0r1pmvm._.js +0 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_11t-z2t._.js +0 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_15hyn79._.js +0 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_1_qk07x._.js +0 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_1b2929e._.js +0 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_1e72c89._.js +0 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_1eq7asn._.js +0 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_1fhdojs._.js +0 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_1htgzmb._.js +0 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_1lh_vwq._.js +0 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_1ludf-o._.js +0 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_1m3luz3._.js +0 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_1x1iz3d._.js +0 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_1xsmwlh._.js +0 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_202spah._.js +0 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_215hw9u._.js +0 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_0d2_lq6._.js +0 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_0n-i0pd._.js +0 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_13pos4j._.js +0 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_17b4pqr._.js +0 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1bkcmom._.js +0 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1hlj_3l._.js +0 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1ip-sor._.js +0 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1pex5o1._.js +0 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1s8lc8_._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__1o4a-4j._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__1o4a-4j._.js.map +0 -1
- package/.next/server/chunks/ssr/1x05_lucide-react_dist_esm_icons_0cvmffy._.js +0 -3
- package/.next/server/chunks/ssr/1x05_lucide-react_dist_esm_icons_0cvmffy._.js.map +0 -1
- package/.next/server/chunks/ssr/1x05_lucide-react_dist_esm_icons_0u3jxas._.js +0 -3
- package/.next/server/chunks/ssr/1x05_lucide-react_dist_esm_icons_0u3jxas._.js.map +0 -1
- package/.next/server/chunks/ssr/_059qmur._.js +0 -3
- package/.next/server/chunks/ssr/_059qmur._.js.map +0 -1
- package/.next/server/chunks/ssr/_081irea._.js +0 -3
- package/.next/server/chunks/ssr/_081irea._.js.map +0 -1
- package/.next/server/chunks/ssr/_0d8t8l4._.js +0 -3
- package/.next/server/chunks/ssr/_0d8t8l4._.js.map +0 -1
- package/.next/server/chunks/ssr/_0dyvcdg._.js +0 -3
- package/.next/server/chunks/ssr/_0dyvcdg._.js.map +0 -1
- package/.next/server/chunks/ssr/_1-ghqy4._.js +0 -3
- package/.next/server/chunks/ssr/_1-ghqy4._.js.map +0 -1
- package/.next/server/chunks/ssr/_17jy5db._.js +0 -3
- package/.next/server/chunks/ssr/_17jy5db._.js.map +0 -1
- package/.next/server/chunks/ssr/_1c95ems._.js +0 -151
- package/.next/server/chunks/ssr/_1c95ems._.js.map +0 -1
- package/.next/server/chunks/ssr/_1dllfz5._.js +0 -4
- package/.next/server/chunks/ssr/_1dllfz5._.js.map +0 -1
- package/.next/server/chunks/ssr/node_modules__pnpm_006_c8z._.js +0 -3
- package/.next/server/chunks/ssr/node_modules__pnpm_006_c8z._.js.map +0 -1
- package/.next/server/chunks/ssr/node_modules__pnpm_1imm4ut._.js +0 -3
- package/.next/server/chunks/ssr/node_modules__pnpm_1imm4ut._.js.map +0 -1
- package/.next/server/chunks/ssr/node_modules__pnpm_1kcnkjs._.js +0 -3
- package/.next/server/chunks/ssr/node_modules__pnpm_1kcnkjs._.js.map +0 -1
- package/.next/server/chunks/ssr/src_components_14pwej-._.js +0 -3
- package/.next/server/chunks/ssr/src_components_14pwej-._.js.map +0 -1
- package/.next/server/chunks/ssr/src_components_ui_scroll-area_tsx_0i-n_27._.js +0 -3
- package/.next/server/chunks/ssr/src_components_ui_scroll-area_tsx_0i-n_27._.js.map +0 -1
- package/.next/static/chunks/0-z7kyblalrea.js +0 -1
- package/.next/static/chunks/050mq8l4e1ubn.js +0 -1
- package/.next/static/chunks/098le48845_fg.js +0 -3
- package/.next/static/chunks/0cw4-ebkoufdc.js +0 -1
- package/.next/static/chunks/0feo-go1w5nct.js +0 -1
- package/.next/static/chunks/0k2qhx29amdgs.js +0 -1
- package/.next/static/chunks/14sefb904pl64.js +0 -21
- package/.next/static/chunks/1fer-wulyrjrs.js +0 -3
- package/.next/static/chunks/1o7b1x4umy8a6.js +0 -1
- package/.next/static/chunks/1q_io1j58aukw.js +0 -1
- package/.next/static/chunks/1r7z33e9jk3vp.js +0 -1
- package/.next/static/chunks/1t-cgh4477hfo.js +0 -1
- package/.next/static/chunks/1u-1po1qesc9f.js +0 -1
- package/.next/static/chunks/1u5kegkgm0xoz.js +0 -1
- package/.next/static/chunks/24ygzsgd-moqy.js +0 -1
- package/.next/static/chunks/26folxgplfa9t.js +0 -68
- package/.next/static/chunks/2ocixvjhv34_3.js +0 -1
- package/.next/static/chunks/3_lsdgxa-h7ma.css +0 -10
- package/.next/static/chunks/3rmv-sb9w9i3e.js +0 -1
- package/.next/static/chunks/3smp1lj103j-l.js +0 -1
- package/.next/static/chunks/3ttzomivj48jh.js +0 -2
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0-5bkpj._.js.map → 11mp_@anthropic-ai_sdk_00p3fu1._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_00psb_y._.js.map → 11mp_@anthropic-ai_sdk_01amtux._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_01l5h3i._.js.map → 11mp_@anthropic-ai_sdk_01jjl08._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_072r2bd._.js.map → 11mp_@anthropic-ai_sdk_071zfm8._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0am8bw2._.js.map → 11mp_@anthropic-ai_sdk_07v3boe._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0enefn6._.js.map → 11mp_@anthropic-ai_sdk_09iva72._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0k3n_5f._.js.map → 11mp_@anthropic-ai_sdk_0bom1b1._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0lcfjm4._.js.map → 11mp_@anthropic-ai_sdk_0dvji7p._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0lfx9av._.js.map → 11mp_@anthropic-ai_sdk_0dzo8jn._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0qau3qw._.js.map → 11mp_@anthropic-ai_sdk_0hvqsqq._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0r1pmvm._.js.map → 11mp_@anthropic-ai_sdk_0i7i-jw._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_11t-z2t._.js.map → 11mp_@anthropic-ai_sdk_0k0iop5._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_15hyn79._.js.map → 11mp_@anthropic-ai_sdk_0l3-6aq._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1_qk07x._.js.map → 11mp_@anthropic-ai_sdk_0oegm3y._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1b2929e._.js.map → 11mp_@anthropic-ai_sdk_0p5cyes._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1e72c89._.js.map → 11mp_@anthropic-ai_sdk_0qw8i6_._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1eq7asn._.js.map → 11mp_@anthropic-ai_sdk_0yk-a7v._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1fhdojs._.js.map → 11mp_@anthropic-ai_sdk_11fsqvb._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1htgzmb._.js.map → 11mp_@anthropic-ai_sdk_143_7ez._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1lh_vwq._.js.map → 11mp_@anthropic-ai_sdk_14a4-64._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1ludf-o._.js.map → 11mp_@anthropic-ai_sdk_17d_oma._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1m3luz3._.js.map → 11mp_@anthropic-ai_sdk_18qwuyb._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1x1iz3d._.js.map → 11mp_@anthropic-ai_sdk_19au8y6._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1xsmwlh._.js.map → 11mp_@anthropic-ai_sdk_1ak_hy5._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_202spah._.js.map → 11mp_@anthropic-ai_sdk_1cqa0nq._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_215hw9u._.js.map → 11mp_@anthropic-ai_sdk_1i-x_q0._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_0d2_lq6._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_08ecfgc._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_0n-i0pd._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_09--sd6._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_13pos4j._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_0e3mwc6._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_17b4pqr._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_0go4301._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_1bkcmom._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_0iq9dmt._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_1hlj_3l._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_0n9ijke._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_1ip-sor._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_0szcyrx._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_1pex5o1._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_0xy2s3x._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_1s8lc8_._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_0yaujn7._.js.map} +0 -0
- /package/.next/server/chunks/{[root-of-the-server]__0e59y5j._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_0z9ly74._.js.map} +0 -0
- /package/.next/server/chunks/{[root-of-the-server]__11s76m8._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_1hmq3al._.js.map} +0 -0
- /package/.next/server/chunks/{ssr/0_nd_mermaid_dist_mermaid_core_mjs_0vv_0i3._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_1tqk4bp._.js.map} +0 -0
- /package/.next/server/chunks/{ssr/1u84_katex_dist_katex_mjs_1z0p1bs._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_1x-hr6f._.js.map} +0 -0
- /package/.next/server/chunks/{ssr/node_modules__pnpm_09_i2jk._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_1zsdhg0._.js.map} +0 -0
- /package/.next/server/chunks/{ssr/node_modules__pnpm_0dwi7mu._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_20t__fe._.js.map} +0 -0
- /package/.next/server/chunks/{[root-of-the-server]__1u_q61h._.js.map → [root-of-the-server]__0-pmfg2._.js.map} +0 -0
- /package/.next/server/chunks/{[root-of-the-server]__1y3u5ud._.js.map → [root-of-the-server]__04tibmn._.js.map} +0 -0
- /package/.next/server/chunks/{[root-of-the-server]__17xb02p._.js.map → [root-of-the-server]__05g5cgo._.js.map} +0 -0
- /package/.next/server/chunks/{[root-of-the-server]__0aynzrb._.js.map → [root-of-the-server]__0b5pwze._.js.map} +0 -0
- /package/.next/server/chunks/{[root-of-the-server]__142icjb._.js.map → [root-of-the-server]__0druay_._.js.map} +0 -0
- /package/.next/server/chunks/{[root-of-the-server]__106gpvh._.js.map → [root-of-the-server]__0p6ja6l._.js.map} +0 -0
- /package/.next/server/chunks/{[root-of-the-server]__0nfvvy9._.js.map → [root-of-the-server]__1-e3i_5._.js.map} +0 -0
- /package/.next/server/chunks/{ssr/node_modules__pnpm_1yq90z7._.js.map → [root-of-the-server]__11c8641._.js.map} +0 -0
- /package/.next/server/chunks/{[root-of-the-server]__06zf_sh._.js.map → [root-of-the-server]__197vw9g._.js.map} +0 -0
- /package/.next/server/chunks/{[root-of-the-server]__1j0rrps._.js.map → [root-of-the-server]__19k8t87._.js.map} +0 -0
- /package/.next/server/chunks/{[root-of-the-server]__0eqd-tw._.js.map → [root-of-the-server]__1ezzeji._.js.map} +0 -0
- /package/.next/server/chunks/{[root-of-the-server]__17p0rkn._.js.map → [root-of-the-server]__1mrmaf9._.js.map} +0 -0
- /package/.next/server/chunks/{[root-of-the-server]__1q4ahvz._.js.map → [root-of-the-server]__1umrorf._.js.map} +0 -0
- /package/.next/server/chunks/{[root-of-the-server]__093hlkh._.js.map → [root-of-the-server]__1vh9g2o._.js.map} +0 -0
- /package/.next/server/chunks/{[root-of-the-server]__1y-tt29._.js.map → [root-of-the-server]__1vq38ov._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules__pnpm_04khl_s._.js.map → node_modules__pnpm_01bjcv9._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules__pnpm_08sqeu2._.js.map → node_modules__pnpm_03qrzdb._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules__pnpm_104pzhc._.js.map → node_modules__pnpm_06d-fdo._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules__pnpm_1xzf8g_._.js.map → node_modules__pnpm_0ctisl0._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules__pnpm_0og06fy._.js.map → node_modules__pnpm_0fwp8jm._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules__pnpm_0a9b2ei._.js.map → node_modules__pnpm_0kpu0-2._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules__pnpm_0jpv2b6._.js.map → node_modules__pnpm_0vry74x._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules__pnpm_0fd3pr1._.js.map → node_modules__pnpm_0ycbjbd._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules__pnpm_1l8k8w1._.js.map → node_modules__pnpm_1-76qxg._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules__pnpm_0ah02mu._.js.map → node_modules__pnpm_1-r94f7._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules__pnpm_0f77_ng._.js.map → node_modules__pnpm_17i6z2d._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules__pnpm_0ttvopp._.js.map → node_modules__pnpm_192f222._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules__pnpm_07t_e8c._.js.map → node_modules__pnpm_1a48_nl._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules__pnpm_195j8p_._.js.map → node_modules__pnpm_1aa37e1._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules__pnpm_0cj8ryj._.js.map → node_modules__pnpm_1f440kx._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules__pnpm_0u3u82f._.js.map → node_modules__pnpm_1fn3ejy._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules__pnpm_0ts89ne._.js.map → node_modules__pnpm_1min2jl._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules__pnpm_1woddr6._.js.map → node_modules__pnpm_1q_hhr3._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules__pnpm_1x0t5_z._.js.map → node_modules__pnpm_1qmkxyo._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules__pnpm_0gifu-u._.js.map → node_modules__pnpm_1qp_jvj._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules__pnpm_0y35hs4._.js.map → node_modules__pnpm_1ssjj4u._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules__pnpm_0qc3gsk._.js.map → node_modules__pnpm_1txccoj._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules__pnpm_1w0f1m5._.js.map → node_modules__pnpm_1uwkcin._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules__pnpm_0286-tg._.js.map → node_modules__pnpm_1ygal0c._.js.map} +0 -0
- /package/.next/static/{uJ5RYxgFnE5svAvnuLDXN → fGPda81_8-K4GmaNUE6KA}/_buildManifest.js +0 -0
- /package/.next/static/{uJ5RYxgFnE5svAvnuLDXN → fGPda81_8-K4GmaNUE6KA}/_clientMiddlewareManifest.js +0 -0
- /package/.next/static/{uJ5RYxgFnE5svAvnuLDXN → fGPda81_8-K4GmaNUE6KA}/_ssgManifest.js +0 -0
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[732978,(a,b,c)=>{"use strict";c._=function(a){return a&&a.__esModule?a:{default:a}}},108222,(a,b,c)=>{"use strict";function d(a){return a.split("/").map(a=>encodeURIComponent(a)).join("/")}Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"encodeURIPath",{enumerable:!0,get:function(){return d}})},510281,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"BailoutToCSR",{enumerable:!0,get:function(){return e}});let d=a.r(736147);function e({reason:a,children:b}){throw Object.defineProperty(new d.BailoutToCSRError(a),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0})}},168262,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"PreloadChunks",{enumerable:!0,get:function(){return i}});let d=a.r(662145),e=a.r(41721),f=a.r(556704),g=a.r(108222),h=a.r(594023);function i({moduleIds:a}){let b=f.workAsyncStorage.getStore();if(void 0===b)return null;let c=[];if(b.reactLoadableManifest&&a){let d=b.reactLoadableManifest;for(let b of a){if(!d[b])continue;let a=d[b].files;c.push(...a)}}if(0===c.length)return null;let j=(0,h.getAssetTokenQuery)();return(0,d.jsx)(d.Fragment,{children:c.map(a=>{let c=`${b.assetPrefix}/_next/${(0,g.encodeURIPath)(a)}${j}`;return a.endsWith(".css")?(0,d.jsx)("link",{precedence:"dynamic",href:c,rel:"stylesheet",as:"style",nonce:b.nonce},a):((0,e.preload)(c,{as:"script",fetchPriority:"low",nonce:b.nonce}),null)})})}},846378,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"default",{enumerable:!0,get:function(){return j}});let d=a.r(662145),e=a.r(174897),f=a.r(510281),g=a.r(168262);function h(a){return{default:a&&"default"in a?a.default:a}}let i={loader:()=>Promise.resolve(h(()=>null)),loading:null,ssr:!0},j=function(a){let b={...i,...a},c=(0,e.lazy)(()=>b.loader().then(h)),j=b.loading;function k(a){let h=j?(0,d.jsx)(j,{isLoading:!0,pastDelay:!0,error:null}):null,i=!b.ssr||!!b.loading,k=i?e.Suspense:e.Fragment,l=b.ssr?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(g.PreloadChunks,{moduleIds:b.modules}),(0,d.jsx)(c,{...a})]}):(0,d.jsx)(f.BailoutToCSR,{reason:"next/dynamic",children:(0,d.jsx)(c,{...a})});return(0,d.jsx)(k,{...i?{fallback:h}:{},children:l})}return k.displayName="LoadableComponent",k}},851271,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"default",{enumerable:!0,get:function(){return e}});let d=a.r(732978)._(a.r(846378));function e(a,b){let c={};"function"==typeof a&&(c.loader=a);let e={...c,...b};return(0,d.default)({...e,modules:e.loadableGenerated?.modules})}("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)},318996,a=>{"use strict";var b=a.i(662145),c=a.i(174897),d=a.i(913975),e=a.i(544394),f=a.i(256857);let g={name:"tree-pine",size:24,node:[["path",{d:"m17 14 3 3.3a1 1 0 0 1-.7 1.7H4.7a1 1 0 0 1-.7-1.7L7 14h-.3a1 1 0 0 1-.7-1.7L9 9h-.2A1 1 0 0 1 8 7.3L12 3l4 4.3a1 1 0 0 1-.8 1.7H15l3 3.3a1 1 0 0 1-.7 1.7H17Z",key:"cpyugq"}],["path",{d:"M12 22v-3",key:"kmzjlo"}]]};g.node;let h=(0,f.default)(g),i={name:"square-stack",size:24,node:[["path",{d:"M4 10c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h4c1.1 0 2 .9 2 2",key:"4i38lg"}],["path",{d:"M10 16c-1.1 0-2-.9-2-2v-4c0-1.1.9-2 2-2h4c1.1 0 2 .9 2 2",key:"mlte4a"}],["rect",{width:"8",height:"8",x:"14",y:"14",rx:"2",key:"1fa9i4"}]]};i.node;let j=(0,f.default)(i),k={name:"flame",size:24,node:[["path",{d:"M12 3q1 4 4 6.5t3 5.5a1 1 0 0 1-14 0 5 5 0 0 1 1-3 1 1 0 0 0 5 0c0-2-1.5-3-1.5-5q0-2 2.5-4",key:"1slcih"}]]};k.node;let l=(0,f.default)(k);var m=a.i(866718),n=a.i(699570),o=a.i(368114),p=a.i(926128),q=a.i(103817),r=a.i(769242),s=a.i(156298),t=a.i(269876),u=a.i(421234);function v({node:a,depth:d,selectedPath:e,onSelect:f,heatmap:g,defaultOpen:h=!1}){let[i,j]=(0,c.useState)(h),k=12*d;if(a.file){var l;let c,d=a.file.path===e,h=g?(l=a.file.mtime,(c=(Date.now()-new Date(l).getTime())/864e5)<=7?"text-green-400":c<=28?"text-yellow-400/70":"text-muted"):"text-muted";return(0,b.jsxs)("button",{onClick:()=>f(a.file.path),className:(0,o.cn)("w-full flex flex-col gap-0.5 px-2 py-1.5 text-left hover:bg-surface2 transition-colors rounded-sm",d&&"bg-surface2 ring-1 ring-inset ring-accent/30"),style:{paddingLeft:k+8},children:[(0,b.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,b.jsx)(p.FileText,{className:(0,o.cn)("w-3.5 h-3.5 shrink-0",h)}),(0,b.jsx)("span",{className:"text-xs text-txt truncate",children:a.name})]}),a.file.description&&(0,b.jsx)("p",{className:"text-[10px] text-muted leading-tight truncate",style:{paddingLeft:20},children:a.file.description})]})}return(0,b.jsxs)(u.Collapsible,{open:i,onOpenChange:j,children:[(0,b.jsx)(u.CollapsibleTrigger,{asChild:!0,children:(0,b.jsxs)("button",{className:"w-full flex items-center gap-1.5 px-2 py-1 text-left hover:bg-surface2 transition-colors rounded-sm",style:{paddingLeft:k+8},children:[(0,b.jsx)(s.ChevronRight,{className:(0,o.cn)("w-3 h-3 text-muted shrink-0 transition-transform duration-200",i&&"rotate-90")}),i?(0,b.jsx)(r.FolderOpen,{className:"w-3.5 h-3.5 text-accent shrink-0"}):(0,b.jsx)(q.Folder,{className:"w-3.5 h-3.5 text-muted shrink-0"}),(0,b.jsx)("span",{className:"text-xs text-txt font-medium",children:a.name})]})}),(0,b.jsx)(u.CollapsibleContent,{children:a.children.map(a=>(0,b.jsx)(v,{node:a,depth:d+1,selectedPath:e,onSelect:f,heatmap:g},a.folderPath))})]})}function w({files:a,selectedPath:d,onSelect:e,heatmap:f}){let g=(0,c.useMemo)(()=>(function(a){let b={name:"",children:[],folderPath:""};for(let c of a){let a=c.path.replace(/\\/g,"/").split("/"),d=b,e="";for(let b=0;b<a.length-1;b++){e=e?`${e}/${a[b]}`:a[b];let c=d.children.find(c=>c.name===a[b]&&!c.file);c||(c={name:a[b],children:[],folderPath:e},d.children.push(c)),d=c}d.children.push({name:a[a.length-1],children:[],file:c,folderPath:c.path})}return b.children})(a),[a]);return(0,b.jsx)(t.ScrollArea,{className:"flex-1",children:(0,b.jsx)("div",{className:"p-2",children:g.map(a=>(0,b.jsx)(v,{node:a,depth:0,selectedPath:d,onSelect:e,heatmap:f,defaultOpen:!0},a.folderPath))})})}let x=(0,a.i(851271).default)(async()=>{},{loadableGenerated:{modules:[816040]},ssr:!1});function y({files:a,onSelect:d}){let e=(0,c.useMemo)(()=>(function(a){let b=[],c=new Map;for(let d of[...a].map(a=>({...a,path:a.path.replace(/\\/g,"/")})).filter(a=>a.path.includes("/")).sort((a,b)=>a.path.localeCompare(b.path))){let a=d.path.split("/"),e={name:a[a.length-1].replace(/\.md$/i,""),value:1,path:d.path,itemStyle:{color:function(a){let b=(Date.now()-new Date(a).getTime())/864e5;return b<=7?"#059669":b<=28?"#b45309":"#334155"}(d.mtime)}};if(1===a.length)b.push(e);else{for(let d=1;d<a.length;d++){let e=a.slice(0,d).join("/");if(!c.has(e)){let f={name:a[d-1],children:[]};if(c.set(e,f),1===d)b.push(f);else{let b=a.slice(0,d-1).join("/"),e=c.get(b);e&&e.children.push(f)}}}let d=a.slice(0,a.length-1).join("/"),f=c.get(d);f&&f.children.push(e)}}return b.forEach(function a(b){if(!b.children||0===b.children.length)return b.value??1;let c=b.children.reduce((b,c)=>b+a(c),0);return b.value=c,c}),b})(a),[a]),f=(0,c.useMemo)(()=>({backgroundColor:"transparent",tooltip:{backgroundColor:"#1e293b",borderColor:"#334155",borderWidth:1,padding:[6,10],textStyle:{color:"#f1f5f9",fontSize:12},formatter:a=>{let{name:b,data:c}=a;return c.path?`<span style="color:#94a3b8;font-size:11px">${c.path}</span>`:`<span style="font-weight:600">${b}/</span>`}},series:[{type:"treemap",data:e,roam:!1,leafDepth:1,width:"100%",height:"100%",top:4,bottom:36,left:4,right:4,squareRatio:.7,breadcrumb:{show:!0,bottom:4,height:26,gap:6,itemStyle:{color:"#1e293b",borderColor:"#334155",borderWidth:1,shadowBlur:0,textStyle:{color:"#94a3b8",fontSize:11,fontFamily:"inherit"}},emptyItemWidth:20},label:{show:!0,formatter:"{b}",fontSize:12,fontWeight:500,color:"#f1f5f9",textShadowBlur:3,textShadowColor:"rgba(0,0,0,0.8)",overflow:"truncate",padding:[4,6]},upperLabel:{show:!0,height:24,fontSize:12,fontWeight:700,color:"#f8fafc",backgroundColor:"rgba(15,23,42,0.85)",borderRadius:[4,4,0,0],padding:[4,8],textShadowBlur:0},itemStyle:{borderColor:"#0f172a",borderWidth:1,gapWidth:1},emphasis:{label:{color:"#ffffff",fontWeight:700},upperLabel:{color:"#ffffff",backgroundColor:"rgba(99,102,241,0.9)"},itemStyle:{borderColor:"#6366f1",borderWidth:2}},levels:[{color:["#1e3a5f","#1a3a2e","#3b2a1a","#2d1b4e","#1a2e3b","#3b1a1a"],itemStyle:{borderColor:"#0f172a",borderWidth:3,gapWidth:4},upperLabel:{show:!0,height:28,fontSize:13,fontWeight:700,color:"#f8fafc",backgroundColor:"rgba(15,23,42,0.9)"}},{itemStyle:{borderColor:"#0f172a",borderWidth:2,gapWidth:2},upperLabel:{show:!0}},{itemStyle:{borderColor:"rgba(15,23,42,0.6)",borderWidth:1,gapWidth:1}}]}]}),[e]);return 0===a.length?(0,b.jsx)("div",{className:"flex-1 flex items-center justify-center text-muted text-sm h-full",children:"No files to display"}):(0,b.jsx)(x,{option:f,onEvents:{click:function(a){a?.data?.path&&d(a.data.path)}},style:{height:"100%",width:"100%"},opts:{renderer:"canvas"},notMerge:!0})}var z=a.i(227246);let A={name:"external-link",size:24,node:[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"M10 14 21 3",key:"gplh6r"}],["path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6",key:"a6xqqp"}]]};A.node;let B=(0,f.default)(A);var C=a.i(786304);let D={ai:"AI",extracted:"Auto"},E={ai:"default",extracted:"secondary"};function F({file:a,root:d,onEnriched:e,onOpenDoc:f}){let[g,h]=(0,c.useState)(!1),[i,j]=(0,c.useState)(!1),[k,l]=(0,c.useState)(null);if((0,c.useEffect)(()=>{h(!1),j(!1),l(null)},[a?.path]),!a)return(0,b.jsx)("div",{className:"flex-1 flex items-center justify-center text-muted text-sm",children:"Select a file to see details"});let m=a.path.split("/");async function q(){h(!0),l(null);try{let b=await fetch("/api/explorer",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:a.path,...d?{root:d}:{}})}),c=await b.json();b.ok?(e(a.path,c.description),j(!0),setTimeout(()=>j(!1),1500)):l(c.error??"Enrichment failed")}finally{h(!1)}}return(0,b.jsxs)("div",{className:"flex-1 p-6 flex flex-col gap-4 overflow-auto",children:[(0,b.jsxs)("div",{className:"flex items-center gap-1.5 text-xs text-muted flex-wrap",children:[(0,b.jsx)(p.FileText,{className:"w-3.5 h-3.5 shrink-0"}),m.map((a,c)=>(0,b.jsxs)("span",{className:"flex items-center gap-1.5",children:[c>0&&(0,b.jsx)("span",{className:"text-muted",children:"/"}),(0,b.jsx)("span",{className:c===m.length-1?"text-txt font-medium":"",children:a})]},c))]}),(0,b.jsx)("p",{className:(0,o.cn)("text-sm leading-relaxed transition-colors duration-500",i?"text-green-400":"text-txt"),children:a.description||(0,b.jsx)("span",{className:"text-muted italic",children:"No description yet — click Re-enrich to generate one"})}),k&&(0,b.jsx)("p",{className:"text-xs text-red-400",children:k}),(0,b.jsxs)("div",{className:"flex items-center gap-2 text-xs text-muted",children:[(0,b.jsx)(C.Badge,{variant:E[a.source],className:"text-[10px]",children:D[a.source]}),(0,b.jsxs)("span",{children:["Updated ",new Date(a.updatedAt).toLocaleDateString()]}),(0,b.jsxs)("span",{className:"ml-auto",children:["Modified ",new Date(a.mtime).toLocaleDateString()]})]}),(0,b.jsxs)("div",{className:"flex gap-2 pt-2",children:[(0,b.jsxs)(n.Button,{variant:"outline",size:"sm",onClick:q,disabled:g,children:[(0,b.jsx)(z.RefreshCw,{className:`w-3 h-3 mr-1.5 ${g?"animate-spin":""}`}),"Re-enrich"]}),(0,b.jsxs)(n.Button,{variant:"outline",size:"sm",onClick:()=>f(a.path),children:[(0,b.jsx)(B,{className:"w-3 h-3 mr-1.5"}),"Open in Docs"]})]})]})}let G=[{id:"tree",Icon:h,label:"Tree"},{id:"treemap",Icon:j,label:"Treemap"},{id:"heatmap",Icon:l,label:"Heatmap"}];function H({files:a,loading:e,view:f,root:g,onEnriched:h,onOpenDoc:i}){let j=(0,d.useRouter)(),[k,l]=(0,c.useState)(""),[p,q]=(0,c.useState)(null),[r,s]=(0,c.useState)("all"),[t,u]=(0,c.useState)("name"),[v,x]=(0,c.useState)(!1),z=a.find(a=>a.path===p)??null,A=(0,c.useMemo)(()=>["all",...[...new Set(a.map(a=>a.section))].sort()],[a]),B=(0,c.useMemo)(()=>{let b=a;if(k){let a=k.toLowerCase();b=b.filter(b=>b.path.toLowerCase().includes(a)||b.description.toLowerCase().includes(a))}return"all"!==r&&(b=b.filter(a=>a.section===r)),v&&(b=b.filter(a=>!a.description.trim())),[...b].sort((a,b)=>"mtime"===t?b.mtime.localeCompare(a.mtime):"updated"===t?b.updatedAt.localeCompare(a.updatedAt):a.path.localeCompare(b.path))},[a,k,r,v,t]);return(0,c.useEffect)(()=>{null===p||B.find(a=>a.path===p)||q(null)},[B,p]),(0,c.useEffect)(()=>{s("all")},[k]),(0,b.jsxs)("div",{className:"flex flex-col h-full",children:[(0,b.jsxs)("div",{className:"flex items-center gap-3 px-4 py-3 border-b border-border shrink-0",children:[(0,b.jsx)("span",{className:"font-display font-semibold text-txt text-sm shrink-0",children:"Explorer"}),(0,b.jsx)(m.Input,{id:"explorer-search",placeholder:"Search files and descriptions…",value:k,onChange:a=>l(a.target.value),className:"flex-1 h-7 text-xs"}),(0,b.jsxs)("div",{className:"flex items-center gap-1 shrink-0",children:[G.map(({id:a,Icon:c,label:d})=>(0,b.jsxs)(n.Button,{variant:f===a?"secondary":"ghost",size:"sm",className:"h-7 px-2 text-xs gap-1",onClick:()=>{j.push(`/explorer?view=${a}`)},children:[(0,b.jsx)(c,{className:"w-3 h-3"}),d]},a)),(0,b.jsxs)("select",{value:t,onChange:a=>u(a.target.value),className:"h-7 px-2 text-xs bg-surface2 border border-border rounded-sm text-txt focus:outline-hidden focus:border-accent ml-1",children:[(0,b.jsx)("option",{value:"name",children:"Name"}),(0,b.jsx)("option",{value:"mtime",children:"Modified"}),(0,b.jsx)("option",{value:"updated",children:"Described"})]}),(0,b.jsx)("button",{onClick:()=>x(a=>!a),className:(0,o.cn)("h-7 px-2 rounded-sm text-xs transition-colors border ml-1",v?"bg-amber/20 text-amber border-amber/40":"bg-surface2 text-muted border-border hover:text-txt"),children:"No desc"})]})]}),A.length>2&&(0,b.jsx)("div",{className:"flex items-center gap-1 px-4 py-2 border-b border-border overflow-x-auto shrink-0",children:A.map(a=>(0,b.jsx)("button",{onClick:()=>s(a),className:(0,o.cn)("px-2.5 py-0.5 rounded-full text-xs whitespace-nowrap transition-colors",r===a?"bg-accent text-white":"bg-surface2 text-muted hover:text-txt"),children:"all"===a?"All":a},a))}),e?(0,b.jsx)("div",{className:"flex-1 flex items-center justify-center text-muted text-sm",children:"Loading…"}):"treemap"===f?(0,b.jsxs)("div",{className:"flex-1 flex overflow-hidden",children:[(0,b.jsx)("div",{className:"flex-1 overflow-hidden",children:(0,b.jsx)(y,{files:B,onSelect:q})}),p&&z&&(0,b.jsx)("div",{className:"w-80 border-l border-border shrink-0",children:(0,b.jsx)(F,{file:z,root:g,onEnriched:h,onOpenDoc:i})})]}):(0,b.jsxs)("div",{className:"flex-1 flex overflow-hidden",children:[(0,b.jsx)("div",{className:"w-72 border-r border-border flex flex-col overflow-hidden",children:0===B.length?(0,b.jsx)("div",{className:"flex-1 flex items-center justify-center text-muted text-sm",children:"No files match your search"}):(0,b.jsx)(w,{files:B,selectedPath:p,onSelect:q,heatmap:"heatmap"===f})}),(0,b.jsx)(F,{file:z,root:g,onEnriched:h,onOpenDoc:i})]})]})}function I(){let{rootParam:a,activeProject:f,openDoc:g}=(0,e.useApp)(),h=(0,d.useSearchParams)().get("view")||"tree",[i,j]=(0,c.useState)([]),[k,l]=(0,c.useState)(!0),m=(0,c.useCallback)(async()=>{l(!0);try{let b=await fetch(`/api/explorer${a}`),c=await b.json();j(Array.isArray(c)?c:[])}finally{l(!1)}},[a]);return(0,c.useEffect)(()=>{m()},[m]),(0,b.jsx)(H,{files:i,loading:k,view:h,root:f,onEnriched:function(a,b){j(c=>c.map(c=>c.path===a?{...c,description:b,source:"ai",updatedAt:new Date().toISOString()}:c))},onOpenDoc:g})}a.s(["default",0,function(){return(0,b.jsx)("div",{className:"flex flex-col h-full",children:(0,b.jsx)(c.Suspense,{fallback:(0,b.jsx)("div",{className:"flex-1 flex items-center justify-center text-muted-foreground text-sm",children:"Loading…"}),children:(0,b.jsx)(I,{})})})}],318996)}];
|
|
1
|
+
module.exports=[732978,(a,b,c)=>{"use strict";c._=function(a){return a&&a.__esModule?a:{default:a}}},108222,(a,b,c)=>{"use strict";function d(a){return a.split("/").map(a=>encodeURIComponent(a)).join("/")}Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"encodeURIPath",{enumerable:!0,get:function(){return d}})},510281,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"BailoutToCSR",{enumerable:!0,get:function(){return e}});let d=a.r(736147);function e({reason:a,children:b}){throw Object.defineProperty(new d.BailoutToCSRError(a),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0})}},168262,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"PreloadChunks",{enumerable:!0,get:function(){return i}});let d=a.r(662145),e=a.r(41721),f=a.r(556704),g=a.r(108222),h=a.r(594023);function i({moduleIds:a}){let b=f.workAsyncStorage.getStore();if(void 0===b)return null;let c=[];if(b.reactLoadableManifest&&a){let d=b.reactLoadableManifest;for(let b of a){if(!d[b])continue;let a=d[b].files;c.push(...a)}}if(0===c.length)return null;let j=(0,h.getAssetTokenQuery)();return(0,d.jsx)(d.Fragment,{children:c.map(a=>{let c=`${b.assetPrefix}/_next/${(0,g.encodeURIPath)(a)}${j}`;return a.endsWith(".css")?(0,d.jsx)("link",{precedence:"dynamic",href:c,rel:"stylesheet",as:"style",nonce:b.nonce},a):((0,e.preload)(c,{as:"script",fetchPriority:"low",nonce:b.nonce}),null)})})}},846378,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"default",{enumerable:!0,get:function(){return j}});let d=a.r(662145),e=a.r(174897),f=a.r(510281),g=a.r(168262);function h(a){return{default:a&&"default"in a?a.default:a}}let i={loader:()=>Promise.resolve(h(()=>null)),loading:null,ssr:!0},j=function(a){let b={...i,...a},c=(0,e.lazy)(()=>b.loader().then(h)),j=b.loading;function k(a){let h=j?(0,d.jsx)(j,{isLoading:!0,pastDelay:!0,error:null}):null,i=!b.ssr||!!b.loading,k=i?e.Suspense:e.Fragment,l=b.ssr?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(g.PreloadChunks,{moduleIds:b.modules}),(0,d.jsx)(c,{...a})]}):(0,d.jsx)(f.BailoutToCSR,{reason:"next/dynamic",children:(0,d.jsx)(c,{...a})});return(0,d.jsx)(k,{...i?{fallback:h}:{},children:l})}return k.displayName="LoadableComponent",k}},851271,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"default",{enumerable:!0,get:function(){return e}});let d=a.r(732978)._(a.r(846378));function e(a,b){let c={};"function"==typeof a&&(c.loader=a);let e={...c,...b};return(0,d.default)({...e,modules:e.loadableGenerated?.modules})}("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)},318996,a=>{"use strict";var b=a.i(662145),c=a.i(174897),d=a.i(913975),e=a.i(544394),f=a.i(256857);let g={name:"tree-pine",size:24,node:[["path",{d:"m17 14 3 3.3a1 1 0 0 1-.7 1.7H4.7a1 1 0 0 1-.7-1.7L7 14h-.3a1 1 0 0 1-.7-1.7L9 9h-.2A1 1 0 0 1 8 7.3L12 3l4 4.3a1 1 0 0 1-.8 1.7H15l3 3.3a1 1 0 0 1-.7 1.7H17Z",key:"cpyugq"}],["path",{d:"M12 22v-3",key:"kmzjlo"}]]};g.node;let h=(0,f.default)(g),i={name:"square-stack",size:24,node:[["path",{d:"M4 10c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h4c1.1 0 2 .9 2 2",key:"4i38lg"}],["path",{d:"M10 16c-1.1 0-2-.9-2-2v-4c0-1.1.9-2 2-2h4c1.1 0 2 .9 2 2",key:"mlte4a"}],["rect",{width:"8",height:"8",x:"14",y:"14",rx:"2",key:"1fa9i4"}]]};i.node;let j=(0,f.default)(i),k={name:"flame",size:24,node:[["path",{d:"M12 3q1 4 4 6.5t3 5.5a1 1 0 0 1-14 0 5 5 0 0 1 1-3 1 1 0 0 0 5 0c0-2-1.5-3-1.5-5q0-2 2.5-4",key:"1slcih"}]]};k.node;let l=(0,f.default)(k);var m=a.i(866718),n=a.i(699570),o=a.i(368114),p=a.i(926128),q=a.i(103817),r=a.i(769242),s=a.i(156298),t=a.i(269876),u=a.i(421234);function v({node:a,depth:d,selectedPath:e,onSelect:f,heatmap:g,defaultOpen:h=!1}){let[i,j]=(0,c.useState)(h),k=12*d;if(a.file){var l;let c,d=a.file.path===e,h=g?(l=a.file.mtime,(c=(Date.now()-new Date(l).getTime())/864e5)<=7?"text-green-400":c<=28?"text-yellow-400/70":"text-muted"):"text-muted";return(0,b.jsxs)("button",{onClick:()=>f(a.file.path),className:(0,o.cn)("w-full flex flex-col gap-0.5 px-2 py-1.5 text-left hover:bg-surface2 transition-colors rounded-sm",d&&"bg-surface2 ring-1 ring-inset ring-accent/30"),style:{paddingLeft:k+8},children:[(0,b.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,b.jsx)(p.FileText,{className:(0,o.cn)("w-3.5 h-3.5 shrink-0",h)}),(0,b.jsx)("span",{className:"text-xs text-txt truncate",children:a.name})]}),a.file.description&&(0,b.jsx)("p",{className:"text-[10px] text-muted leading-tight truncate",style:{paddingLeft:20},children:a.file.description})]})}return(0,b.jsxs)(u.Collapsible,{open:i,onOpenChange:j,children:[(0,b.jsx)(u.CollapsibleTrigger,{asChild:!0,children:(0,b.jsxs)("button",{className:"w-full flex items-center gap-1.5 px-2 py-1 text-left hover:bg-surface2 transition-colors rounded-sm",style:{paddingLeft:k+8},children:[(0,b.jsx)(s.ChevronRight,{className:(0,o.cn)("w-3 h-3 text-muted shrink-0 transition-transform duration-200",i&&"rotate-90")}),i?(0,b.jsx)(r.FolderOpen,{className:"w-3.5 h-3.5 text-accent shrink-0"}):(0,b.jsx)(q.Folder,{className:"w-3.5 h-3.5 text-muted shrink-0"}),(0,b.jsx)("span",{className:"text-xs text-txt font-medium",children:a.name})]})}),(0,b.jsx)(u.CollapsibleContent,{children:a.children.map(a=>(0,b.jsx)(v,{node:a,depth:d+1,selectedPath:e,onSelect:f,heatmap:g},a.folderPath))})]})}function w({files:a,selectedPath:d,onSelect:e,heatmap:f}){let g=(0,c.useMemo)(()=>(function(a){let b={name:"",children:[],folderPath:""};for(let c of a){let a=c.path.replace(/\\/g,"/").split("/"),d=b,e="";for(let b=0;b<a.length-1;b++){e=e?`${e}/${a[b]}`:a[b];let c=d.children.find(c=>c.name===a[b]&&!c.file);c||(c={name:a[b],children:[],folderPath:e},d.children.push(c)),d=c}d.children.push({name:a[a.length-1],children:[],file:c,folderPath:c.path})}return b.children})(a),[a]);return(0,b.jsx)(t.ScrollArea,{className:"flex-1",children:(0,b.jsx)("div",{className:"p-2",children:g.map(a=>(0,b.jsx)(v,{node:a,depth:0,selectedPath:d,onSelect:e,heatmap:f,defaultOpen:!0},a.folderPath))})})}let x=(0,a.i(851271).default)(async()=>{},{loadableGenerated:{modules:[816040]},ssr:!1});function y({files:a,onSelect:d}){let e=(0,c.useMemo)(()=>(function(a){let b=[],c=new Map;for(let d of[...a].map(a=>({...a,path:a.path.replace(/\\/g,"/")})).filter(a=>a.path.includes("/")).sort((a,b)=>a.path.localeCompare(b.path))){let a=d.path.split("/"),e={name:a[a.length-1].replace(/\.md$/i,""),value:1,path:d.path,itemStyle:{color:function(a){let b=(Date.now()-new Date(a).getTime())/864e5;return b<=7?"#059669":b<=28?"#b45309":"#334155"}(d.mtime)}};if(1===a.length)b.push(e);else{for(let d=1;d<a.length;d++){let e=a.slice(0,d).join("/");if(!c.has(e)){let f={name:a[d-1],children:[]};if(c.set(e,f),1===d)b.push(f);else{let b=a.slice(0,d-1).join("/"),e=c.get(b);e&&e.children.push(f)}}}let d=a.slice(0,a.length-1).join("/"),f=c.get(d);f&&f.children.push(e)}}return b.forEach(function a(b){if(!b.children||0===b.children.length)return b.value??1;let c=b.children.reduce((b,c)=>b+a(c),0);return b.value=c,c}),b})(a),[a]),f=(0,c.useMemo)(()=>({backgroundColor:"transparent",tooltip:{backgroundColor:"#1e293b",borderColor:"#334155",borderWidth:1,padding:[6,10],textStyle:{color:"#f1f5f9",fontSize:12},formatter:a=>{let{name:b,data:c}=a;return c.path?`<span style="color:#94a3b8;font-size:11px">${c.path}</span>`:`<span style="font-weight:600">${b}/</span>`}},series:[{type:"treemap",data:e,roam:!1,leafDepth:1,width:"100%",height:"100%",top:4,bottom:36,left:4,right:4,squareRatio:.7,breadcrumb:{show:!0,bottom:4,height:26,gap:6,itemStyle:{color:"#1e293b",borderColor:"#334155",borderWidth:1,shadowBlur:0,textStyle:{color:"#94a3b8",fontSize:11,fontFamily:"inherit"}},emptyItemWidth:20},label:{show:!0,formatter:"{b}",fontSize:12,fontWeight:500,color:"#f1f5f9",textShadowBlur:3,textShadowColor:"rgba(0,0,0,0.8)",overflow:"truncate",padding:[4,6]},upperLabel:{show:!0,height:24,fontSize:12,fontWeight:700,color:"#f8fafc",backgroundColor:"rgba(15,23,42,0.85)",borderRadius:[4,4,0,0],padding:[4,8],textShadowBlur:0},itemStyle:{borderColor:"#0f172a",borderWidth:1,gapWidth:1},emphasis:{label:{color:"#ffffff",fontWeight:700},upperLabel:{color:"#ffffff",backgroundColor:"rgba(99,102,241,0.9)"},itemStyle:{borderColor:"#6366f1",borderWidth:2}},levels:[{color:["#1e3a5f","#1a3a2e","#3b2a1a","#2d1b4e","#1a2e3b","#3b1a1a"],itemStyle:{borderColor:"#0f172a",borderWidth:3,gapWidth:4},upperLabel:{show:!0,height:28,fontSize:13,fontWeight:700,color:"#f8fafc",backgroundColor:"rgba(15,23,42,0.9)"}},{itemStyle:{borderColor:"#0f172a",borderWidth:2,gapWidth:2},upperLabel:{show:!0}},{itemStyle:{borderColor:"rgba(15,23,42,0.6)",borderWidth:1,gapWidth:1}}]}]}),[e]);return 0===a.length?(0,b.jsx)("div",{className:"flex-1 flex items-center justify-center text-muted text-sm h-full",children:"No files to display"}):(0,b.jsx)(x,{option:f,onEvents:{click:function(a){a?.data?.path&&d(a.data.path)}},style:{height:"100%",width:"100%"},opts:{renderer:"canvas"},notMerge:!0})}var z=a.i(227246);let A={name:"external-link",size:24,node:[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"M10 14 21 3",key:"gplh6r"}],["path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6",key:"a6xqqp"}]]};A.node;let B=(0,f.default)(A);var C=a.i(786304);let D={ai:"AI",extracted:"Auto"},E={ai:"default",extracted:"secondary"};function F({file:a,root:d,onEnriched:e,onOpenDoc:f}){let[g,h]=(0,c.useState)(!1),[i,j]=(0,c.useState)(!1),[k,l]=(0,c.useState)(null);if((0,c.useEffect)(()=>{h(!1),j(!1),l(null)},[a?.path]),!a)return(0,b.jsx)("div",{className:"flex-1 flex items-center justify-center text-muted text-sm",children:"Select a file to see details"});let m=a.path.split("/");async function q(){h(!0),l(null);try{let b=await fetch("/api/explorer",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:a.path,...d?{root:d}:{}})}),c=await b.json();b.ok?(e(a.path,c.description),j(!0),setTimeout(()=>j(!1),1500)):l(c.error??"Enrichment failed")}finally{h(!1)}}return(0,b.jsxs)("div",{className:"flex-1 p-6 flex flex-col gap-4 overflow-auto",children:[(0,b.jsxs)("div",{className:"flex items-center gap-1.5 text-xs text-muted flex-wrap",children:[(0,b.jsx)(p.FileText,{className:"w-3.5 h-3.5 shrink-0"}),m.map((a,c)=>(0,b.jsxs)("span",{className:"flex items-center gap-1.5",children:[c>0&&(0,b.jsx)("span",{className:"text-muted",children:"/"}),(0,b.jsx)("span",{className:c===m.length-1?"text-txt font-medium":"",children:a})]},c))]}),(0,b.jsx)("p",{className:(0,o.cn)("text-sm leading-relaxed transition-colors duration-500",i?"text-green-400":"text-txt"),children:a.description||(0,b.jsx)("span",{className:"text-muted italic",children:"No description yet — click Re-enrich to generate one"})}),k&&(0,b.jsx)("p",{className:"text-xs text-red-400",children:k}),(0,b.jsxs)("div",{className:"flex items-center gap-2 text-xs text-muted",children:[(0,b.jsx)(C.Badge,{variant:E[a.source],className:"text-[10px]",children:D[a.source]}),(0,b.jsxs)("span",{children:["Updated ",new Date(a.updatedAt).toLocaleDateString()]}),(0,b.jsxs)("span",{className:"ml-auto",children:["Modified ",new Date(a.mtime).toLocaleDateString()]})]}),(0,b.jsxs)("div",{className:"flex gap-2 pt-2",children:[(0,b.jsxs)(n.Button,{variant:"outline",size:"sm",onClick:q,disabled:g,children:[(0,b.jsx)(z.RefreshCw,{className:`w-3 h-3 mr-1.5 ${g?"animate-spin":""}`}),"Re-enrich"]}),(0,b.jsxs)(n.Button,{variant:"outline",size:"sm",onClick:()=>f(a.path),children:[(0,b.jsx)(B,{className:"w-3 h-3 mr-1.5"}),"Open in Docs"]})]})]})}let G=[{id:"tree",Icon:h,label:"Tree"},{id:"treemap",Icon:j,label:"Treemap"},{id:"heatmap",Icon:l,label:"Heatmap"}];function H({files:a,loading:e,view:f,root:g,onEnriched:h,onOpenDoc:i}){let j=(0,d.useRouter)(),[k,l]=(0,c.useState)(""),[p,q]=(0,c.useState)(null),[r,s]=(0,c.useState)("all"),[t,u]=(0,c.useState)("name"),[v,x]=(0,c.useState)(!1),z=a.find(a=>a.path===p)??null,A=(0,c.useMemo)(()=>["all",...[...new Set(a.map(a=>a.section))].sort()],[a]),B=(0,c.useMemo)(()=>{let b=a;if(k){let a=k.toLowerCase();b=b.filter(b=>b.path.toLowerCase().includes(a)||b.description.toLowerCase().includes(a))}return"all"!==r&&(b=b.filter(a=>a.section===r)),v&&(b=b.filter(a=>!a.description.trim())),[...b].sort((a,b)=>"mtime"===t?b.mtime.localeCompare(a.mtime):"updated"===t?b.updatedAt.localeCompare(a.updatedAt):a.path.localeCompare(b.path))},[a,k,r,v,t]);return(0,c.useEffect)(()=>{null===p||B.find(a=>a.path===p)||q(null)},[B,p]),(0,c.useEffect)(()=>{s("all")},[k]),(0,b.jsxs)("div",{className:"flex flex-col h-full",children:[(0,b.jsxs)("div",{className:"flex items-center gap-3 px-4 py-3 border-b border-border shrink-0",children:[(0,b.jsx)("span",{className:"font-display font-semibold text-txt text-sm shrink-0",children:"Explorer"}),(0,b.jsx)(m.Input,{id:"explorer-search",placeholder:"Search files and descriptions…",value:k,onChange:a=>l(a.target.value),className:"flex-1 h-7 text-xs"}),(0,b.jsxs)("div",{className:"flex items-center gap-1 shrink-0",children:[G.map(({id:a,Icon:c,label:d})=>(0,b.jsxs)(n.Button,{variant:f===a?"secondary":"ghost",size:"sm",className:"h-7 px-2 text-xs gap-1",onClick:()=>{j.push(`/explorer?view=${a}`)},children:[(0,b.jsx)(c,{className:"w-3 h-3"}),d]},a)),(0,b.jsxs)("select",{value:t,onChange:a=>u(a.target.value),className:"h-7 px-2 text-xs bg-surface2 border border-border rounded-sm text-txt focus:outline-hidden focus:border-accent ml-1",children:[(0,b.jsx)("option",{value:"name",children:"Name"}),(0,b.jsx)("option",{value:"mtime",children:"Modified"}),(0,b.jsx)("option",{value:"updated",children:"Described"})]}),(0,b.jsx)("button",{onClick:()=>x(a=>!a),className:(0,o.cn)("h-7 px-2 rounded-sm text-xs transition-colors border ml-1",v?"bg-amber/20 text-amber border-amber/40":"bg-surface2 text-muted border-border hover:text-txt"),children:"No desc"})]})]}),A.length>2&&(0,b.jsx)("div",{className:"flex items-center gap-1 px-4 py-2 border-b border-border overflow-x-auto shrink-0",children:A.map(a=>(0,b.jsx)("button",{onClick:()=>s(a),className:(0,o.cn)("px-2.5 py-0.5 rounded-full text-xs whitespace-nowrap transition-colors",r===a?"bg-accent text-accent-fg":"bg-surface2 text-muted hover:text-txt"),children:"all"===a?"All":a},a))}),e?(0,b.jsx)("div",{className:"flex-1 flex items-center justify-center text-muted text-sm",children:"Loading…"}):"treemap"===f?(0,b.jsxs)("div",{className:"flex-1 flex overflow-hidden",children:[(0,b.jsx)("div",{className:"flex-1 overflow-hidden",children:(0,b.jsx)(y,{files:B,onSelect:q})}),p&&z&&(0,b.jsx)("div",{className:"w-80 border-l border-border shrink-0",children:(0,b.jsx)(F,{file:z,root:g,onEnriched:h,onOpenDoc:i})})]}):(0,b.jsxs)("div",{className:"flex-1 flex overflow-hidden",children:[(0,b.jsx)("div",{className:"w-72 border-r border-border flex flex-col overflow-hidden",children:0===B.length?(0,b.jsx)("div",{className:"flex-1 flex items-center justify-center text-muted text-sm",children:"No files match your search"}):(0,b.jsx)(w,{files:B,selectedPath:p,onSelect:q,heatmap:"heatmap"===f})}),(0,b.jsx)(F,{file:z,root:g,onEnriched:h,onOpenDoc:i})]})]})}function I(){let{rootParam:a,activeProject:f,openDoc:g}=(0,e.useApp)(),h=(0,d.useSearchParams)().get("view")||"tree",[i,j]=(0,c.useState)([]),[k,l]=(0,c.useState)(!0),m=(0,c.useCallback)(async()=>{l(!0);try{let b=await fetch(`/api/explorer${a}`),c=await b.json();j(Array.isArray(c)?c:[])}finally{l(!1)}},[a]);return(0,c.useEffect)(()=>{m()},[m]),(0,b.jsx)(H,{files:i,loading:k,view:h,root:f,onEnriched:function(a,b){j(c=>c.map(c=>c.path===a?{...c,description:b,source:"ai",updatedAt:new Date().toISOString()}:c))},onOpenDoc:g})}a.s(["default",0,function(){return(0,b.jsx)("div",{className:"flex flex-col h-full",children:(0,b.jsx)(c.Suspense,{fallback:(0,b.jsx)("div",{className:"flex-1 flex items-center justify-center text-muted-foreground text-sm",children:"Loading…"}),children:(0,b.jsx)(I,{})})})}],318996)}];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=_1gxjjvh._.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../node_modules/.pnpm/%40swc%2Bhelpers%400.5.23/node_modules/%40swc/helpers/cjs/_interop_require_default.cjs","../../../../node_modules/.pnpm/next%4016.3.6_%40babel%2Bcore%407.29.7_%40types%2Bnode%4022.20.4_react-dom%4019.3.0_react%4019.3.0__react%4019.3.0/node_modules/next/src/shared/lib/encode-uri-path.ts","../../../../node_modules/.pnpm/next%4016.3.6_%40babel%2Bcore%407.29.7_%40types%2Bnode%4022.20.4_react-dom%4019.3.0_react%4019.3.0__react%4019.3.0/node_modules/next/src/shared/lib/lazy-dynamic/dynamic-bailout-to-csr.tsx","../../../../node_modules/.pnpm/next%4016.3.6_%40babel%2Bcore%407.29.7_%40types%2Bnode%4022.20.4_react-dom%4019.3.0_react%4019.3.0__react%4019.3.0/node_modules/next/src/shared/lib/lazy-dynamic/preload-chunks.tsx","../../../../node_modules/.pnpm/next%4016.3.6_%40babel%2Bcore%407.29.7_%40types%2Bnode%4022.20.4_react-dom%4019.3.0_react%4019.3.0__react%4019.3.0/node_modules/next/src/shared/lib/lazy-dynamic/loadable.tsx","../../../../node_modules/.pnpm/next%4016.3.6_%40babel%2Bcore%407.29.7_%40types%2Bnode%4022.20.4_react-dom%4019.3.0_react%4019.3.0__react%4019.3.0/node_modules/next/src/shared/lib/app-dynamic.tsx","../../../../src/components/explorer/FileTree.tsx","../../../../src/components/explorer/FileTreemap.tsx","../../../../src/components/explorer/FileDetail.tsx","../../../../src/components/explorer/ExplorerTab.tsx","../../../../src/app/%28app%29/explorer/page.tsx","../../../../node_modules/.pnpm/lucide-react%401.48.0_react%4019.3.0/node_modules/lucide-react/src/icons/external-link.ts","../../../../node_modules/.pnpm/lucide-react%401.48.0_react%4019.3.0/node_modules/lucide-react/src/icons/flame.ts","../../../../node_modules/.pnpm/lucide-react%401.48.0_react%4019.3.0/node_modules/lucide-react/src/icons/square-stack.ts","../../../../node_modules/.pnpm/lucide-react%401.48.0_react%4019.3.0/node_modules/lucide-react/src/icons/tree-pine.ts"],"sourcesContent":["\"use strict\";\n\nfunction _interop_require_default(obj) {\n return obj && obj.__esModule ? obj : { default: obj };\n}\nexports._ = _interop_require_default;\n","export function encodeURIPath(file: string) {\n return file\n .split('/')\n .map((p) => encodeURIComponent(p))\n .join('/')\n}\n","'use client'\n\nimport type { ReactElement } from 'react'\nimport { BailoutToCSRError } from './bailout-to-csr'\n\ninterface BailoutToCSRProps {\n reason: string\n children: ReactElement\n}\n\n/**\n * If rendered on the server, this component throws an error\n * to signal Next.js that it should bail out to client-side rendering instead.\n */\nexport function BailoutToCSR({ reason, children }: BailoutToCSRProps) {\n if (typeof window === 'undefined') {\n throw new BailoutToCSRError(reason)\n }\n\n return children\n}\n","'use client'\n\nimport { preload } from 'react-dom'\n\nimport { workAsyncStorage } from '../../../server/app-render/work-async-storage.external'\nimport { encodeURIPath } from '../encode-uri-path'\nimport { getAssetTokenQuery } from '../deployment-id'\n\nexport function PreloadChunks({\n moduleIds,\n}: {\n moduleIds: string[] | undefined\n}) {\n // Early return in client compilation and only load requestStore on server side\n if (typeof window !== 'undefined') {\n return null\n }\n\n const workStore = workAsyncStorage.getStore()\n if (workStore === undefined) {\n return null\n }\n\n const allFiles = []\n\n // Search the current dynamic call unique key id in react loadable manifest,\n // and find the corresponding CSS files to preload\n if (workStore.reactLoadableManifest && moduleIds) {\n const manifest = workStore.reactLoadableManifest\n for (const key of moduleIds) {\n if (!manifest[key]) continue\n const chunks = manifest[key].files\n allFiles.push(...chunks)\n }\n }\n\n if (allFiles.length === 0) {\n return null\n }\n\n const query = getAssetTokenQuery()\n\n return (\n <>\n {allFiles.map((chunk) => {\n const href = `${workStore.assetPrefix}/_next/${encodeURIPath(chunk)}${query}`\n const isCss = chunk.endsWith('.css')\n // If it's stylesheet we use `precedence` o help hoist with React Float.\n // For stylesheets we actually need to render the CSS because nothing else is going to do it so it needs to be part of the component tree.\n // The `preload` for stylesheet is not optional.\n if (isCss) {\n return (\n <link\n key={chunk}\n // @ts-ignore\n precedence=\"dynamic\"\n href={href}\n rel=\"stylesheet\"\n as=\"style\"\n nonce={workStore.nonce}\n />\n )\n } else {\n // If it's script we use ReactDOM.preload to preload the resources\n preload(href, {\n as: 'script',\n fetchPriority: 'low',\n nonce: workStore.nonce,\n })\n return null\n }\n })}\n </>\n )\n}\n","import { Suspense, Fragment, lazy } from 'react'\nimport { BailoutToCSR } from './dynamic-bailout-to-csr'\nimport type { ComponentModule } from './types'\nimport { PreloadChunks } from './preload-chunks'\n\n// Normalize loader to return the module as form { default: Component } for `React.lazy`.\n// Also for backward compatible since next/dynamic allows to resolve a component directly with loader\n// Client component reference proxy need to be converted to a module.\nfunction convertModule<P>(\n mod: React.ComponentType<P> | ComponentModule<P> | undefined\n): {\n default: React.ComponentType<P>\n} {\n // Check \"default\" prop before accessing it, as it could be client reference proxy that could break it reference.\n // Cases:\n // mod: { default: Component }\n // mod: Component\n // mod: { default: proxy(Component) }\n // mod: proxy(Component)\n const hasDefault = mod && 'default' in mod\n return {\n default: hasDefault\n ? (mod as ComponentModule<P>).default\n : (mod as React.ComponentType<P>),\n }\n}\n\nconst defaultOptions = {\n loader: () => Promise.resolve(convertModule(() => null)),\n loading: null,\n ssr: true,\n}\n\ninterface LoadableOptions {\n loader?: () => Promise<React.ComponentType<any> | ComponentModule<any>>\n loading?: React.ComponentType<any> | null\n ssr?: boolean\n modules?: string[]\n}\n\nfunction Loadable(options: LoadableOptions) {\n const opts = { ...defaultOptions, ...options }\n const Lazy = lazy(() => opts.loader().then(convertModule))\n const Loading = opts.loading\n\n function LoadableComponent(props: any) {\n const fallbackElement = Loading ? (\n <Loading isLoading={true} pastDelay={true} error={null} />\n ) : null\n\n // If it's non-SSR or provided a loading component, wrap it in a suspense boundary\n const hasSuspenseBoundary = !opts.ssr || !!opts.loading\n const Wrap = hasSuspenseBoundary ? Suspense : Fragment\n const wrapProps = hasSuspenseBoundary ? { fallback: fallbackElement } : {}\n const children = opts.ssr ? (\n <>\n {/* During SSR, we need to preload the CSS from the dynamic component to avoid flash of unstyled content */}\n {typeof window === 'undefined' ? (\n <PreloadChunks moduleIds={opts.modules} />\n ) : null}\n <Lazy {...props} />\n </>\n ) : (\n <BailoutToCSR reason=\"next/dynamic\">\n <Lazy {...props} />\n </BailoutToCSR>\n )\n\n return <Wrap {...wrapProps}>{children}</Wrap>\n }\n\n LoadableComponent.displayName = 'LoadableComponent'\n\n return LoadableComponent\n}\n\nexport default Loadable\n","import type React from 'react'\nimport type { JSX } from 'react'\nimport Loadable from './lazy-dynamic/loadable'\n\nimport type {\n LoadableGeneratedOptions,\n DynamicOptionsLoadingProps,\n Loader,\n LoaderComponent,\n} from './lazy-dynamic/types'\n\nexport {\n type LoadableGeneratedOptions,\n type DynamicOptionsLoadingProps,\n type Loader,\n type LoaderComponent,\n}\n\nexport type DynamicOptions<P = {}> = LoadableGeneratedOptions & {\n loading?: () => JSX.Element | null\n loader?: Loader<P>\n loadableGenerated?: LoadableGeneratedOptions\n modules?: string[]\n ssr?: boolean\n}\n\nexport type LoadableOptions<P = {}> = DynamicOptions<P>\n\nexport type LoadableFn<P = {}> = (\n opts: LoadableOptions<P>\n) => React.ComponentType<P>\n\nexport type LoadableComponent<P = {}> = React.ComponentType<P>\n\nexport default function dynamic<P = {}>(\n dynamicOptions: DynamicOptions<P> | Loader<P>,\n options?: DynamicOptions<P>\n): React.ComponentType<P> {\n const loadableOptions: LoadableOptions<P> = {}\n\n if (typeof dynamicOptions === 'function') {\n loadableOptions.loader = dynamicOptions\n }\n\n const mergedOptions = {\n ...loadableOptions,\n ...options,\n }\n\n return Loadable({\n ...mergedOptions,\n modules: mergedOptions.loadableGenerated?.modules,\n })\n}\n","\"use client\"\n\nimport { useMemo, useState } from \"react\"\nimport { FileText, Folder, FolderOpen, ChevronRight } from \"lucide-react\"\nimport { cn } from \"@/lib/utils\"\nimport { ScrollArea } from \"@/components/ui/scroll-area\"\nimport { Collapsible, CollapsibleContent, CollapsibleTrigger } from \"@/components/ui/collapsible\"\nimport type { ExplorerFile } from \"@/types\"\n\ninterface TreeNode {\n name: string\n children: TreeNode[]\n file?: ExplorerFile\n folderPath: string // full path for stable keys\n}\n\nfunction buildTree(files: ExplorerFile[]): TreeNode[] {\n const root: TreeNode = { name: \"\", children: [], folderPath: \"\" }\n for (const file of files) {\n const parts = file.path.replace(/\\\\/g, \"/\").split(\"/\")\n let node = root\n let currentPath = \"\"\n for (let i = 0; i < parts.length - 1; i++) {\n currentPath = currentPath ? `${currentPath}/${parts[i]}` : parts[i]\n let child = node.children.find((c) => c.name === parts[i] && !c.file)\n if (!child) {\n child = { name: parts[i], children: [], folderPath: currentPath }\n node.children.push(child)\n }\n node = child\n }\n node.children.push({ name: parts[parts.length - 1], children: [], file, folderPath: file.path })\n }\n return root.children\n}\n\nfunction getHeatmapClass(mtime: string): string {\n const daysDiff = (Date.now() - new Date(mtime).getTime()) / (1000 * 60 * 60 * 24)\n if (daysDiff <= 7) return \"text-green-400\"\n if (daysDiff <= 28) return \"text-yellow-400/70\"\n return \"text-muted\"\n}\n\ninterface TreeNodeRowProps {\n node: TreeNode\n depth: number\n selectedPath: string | null\n onSelect: (path: string) => void\n heatmap: boolean\n defaultOpen?: boolean\n}\n\nfunction TreeNodeRow({ node, depth, selectedPath, onSelect, heatmap, defaultOpen = false }: TreeNodeRowProps) {\n const [open, setOpen] = useState(defaultOpen)\n const indent = depth * 12\n\n if (node.file) {\n const isSelected = node.file.path === selectedPath\n const colorClass = heatmap ? getHeatmapClass(node.file.mtime) : \"text-muted\"\n return (\n <button\n onClick={() => onSelect(node.file!.path)}\n className={cn(\n \"w-full flex flex-col gap-0.5 px-2 py-1.5 text-left hover:bg-surface2 transition-colors rounded-sm\",\n isSelected && \"bg-surface2 ring-1 ring-inset ring-accent/30\"\n )}\n style={{ paddingLeft: indent + 8 }}\n >\n <div className=\"flex items-center gap-1.5\">\n <FileText className={cn(\"w-3.5 h-3.5 shrink-0\", colorClass)} />\n <span className=\"text-xs text-txt truncate\">{node.name}</span>\n </div>\n {node.file.description && (\n <p className=\"text-[10px] text-muted leading-tight truncate\" style={{ paddingLeft: 20 }}>\n {node.file.description}\n </p>\n )}\n </button>\n )\n }\n\n return (\n <Collapsible open={open} onOpenChange={setOpen}>\n <CollapsibleTrigger asChild>\n <button\n className=\"w-full flex items-center gap-1.5 px-2 py-1 text-left hover:bg-surface2 transition-colors rounded-sm\"\n style={{ paddingLeft: indent + 8 }}\n >\n <ChevronRight\n className={cn(\"w-3 h-3 text-muted shrink-0 transition-transform duration-200\", open && \"rotate-90\")}\n />\n {open\n ? <FolderOpen className=\"w-3.5 h-3.5 text-accent shrink-0\" />\n : <Folder className=\"w-3.5 h-3.5 text-muted shrink-0\" />\n }\n <span className=\"text-xs text-txt font-medium\">{node.name}</span>\n </button>\n </CollapsibleTrigger>\n <CollapsibleContent>\n {node.children.map((child) => (\n <TreeNodeRow\n key={child.folderPath}\n node={child}\n depth={depth + 1}\n selectedPath={selectedPath}\n onSelect={onSelect}\n heatmap={heatmap}\n />\n ))}\n </CollapsibleContent>\n </Collapsible>\n )\n}\n\ninterface FileTreeProps {\n files: ExplorerFile[]\n selectedPath: string | null\n onSelect: (path: string) => void\n heatmap: boolean\n}\n\nexport function FileTree({ files, selectedPath, onSelect, heatmap }: FileTreeProps) {\n const tree = useMemo(() => buildTree(files), [files])\n\n return (\n <ScrollArea className=\"flex-1\">\n <div className=\"p-2\">\n {tree.map((node) => (\n <TreeNodeRow\n key={node.folderPath}\n node={node}\n depth={0}\n selectedPath={selectedPath}\n onSelect={onSelect}\n heatmap={heatmap}\n defaultOpen={true}\n />\n ))}\n </div>\n </ScrollArea>\n )\n}\n","\"use client\"\n\nimport dynamic from \"next/dynamic\"\nimport { useMemo } from \"react\"\nimport type { ExplorerFile } from \"@/types\"\n\n// ECharts uses browser APIs — must be dynamically imported with ssr: false\nconst ReactECharts = dynamic(() => import(\"echarts-for-react\"), { ssr: false })\n\ninterface TreemapNode {\n name: string\n value?: number\n path?: string\n itemStyle?: { color: string }\n children?: TreemapNode[]\n}\n\ninterface FileTreemapProps {\n files: ExplorerFile[]\n onSelect: (path: string) => void\n}\n\nfunction freshnessColor(mtime: string): string {\n const age = Date.now() - new Date(mtime).getTime()\n const days = age / (1000 * 60 * 60 * 24)\n if (days <= 7) return \"#059669\" // emerald-600 — recent (readable on dark)\n if (days <= 28) return \"#b45309\" // amber-700 — mid\n return \"#334155\" // slate-700 — old\n}\n\nfunction buildTreemapData(files: ExplorerFile[]): TreemapNode[] {\n const root: TreemapNode[] = []\n const folderMap = new Map<string, TreemapNode>()\n\n // Normalize to forward slashes (paths may have backslashes on Windows/WSL)\n // and skip root-level files (no folder) — they'd appear as orphan tiles.\n const sorted = [...files]\n .map((f) => ({ ...f, path: f.path.replace(/\\\\/g, \"/\") }))\n .filter((f) => f.path.includes(\"/\"))\n .sort((a, b) => a.path.localeCompare(b.path))\n\n for (const file of sorted) {\n const parts = file.path.split(\"/\")\n const fileName = parts[parts.length - 1].replace(/\\.md$/i, \"\")\n\n const leaf: TreemapNode = {\n name: fileName,\n value: 1,\n path: file.path,\n itemStyle: { color: freshnessColor(file.mtime) },\n }\n\n if (parts.length === 1) {\n // Top-level file\n root.push(leaf)\n } else {\n // Ensure each ancestor folder exists\n for (let depth = 1; depth < parts.length; depth++) {\n const folderPath = parts.slice(0, depth).join(\"/\")\n if (!folderMap.has(folderPath)) {\n const folderNode: TreemapNode = {\n name: parts[depth - 1],\n // value will be summed up after tree is built\n children: [],\n }\n folderMap.set(folderPath, folderNode)\n\n if (depth === 1) {\n root.push(folderNode)\n } else {\n const parentPath = parts.slice(0, depth - 1).join(\"/\")\n const parent = folderMap.get(parentPath)\n if (parent) parent.children!.push(folderNode)\n }\n }\n }\n\n // Attach leaf to its immediate parent folder\n const parentPath = parts.slice(0, parts.length - 1).join(\"/\")\n const parent = folderMap.get(parentPath)\n if (parent) parent.children!.push(leaf)\n }\n }\n\n // Give each folder a value = number of descendant files so ECharts sizes it correctly\n function sumValues(node: TreemapNode): number {\n if (!node.children || node.children.length === 0) return node.value ?? 1\n const total = node.children.reduce((acc, child) => acc + sumValues(child), 0)\n node.value = total\n return total\n }\n root.forEach(sumValues)\n\n return root\n}\n\nexport function FileTreemap({ files, onSelect }: FileTreemapProps) {\n const treeData = useMemo(() => buildTreemapData(files), [files])\n\n const option = useMemo(\n () => ({\n backgroundColor: \"transparent\",\n tooltip: {\n backgroundColor: \"#1e293b\",\n borderColor: \"#334155\",\n borderWidth: 1,\n padding: [6, 10],\n textStyle: { color: \"#f1f5f9\", fontSize: 12 },\n formatter: (info: { name: string; data: TreemapNode }) => {\n const { name, data } = info\n return data.path\n ? `<span style=\"color:#94a3b8;font-size:11px\">${data.path}</span>`\n : `<span style=\"font-weight:600\">${name}/</span>`\n },\n },\n series: [\n {\n type: \"treemap\",\n data: treeData,\n roam: false,\n leafDepth: 1,\n width: \"100%\",\n height: \"100%\",\n top: 4,\n bottom: 36,\n left: 4,\n right: 4,\n squareRatio: 0.7,\n breadcrumb: {\n show: true,\n bottom: 4,\n height: 26,\n gap: 6,\n itemStyle: {\n color: \"#1e293b\",\n borderColor: \"#334155\",\n borderWidth: 1,\n shadowBlur: 0,\n textStyle: { color: \"#94a3b8\", fontSize: 11, fontFamily: \"inherit\" },\n },\n emptyItemWidth: 20,\n },\n // labels on leaf nodes\n label: {\n show: true,\n formatter: \"{b}\",\n fontSize: 12,\n fontWeight: 500,\n color: \"#f1f5f9\",\n textShadowBlur: 3,\n textShadowColor: \"rgba(0,0,0,0.8)\",\n overflow: \"truncate\",\n padding: [4, 6],\n },\n // labels on folder header bar\n upperLabel: {\n show: true,\n height: 24,\n fontSize: 12,\n fontWeight: 700,\n color: \"#f8fafc\",\n backgroundColor: \"rgba(15,23,42,0.85)\",\n borderRadius: [4, 4, 0, 0],\n padding: [4, 8],\n textShadowBlur: 0,\n },\n itemStyle: {\n borderColor: \"#0f172a\",\n borderWidth: 1,\n gapWidth: 1,\n },\n emphasis: {\n label: { color: \"#ffffff\", fontWeight: 700 },\n upperLabel: { color: \"#ffffff\", backgroundColor: \"rgba(99,102,241,0.9)\" },\n itemStyle: { borderColor: \"#6366f1\", borderWidth: 2 },\n },\n levels: [\n {\n // top-level folders — large colored blocks\n color: [\"#1e3a5f\", \"#1a3a2e\", \"#3b2a1a\", \"#2d1b4e\", \"#1a2e3b\", \"#3b1a1a\"],\n itemStyle: {\n borderColor: \"#0f172a\",\n borderWidth: 3,\n gapWidth: 4,\n },\n upperLabel: {\n show: true,\n height: 28,\n fontSize: 13,\n fontWeight: 700,\n color: \"#f8fafc\",\n backgroundColor: \"rgba(15,23,42,0.9)\",\n },\n },\n {\n // sub-folders\n itemStyle: {\n borderColor: \"#0f172a\",\n borderWidth: 2,\n gapWidth: 2,\n },\n upperLabel: { show: true },\n },\n {\n // leaf files — color comes from itemStyle.color set per-node (freshness)\n itemStyle: {\n borderColor: \"rgba(15,23,42,0.6)\",\n borderWidth: 1,\n gapWidth: 1,\n },\n },\n ],\n },\n ],\n }),\n [treeData]\n )\n\n function handleClick(params: { data?: TreemapNode }) {\n if (!params?.data?.path) return\n onSelect(params.data.path)\n }\n\n if (files.length === 0) {\n return (\n <div className=\"flex-1 flex items-center justify-center text-muted text-sm h-full\">\n No files to display\n </div>\n )\n }\n\n return (\n <ReactECharts\n option={option}\n onEvents={{ click: handleClick }}\n style={{ height: \"100%\", width: \"100%\" }}\n opts={{ renderer: \"canvas\" }}\n notMerge\n />\n )\n}\n","\"use client\"\n\nimport { useState, useEffect } from \"react\"\nimport { FileText, RefreshCw, ExternalLink } from \"lucide-react\"\nimport { Button } from \"@/components/ui/button\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { cn } from \"@/lib/utils\"\nimport type { ExplorerFile } from \"@/types\"\n\nconst SOURCE_LABEL: Record<ExplorerFile['source'], string> = { ai: 'AI', extracted: 'Auto' }\nconst SOURCE_VARIANT: Record<ExplorerFile['source'], 'default' | 'secondary'> = { ai: 'default', extracted: 'secondary' }\n\ninterface FileDetailProps {\n file: ExplorerFile | null\n root: string\n onEnriched: (path: string, description: string) => void\n onOpenDoc: (path: string) => Promise<void>\n}\n\nexport function FileDetail({ file, root, onEnriched, onOpenDoc }: FileDetailProps) {\n const [enriching, setEnriching] = useState(false)\n const [flashGreen, setFlashGreen] = useState(false)\n const [error, setError] = useState<string | null>(null)\n\n useEffect(() => {\n setEnriching(false)\n setFlashGreen(false)\n setError(null)\n }, [file?.path])\n\n if (!file) {\n return (\n <div className=\"flex-1 flex items-center justify-center text-muted text-sm\">\n Select a file to see details\n </div>\n )\n }\n\n const parts = file.path.split(\"/\")\n\n async function handleEnrich() {\n setEnriching(true)\n setError(null)\n try {\n const res = await fetch(\"/api/explorer\", {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({ path: file!.path, ...(root ? { root } : {}) }),\n })\n const data = await res.json()\n if (res.ok) {\n onEnriched(file!.path, data.description)\n setFlashGreen(true)\n setTimeout(() => setFlashGreen(false), 1500)\n } else {\n setError(data.error ?? 'Enrichment failed')\n }\n } finally {\n setEnriching(false)\n }\n }\n\n return (\n <div className=\"flex-1 p-6 flex flex-col gap-4 overflow-auto\">\n <div className=\"flex items-center gap-1.5 text-xs text-muted flex-wrap\">\n <FileText className=\"w-3.5 h-3.5 shrink-0\" />\n {parts.map((part, i) => (\n <span key={i} className=\"flex items-center gap-1.5\">\n {i > 0 && <span className=\"text-muted\">/</span>}\n <span className={i === parts.length - 1 ? \"text-txt font-medium\" : \"\"}>\n {part}\n </span>\n </span>\n ))}\n </div>\n\n <p className={cn(\"text-sm leading-relaxed transition-colors duration-500\", flashGreen ? \"text-green-400\" : \"text-txt\")}>\n {file.description || (\n <span className=\"text-muted italic\">\n No description yet — click Re-enrich to generate one\n </span>\n )}\n </p>\n\n {error && (\n <p className=\"text-xs text-red-400\">{error}</p>\n )}\n\n <div className=\"flex items-center gap-2 text-xs text-muted\">\n <Badge variant={SOURCE_VARIANT[file.source]} className=\"text-[10px]\">\n {SOURCE_LABEL[file.source]}\n </Badge>\n <span>Updated {new Date(file.updatedAt).toLocaleDateString()}</span>\n <span className=\"ml-auto\">Modified {new Date(file.mtime).toLocaleDateString()}</span>\n </div>\n\n <div className=\"flex gap-2 pt-2\">\n <Button variant=\"outline\" size=\"sm\" onClick={handleEnrich} disabled={enriching}>\n <RefreshCw className={`w-3 h-3 mr-1.5 ${enriching ? \"animate-spin\" : \"\"}`} />\n Re-enrich\n </Button>\n <Button variant=\"outline\" size=\"sm\" onClick={() => onOpenDoc(file.path)}>\n <ExternalLink className=\"w-3 h-3 mr-1.5\" />\n Open in Docs\n </Button>\n </div>\n </div>\n )\n}\n","\"use client\"\n\nimport { useState, useEffect, useMemo } from \"react\"\nimport { useRouter } from \"next/navigation\"\nimport { TreePine, SquareStack, Flame, type LucideIcon } from \"lucide-react\"\nimport { Input } from \"@/components/ui/input\"\nimport { Button } from \"@/components/ui/button\"\nimport { cn } from \"@/lib/utils\"\nimport { FileTree } from \"./FileTree\"\nimport { FileTreemap } from \"./FileTreemap\"\nimport { FileDetail } from \"./FileDetail\"\nimport type { ExplorerFile } from \"@/types\"\n\ntype ViewMode = \"tree\" | \"treemap\" | \"heatmap\"\ntype SortMode = \"name\" | \"mtime\" | \"updated\"\n\ninterface ExplorerTabProps {\n files: ExplorerFile[]\n loading: boolean\n view: ViewMode\n root: string\n onEnriched: (path: string, description: string) => void\n onOpenDoc: (path: string) => Promise<void>\n}\n\nconst VIEWS: { id: ViewMode; Icon: LucideIcon; label: string }[] = [\n { id: \"tree\", Icon: TreePine, label: \"Tree\" },\n { id: \"treemap\", Icon: SquareStack, label: \"Treemap\" },\n { id: \"heatmap\", Icon: Flame, label: \"Heatmap\" },\n]\n\nexport function ExplorerTab({ files, loading, view, root, onEnriched, onOpenDoc }: ExplorerTabProps) {\n const router = useRouter()\n const [search, setSearch] = useState(\"\")\n const [selectedPath, setSelectedPath] = useState<string | null>(null)\n const [activeSection, setActiveSection] = useState<string>(\"all\")\n const [sort, setSort] = useState<SortMode>(\"name\")\n const [missingOnly, setMissingOnly] = useState(false)\n\n const selectedFile = files.find((f) => f.path === selectedPath) ?? null\n\n const sections = useMemo(\n () => [\"all\", ...[...new Set(files.map(f => f.section))].sort()],\n [files]\n )\n\n const filteredFiles = useMemo(() => {\n let result = files\n\n if (search) {\n const q = search.toLowerCase()\n result = result.filter(\n f => f.path.toLowerCase().includes(q) || f.description.toLowerCase().includes(q)\n )\n }\n\n if (activeSection !== \"all\") {\n result = result.filter(f => f.section === activeSection)\n }\n\n if (missingOnly) {\n result = result.filter(f => !f.description.trim())\n }\n\n return [...result].sort((a, b) => {\n if (sort === \"mtime\") return b.mtime.localeCompare(a.mtime)\n if (sort === \"updated\") return b.updatedAt.localeCompare(a.updatedAt)\n return a.path.localeCompare(b.path)\n })\n }, [files, search, activeSection, missingOnly, sort])\n\n // Clear selection when the selected file is filtered out\n useEffect(() => {\n if (selectedPath !== null && !filteredFiles.find(f => f.path === selectedPath)) {\n setSelectedPath(null)\n }\n }, [filteredFiles, selectedPath])\n\n // Reset section filter when search changes\n useEffect(() => {\n setActiveSection(\"all\")\n }, [search])\n\n function setView(v: ViewMode) {\n router.push(`/explorer?view=${v}`)\n }\n\n return (\n <div className=\"flex flex-col h-full\">\n {/* Header row 1 */}\n <div className=\"flex items-center gap-3 px-4 py-3 border-b border-border shrink-0\">\n <span className=\"font-display font-semibold text-txt text-sm shrink-0\">Explorer</span>\n <Input\n id=\"explorer-search\"\n placeholder=\"Search files and descriptions…\"\n value={search}\n onChange={(e) => setSearch(e.target.value)}\n className=\"flex-1 h-7 text-xs\"\n />\n <div className=\"flex items-center gap-1 shrink-0\">\n {VIEWS.map(({ id, Icon, label }) => (\n <Button\n key={id}\n variant={view === id ? \"secondary\" : \"ghost\"}\n size=\"sm\"\n className=\"h-7 px-2 text-xs gap-1\"\n onClick={() => setView(id)}\n >\n <Icon className=\"w-3 h-3\" />\n {label}\n </Button>\n ))}\n <select\n value={sort}\n onChange={e => setSort(e.target.value as SortMode)}\n className=\"h-7 px-2 text-xs bg-surface2 border border-border rounded-sm text-txt focus:outline-hidden focus:border-accent ml-1\"\n >\n <option value=\"name\">Name</option>\n <option value=\"mtime\">Modified</option>\n <option value=\"updated\">Described</option>\n </select>\n <button\n onClick={() => setMissingOnly(v => !v)}\n className={cn(\n \"h-7 px-2 rounded-sm text-xs transition-colors border ml-1\",\n missingOnly\n ? \"bg-amber/20 text-amber border-amber/40\"\n : \"bg-surface2 text-muted border-border hover:text-txt\"\n )}\n >\n No desc\n </button>\n </div>\n </div>\n\n {/* Header row 2: section pills */}\n {sections.length > 2 && (\n <div className=\"flex items-center gap-1 px-4 py-2 border-b border-border overflow-x-auto shrink-0\">\n {sections.map(s => (\n <button\n key={s}\n onClick={() => setActiveSection(s)}\n className={cn(\n \"px-2.5 py-0.5 rounded-full text-xs whitespace-nowrap transition-colors\",\n activeSection === s\n ? \"bg-accent text-white\"\n : \"bg-surface2 text-muted hover:text-txt\"\n )}\n >\n {s === \"all\" ? \"All\" : s}\n </button>\n ))}\n </div>\n )}\n\n {/* Content */}\n {loading ? (\n <div className=\"flex-1 flex items-center justify-center text-muted text-sm\">\n Loading…\n </div>\n ) : view === \"treemap\" ? (\n <div className=\"flex-1 flex overflow-hidden\">\n <div className=\"flex-1 overflow-hidden\">\n <FileTreemap files={filteredFiles} onSelect={setSelectedPath} />\n </div>\n {selectedPath && selectedFile && (\n <div className=\"w-80 border-l border-border shrink-0\">\n <FileDetail\n file={selectedFile}\n root={root}\n onEnriched={onEnriched}\n onOpenDoc={onOpenDoc}\n />\n </div>\n )}\n </div>\n ) : (\n <div className=\"flex-1 flex overflow-hidden\">\n <div className=\"w-72 border-r border-border flex flex-col overflow-hidden\">\n {filteredFiles.length === 0 ? (\n <div className=\"flex-1 flex items-center justify-center text-muted text-sm\">\n No files match your search\n </div>\n ) : (\n <FileTree\n files={filteredFiles}\n selectedPath={selectedPath}\n onSelect={setSelectedPath}\n heatmap={view === \"heatmap\"}\n />\n )}\n </div>\n <FileDetail\n file={selectedFile}\n root={root}\n onEnriched={onEnriched}\n onOpenDoc={onOpenDoc}\n />\n </div>\n )}\n </div>\n )\n}\n","\"use client\"\n\nimport { Suspense, useCallback, useEffect, useState } from \"react\"\nimport { useSearchParams } from \"next/navigation\"\nimport { useApp } from \"@/context/AppContext\"\nimport { ExplorerTab } from \"@/components/explorer/ExplorerTab\"\nimport type { ExplorerFile } from \"@/types\"\n\nfunction ExplorerContent() {\n const { rootParam, activeProject, openDoc } = useApp()\n const searchParams = useSearchParams()\n const view = (searchParams.get(\"view\") as \"tree\" | \"treemap\" | \"heatmap\") || \"tree\"\n const [files, setFiles] = useState<ExplorerFile[]>([])\n const [loading, setLoading] = useState(true)\n\n const fetchFiles = useCallback(async () => {\n setLoading(true)\n try {\n const res = await fetch(`/api/explorer${rootParam}`)\n const data = await res.json()\n setFiles(Array.isArray(data) ? data : [])\n } finally {\n setLoading(false)\n }\n }, [rootParam])\n\n useEffect(() => {\n fetchFiles()\n }, [fetchFiles])\n\n function handleEnriched(path: string, description: string) {\n setFiles((prev) =>\n prev.map((f) =>\n f.path === path\n ? { ...f, description, source: \"ai\" as const, updatedAt: new Date().toISOString() }\n : f\n )\n )\n }\n\n return (\n <ExplorerTab\n files={files}\n loading={loading}\n view={view}\n root={activeProject}\n onEnriched={handleEnriched}\n onOpenDoc={openDoc}\n />\n )\n}\n\nexport default function ExplorerPage() {\n return (\n <div className=\"flex flex-col h-full\">\n <Suspense\n fallback={\n <div className=\"flex-1 flex items-center justify-center text-muted-foreground text-sm\">\n Loading…\n </div>\n }\n >\n <ExplorerContent />\n </Suspense>\n </div>\n )\n}\n","import createLucideIcon from '../createLucideIcon';\nimport type { LucideIconNode, LucideIconData } from '../types';\n\nexport const __iconData: LucideIconData = {\n name: 'external-link',\n size: 24,\n node: [\n ['path', { d: 'M15 3h6v6', key: '1q9fwt' }],\n ['path', { d: 'M10 14 21 3', key: 'gplh6r' }],\n ['path', { d: 'M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6', key: 'a6xqqp' }],\n ],\n};\n\n/**\n * @deprecated Access `__iconData` instead.\n */\nexport const __iconNode: LucideIconNode[] = __iconData.node;\n\n/**\n * @component @name ExternalLink\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/external-link\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ExternalLink = createLucideIcon(__iconData);\n\nexport default ExternalLink;\n","import createLucideIcon from '../createLucideIcon';\nimport type { LucideIconNode, LucideIconData } from '../types';\n\nexport const __iconData: LucideIconData = {\n name: 'flame',\n size: 24,\n node: [\n [\n 'path',\n {\n d: 'M12 3q1 4 4 6.5t3 5.5a1 1 0 0 1-14 0 5 5 0 0 1 1-3 1 1 0 0 0 5 0c0-2-1.5-3-1.5-5q0-2 2.5-4',\n key: '1slcih',\n },\n ],\n ],\n};\n\n/**\n * @deprecated Access `__iconData` instead.\n */\nexport const __iconNode: LucideIconNode[] = __iconData.node;\n\n/**\n * @component @name Flame\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/flame\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Flame = createLucideIcon(__iconData);\n\nexport default Flame;\n","import createLucideIcon from '../createLucideIcon';\nimport type { LucideIconNode, LucideIconData } from '../types';\n\nexport const __iconData: LucideIconData = {\n name: 'square-stack',\n size: 24,\n node: [\n ['path', { d: 'M4 10c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h4c1.1 0 2 .9 2 2', key: '4i38lg' }],\n ['path', { d: 'M10 16c-1.1 0-2-.9-2-2v-4c0-1.1.9-2 2-2h4c1.1 0 2 .9 2 2', key: 'mlte4a' }],\n ['rect', { width: '8', height: '8', x: '14', y: '14', rx: '2', key: '1fa9i4' }],\n ],\n};\n\n/**\n * @deprecated Access `__iconData` instead.\n */\nexport const __iconNode: LucideIconNode[] = __iconData.node;\n\n/**\n * @component @name SquareStack\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/square-stack\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst SquareStack = createLucideIcon(__iconData);\n\nexport default SquareStack;\n","import createLucideIcon from '../createLucideIcon';\nimport type { LucideIconNode, LucideIconData } from '../types';\n\nexport const __iconData: LucideIconData = {\n name: 'tree-pine',\n size: 24,\n node: [\n [\n 'path',\n {\n d: 'm17 14 3 3.3a1 1 0 0 1-.7 1.7H4.7a1 1 0 0 1-.7-1.7L7 14h-.3a1 1 0 0 1-.7-1.7L9 9h-.2A1 1 0 0 1 8 7.3L12 3l4 4.3a1 1 0 0 1-.8 1.7H15l3 3.3a1 1 0 0 1-.7 1.7H17Z',\n key: 'cpyugq',\n },\n ],\n ['path', { d: 'M12 22v-3', key: 'kmzjlo' }],\n ],\n};\n\n/**\n * @deprecated Access `__iconData` instead.\n */\nexport const __iconNode: LucideIconNode[] = __iconData.node;\n\n/**\n * @component @name TreePine\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/tree-pine\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst TreePine = createLucideIcon(__iconData);\n\nexport default TreePine;\n"],"names":["_interop_require_default","obj","__esModule","default","exports","_","encodeURIPath","file","split","map","p","encodeURIComponent","join","BailoutToCSR","reason","children","window","BailoutToCSRError","PreloadChunks","moduleIds","workStore","workAsyncStorage","getStore","undefined","allFiles","reactLoadableManifest","manifest","key","chunks","files","push","length","query","getAssetTokenQuery","chunk","href","assetPrefix","isCss","endsWith","link","precedence","rel","as","nonce","preload","fetchPriority","convertModule","mod","hasDefault","defaultOptions","loader","Promise","resolve","loading","ssr","Loadable","options","opts","Lazy","lazy","then","Loading","LoadableComponent","props","fallbackElement","isLoading","pastDelay","error","hasSuspenseBoundary","Wrap","Suspense","Fragment","wrapProps","fallback","modules","displayName","dynamic","dynamicOptions","loadableOptions","mergedOptions","loadableGenerated","node","d"],"mappings":"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","ignoreList":[0,1,2,3,4,5,11,12,13,14]}
|
|
1
|
+
{"version":3,"sources":["../../../../node_modules/.pnpm/%40swc%2Bhelpers%400.5.23/node_modules/%40swc/helpers/cjs/_interop_require_default.cjs","../../../../node_modules/.pnpm/next%4016.3.6_%40babel%2Bcore%407.29.7_%40types%2Bnode%4022.20.4_react-dom%4019.3.0_react%4019.3.0__react%4019.3.0/node_modules/next/src/shared/lib/encode-uri-path.ts","../../../../node_modules/.pnpm/next%4016.3.6_%40babel%2Bcore%407.29.7_%40types%2Bnode%4022.20.4_react-dom%4019.3.0_react%4019.3.0__react%4019.3.0/node_modules/next/src/shared/lib/lazy-dynamic/dynamic-bailout-to-csr.tsx","../../../../node_modules/.pnpm/next%4016.3.6_%40babel%2Bcore%407.29.7_%40types%2Bnode%4022.20.4_react-dom%4019.3.0_react%4019.3.0__react%4019.3.0/node_modules/next/src/shared/lib/lazy-dynamic/preload-chunks.tsx","../../../../node_modules/.pnpm/next%4016.3.6_%40babel%2Bcore%407.29.7_%40types%2Bnode%4022.20.4_react-dom%4019.3.0_react%4019.3.0__react%4019.3.0/node_modules/next/src/shared/lib/lazy-dynamic/loadable.tsx","../../../../node_modules/.pnpm/next%4016.3.6_%40babel%2Bcore%407.29.7_%40types%2Bnode%4022.20.4_react-dom%4019.3.0_react%4019.3.0__react%4019.3.0/node_modules/next/src/shared/lib/app-dynamic.tsx","../../../../src/components/explorer/FileTree.tsx","../../../../src/components/explorer/FileTreemap.tsx","../../../../src/components/explorer/FileDetail.tsx","../../../../src/components/explorer/ExplorerTab.tsx","../../../../src/app/%28app%29/explorer/page.tsx","../../../../node_modules/.pnpm/lucide-react%401.48.0_react%4019.3.0/node_modules/lucide-react/src/icons/external-link.ts","../../../../node_modules/.pnpm/lucide-react%401.48.0_react%4019.3.0/node_modules/lucide-react/src/icons/flame.ts","../../../../node_modules/.pnpm/lucide-react%401.48.0_react%4019.3.0/node_modules/lucide-react/src/icons/square-stack.ts","../../../../node_modules/.pnpm/lucide-react%401.48.0_react%4019.3.0/node_modules/lucide-react/src/icons/tree-pine.ts"],"sourcesContent":["\"use strict\";\n\nfunction _interop_require_default(obj) {\n return obj && obj.__esModule ? obj : { default: obj };\n}\nexports._ = _interop_require_default;\n","export function encodeURIPath(file: string) {\n return file\n .split('/')\n .map((p) => encodeURIComponent(p))\n .join('/')\n}\n","'use client'\n\nimport type { ReactElement } from 'react'\nimport { BailoutToCSRError } from './bailout-to-csr'\n\ninterface BailoutToCSRProps {\n reason: string\n children: ReactElement\n}\n\n/**\n * If rendered on the server, this component throws an error\n * to signal Next.js that it should bail out to client-side rendering instead.\n */\nexport function BailoutToCSR({ reason, children }: BailoutToCSRProps) {\n if (typeof window === 'undefined') {\n throw new BailoutToCSRError(reason)\n }\n\n return children\n}\n","'use client'\n\nimport { preload } from 'react-dom'\n\nimport { workAsyncStorage } from '../../../server/app-render/work-async-storage.external'\nimport { encodeURIPath } from '../encode-uri-path'\nimport { getAssetTokenQuery } from '../deployment-id'\n\nexport function PreloadChunks({\n moduleIds,\n}: {\n moduleIds: string[] | undefined\n}) {\n // Early return in client compilation and only load requestStore on server side\n if (typeof window !== 'undefined') {\n return null\n }\n\n const workStore = workAsyncStorage.getStore()\n if (workStore === undefined) {\n return null\n }\n\n const allFiles = []\n\n // Search the current dynamic call unique key id in react loadable manifest,\n // and find the corresponding CSS files to preload\n if (workStore.reactLoadableManifest && moduleIds) {\n const manifest = workStore.reactLoadableManifest\n for (const key of moduleIds) {\n if (!manifest[key]) continue\n const chunks = manifest[key].files\n allFiles.push(...chunks)\n }\n }\n\n if (allFiles.length === 0) {\n return null\n }\n\n const query = getAssetTokenQuery()\n\n return (\n <>\n {allFiles.map((chunk) => {\n const href = `${workStore.assetPrefix}/_next/${encodeURIPath(chunk)}${query}`\n const isCss = chunk.endsWith('.css')\n // If it's stylesheet we use `precedence` o help hoist with React Float.\n // For stylesheets we actually need to render the CSS because nothing else is going to do it so it needs to be part of the component tree.\n // The `preload` for stylesheet is not optional.\n if (isCss) {\n return (\n <link\n key={chunk}\n // @ts-ignore\n precedence=\"dynamic\"\n href={href}\n rel=\"stylesheet\"\n as=\"style\"\n nonce={workStore.nonce}\n />\n )\n } else {\n // If it's script we use ReactDOM.preload to preload the resources\n preload(href, {\n as: 'script',\n fetchPriority: 'low',\n nonce: workStore.nonce,\n })\n return null\n }\n })}\n </>\n )\n}\n","import { Suspense, Fragment, lazy } from 'react'\nimport { BailoutToCSR } from './dynamic-bailout-to-csr'\nimport type { ComponentModule } from './types'\nimport { PreloadChunks } from './preload-chunks'\n\n// Normalize loader to return the module as form { default: Component } for `React.lazy`.\n// Also for backward compatible since next/dynamic allows to resolve a component directly with loader\n// Client component reference proxy need to be converted to a module.\nfunction convertModule<P>(\n mod: React.ComponentType<P> | ComponentModule<P> | undefined\n): {\n default: React.ComponentType<P>\n} {\n // Check \"default\" prop before accessing it, as it could be client reference proxy that could break it reference.\n // Cases:\n // mod: { default: Component }\n // mod: Component\n // mod: { default: proxy(Component) }\n // mod: proxy(Component)\n const hasDefault = mod && 'default' in mod\n return {\n default: hasDefault\n ? (mod as ComponentModule<P>).default\n : (mod as React.ComponentType<P>),\n }\n}\n\nconst defaultOptions = {\n loader: () => Promise.resolve(convertModule(() => null)),\n loading: null,\n ssr: true,\n}\n\ninterface LoadableOptions {\n loader?: () => Promise<React.ComponentType<any> | ComponentModule<any>>\n loading?: React.ComponentType<any> | null\n ssr?: boolean\n modules?: string[]\n}\n\nfunction Loadable(options: LoadableOptions) {\n const opts = { ...defaultOptions, ...options }\n const Lazy = lazy(() => opts.loader().then(convertModule))\n const Loading = opts.loading\n\n function LoadableComponent(props: any) {\n const fallbackElement = Loading ? (\n <Loading isLoading={true} pastDelay={true} error={null} />\n ) : null\n\n // If it's non-SSR or provided a loading component, wrap it in a suspense boundary\n const hasSuspenseBoundary = !opts.ssr || !!opts.loading\n const Wrap = hasSuspenseBoundary ? Suspense : Fragment\n const wrapProps = hasSuspenseBoundary ? { fallback: fallbackElement } : {}\n const children = opts.ssr ? (\n <>\n {/* During SSR, we need to preload the CSS from the dynamic component to avoid flash of unstyled content */}\n {typeof window === 'undefined' ? (\n <PreloadChunks moduleIds={opts.modules} />\n ) : null}\n <Lazy {...props} />\n </>\n ) : (\n <BailoutToCSR reason=\"next/dynamic\">\n <Lazy {...props} />\n </BailoutToCSR>\n )\n\n return <Wrap {...wrapProps}>{children}</Wrap>\n }\n\n LoadableComponent.displayName = 'LoadableComponent'\n\n return LoadableComponent\n}\n\nexport default Loadable\n","import type React from 'react'\nimport type { JSX } from 'react'\nimport Loadable from './lazy-dynamic/loadable'\n\nimport type {\n LoadableGeneratedOptions,\n DynamicOptionsLoadingProps,\n Loader,\n LoaderComponent,\n} from './lazy-dynamic/types'\n\nexport {\n type LoadableGeneratedOptions,\n type DynamicOptionsLoadingProps,\n type Loader,\n type LoaderComponent,\n}\n\nexport type DynamicOptions<P = {}> = LoadableGeneratedOptions & {\n loading?: () => JSX.Element | null\n loader?: Loader<P>\n loadableGenerated?: LoadableGeneratedOptions\n modules?: string[]\n ssr?: boolean\n}\n\nexport type LoadableOptions<P = {}> = DynamicOptions<P>\n\nexport type LoadableFn<P = {}> = (\n opts: LoadableOptions<P>\n) => React.ComponentType<P>\n\nexport type LoadableComponent<P = {}> = React.ComponentType<P>\n\nexport default function dynamic<P = {}>(\n dynamicOptions: DynamicOptions<P> | Loader<P>,\n options?: DynamicOptions<P>\n): React.ComponentType<P> {\n const loadableOptions: LoadableOptions<P> = {}\n\n if (typeof dynamicOptions === 'function') {\n loadableOptions.loader = dynamicOptions\n }\n\n const mergedOptions = {\n ...loadableOptions,\n ...options,\n }\n\n return Loadable({\n ...mergedOptions,\n modules: mergedOptions.loadableGenerated?.modules,\n })\n}\n","\"use client\"\n\nimport { useMemo, useState } from \"react\"\nimport { FileText, Folder, FolderOpen, ChevronRight } from \"lucide-react\"\nimport { cn } from \"@/lib/utils\"\nimport { ScrollArea } from \"@/components/ui/scroll-area\"\nimport { Collapsible, CollapsibleContent, CollapsibleTrigger } from \"@/components/ui/collapsible\"\nimport type { ExplorerFile } from \"@/types\"\n\ninterface TreeNode {\n name: string\n children: TreeNode[]\n file?: ExplorerFile\n folderPath: string // full path for stable keys\n}\n\nfunction buildTree(files: ExplorerFile[]): TreeNode[] {\n const root: TreeNode = { name: \"\", children: [], folderPath: \"\" }\n for (const file of files) {\n const parts = file.path.replace(/\\\\/g, \"/\").split(\"/\")\n let node = root\n let currentPath = \"\"\n for (let i = 0; i < parts.length - 1; i++) {\n currentPath = currentPath ? `${currentPath}/${parts[i]}` : parts[i]\n let child = node.children.find((c) => c.name === parts[i] && !c.file)\n if (!child) {\n child = { name: parts[i], children: [], folderPath: currentPath }\n node.children.push(child)\n }\n node = child\n }\n node.children.push({ name: parts[parts.length - 1], children: [], file, folderPath: file.path })\n }\n return root.children\n}\n\nfunction getHeatmapClass(mtime: string): string {\n const daysDiff = (Date.now() - new Date(mtime).getTime()) / (1000 * 60 * 60 * 24)\n if (daysDiff <= 7) return \"text-green-400\"\n if (daysDiff <= 28) return \"text-yellow-400/70\"\n return \"text-muted\"\n}\n\ninterface TreeNodeRowProps {\n node: TreeNode\n depth: number\n selectedPath: string | null\n onSelect: (path: string) => void\n heatmap: boolean\n defaultOpen?: boolean\n}\n\nfunction TreeNodeRow({ node, depth, selectedPath, onSelect, heatmap, defaultOpen = false }: TreeNodeRowProps) {\n const [open, setOpen] = useState(defaultOpen)\n const indent = depth * 12\n\n if (node.file) {\n const isSelected = node.file.path === selectedPath\n const colorClass = heatmap ? getHeatmapClass(node.file.mtime) : \"text-muted\"\n return (\n <button\n onClick={() => onSelect(node.file!.path)}\n className={cn(\n \"w-full flex flex-col gap-0.5 px-2 py-1.5 text-left hover:bg-surface2 transition-colors rounded-sm\",\n isSelected && \"bg-surface2 ring-1 ring-inset ring-accent/30\"\n )}\n style={{ paddingLeft: indent + 8 }}\n >\n <div className=\"flex items-center gap-1.5\">\n <FileText className={cn(\"w-3.5 h-3.5 shrink-0\", colorClass)} />\n <span className=\"text-xs text-txt truncate\">{node.name}</span>\n </div>\n {node.file.description && (\n <p className=\"text-[10px] text-muted leading-tight truncate\" style={{ paddingLeft: 20 }}>\n {node.file.description}\n </p>\n )}\n </button>\n )\n }\n\n return (\n <Collapsible open={open} onOpenChange={setOpen}>\n <CollapsibleTrigger asChild>\n <button\n className=\"w-full flex items-center gap-1.5 px-2 py-1 text-left hover:bg-surface2 transition-colors rounded-sm\"\n style={{ paddingLeft: indent + 8 }}\n >\n <ChevronRight\n className={cn(\"w-3 h-3 text-muted shrink-0 transition-transform duration-200\", open && \"rotate-90\")}\n />\n {open\n ? <FolderOpen className=\"w-3.5 h-3.5 text-accent shrink-0\" />\n : <Folder className=\"w-3.5 h-3.5 text-muted shrink-0\" />\n }\n <span className=\"text-xs text-txt font-medium\">{node.name}</span>\n </button>\n </CollapsibleTrigger>\n <CollapsibleContent>\n {node.children.map((child) => (\n <TreeNodeRow\n key={child.folderPath}\n node={child}\n depth={depth + 1}\n selectedPath={selectedPath}\n onSelect={onSelect}\n heatmap={heatmap}\n />\n ))}\n </CollapsibleContent>\n </Collapsible>\n )\n}\n\ninterface FileTreeProps {\n files: ExplorerFile[]\n selectedPath: string | null\n onSelect: (path: string) => void\n heatmap: boolean\n}\n\nexport function FileTree({ files, selectedPath, onSelect, heatmap }: FileTreeProps) {\n const tree = useMemo(() => buildTree(files), [files])\n\n return (\n <ScrollArea className=\"flex-1\">\n <div className=\"p-2\">\n {tree.map((node) => (\n <TreeNodeRow\n key={node.folderPath}\n node={node}\n depth={0}\n selectedPath={selectedPath}\n onSelect={onSelect}\n heatmap={heatmap}\n defaultOpen={true}\n />\n ))}\n </div>\n </ScrollArea>\n )\n}\n","\"use client\"\n\nimport dynamic from \"next/dynamic\"\nimport { useMemo } from \"react\"\nimport type { ExplorerFile } from \"@/types\"\n\n// ECharts uses browser APIs — must be dynamically imported with ssr: false\nconst ReactECharts = dynamic(() => import(\"echarts-for-react\"), { ssr: false })\n\ninterface TreemapNode {\n name: string\n value?: number\n path?: string\n itemStyle?: { color: string }\n children?: TreemapNode[]\n}\n\ninterface FileTreemapProps {\n files: ExplorerFile[]\n onSelect: (path: string) => void\n}\n\nfunction freshnessColor(mtime: string): string {\n const age = Date.now() - new Date(mtime).getTime()\n const days = age / (1000 * 60 * 60 * 24)\n if (days <= 7) return \"#059669\" // emerald-600 — recent (readable on dark)\n if (days <= 28) return \"#b45309\" // amber-700 — mid\n return \"#334155\" // slate-700 — old\n}\n\nfunction buildTreemapData(files: ExplorerFile[]): TreemapNode[] {\n const root: TreemapNode[] = []\n const folderMap = new Map<string, TreemapNode>()\n\n // Normalize to forward slashes (paths may have backslashes on Windows/WSL)\n // and skip root-level files (no folder) — they'd appear as orphan tiles.\n const sorted = [...files]\n .map((f) => ({ ...f, path: f.path.replace(/\\\\/g, \"/\") }))\n .filter((f) => f.path.includes(\"/\"))\n .sort((a, b) => a.path.localeCompare(b.path))\n\n for (const file of sorted) {\n const parts = file.path.split(\"/\")\n const fileName = parts[parts.length - 1].replace(/\\.md$/i, \"\")\n\n const leaf: TreemapNode = {\n name: fileName,\n value: 1,\n path: file.path,\n itemStyle: { color: freshnessColor(file.mtime) },\n }\n\n if (parts.length === 1) {\n // Top-level file\n root.push(leaf)\n } else {\n // Ensure each ancestor folder exists\n for (let depth = 1; depth < parts.length; depth++) {\n const folderPath = parts.slice(0, depth).join(\"/\")\n if (!folderMap.has(folderPath)) {\n const folderNode: TreemapNode = {\n name: parts[depth - 1],\n // value will be summed up after tree is built\n children: [],\n }\n folderMap.set(folderPath, folderNode)\n\n if (depth === 1) {\n root.push(folderNode)\n } else {\n const parentPath = parts.slice(0, depth - 1).join(\"/\")\n const parent = folderMap.get(parentPath)\n if (parent) parent.children!.push(folderNode)\n }\n }\n }\n\n // Attach leaf to its immediate parent folder\n const parentPath = parts.slice(0, parts.length - 1).join(\"/\")\n const parent = folderMap.get(parentPath)\n if (parent) parent.children!.push(leaf)\n }\n }\n\n // Give each folder a value = number of descendant files so ECharts sizes it correctly\n function sumValues(node: TreemapNode): number {\n if (!node.children || node.children.length === 0) return node.value ?? 1\n const total = node.children.reduce((acc, child) => acc + sumValues(child), 0)\n node.value = total\n return total\n }\n root.forEach(sumValues)\n\n return root\n}\n\nexport function FileTreemap({ files, onSelect }: FileTreemapProps) {\n const treeData = useMemo(() => buildTreemapData(files), [files])\n\n const option = useMemo(\n () => ({\n backgroundColor: \"transparent\",\n tooltip: {\n backgroundColor: \"#1e293b\",\n borderColor: \"#334155\",\n borderWidth: 1,\n padding: [6, 10],\n textStyle: { color: \"#f1f5f9\", fontSize: 12 },\n formatter: (info: { name: string; data: TreemapNode }) => {\n const { name, data } = info\n return data.path\n ? `<span style=\"color:#94a3b8;font-size:11px\">${data.path}</span>`\n : `<span style=\"font-weight:600\">${name}/</span>`\n },\n },\n series: [\n {\n type: \"treemap\",\n data: treeData,\n roam: false,\n leafDepth: 1,\n width: \"100%\",\n height: \"100%\",\n top: 4,\n bottom: 36,\n left: 4,\n right: 4,\n squareRatio: 0.7,\n breadcrumb: {\n show: true,\n bottom: 4,\n height: 26,\n gap: 6,\n itemStyle: {\n color: \"#1e293b\",\n borderColor: \"#334155\",\n borderWidth: 1,\n shadowBlur: 0,\n textStyle: { color: \"#94a3b8\", fontSize: 11, fontFamily: \"inherit\" },\n },\n emptyItemWidth: 20,\n },\n // labels on leaf nodes\n label: {\n show: true,\n formatter: \"{b}\",\n fontSize: 12,\n fontWeight: 500,\n color: \"#f1f5f9\",\n textShadowBlur: 3,\n textShadowColor: \"rgba(0,0,0,0.8)\",\n overflow: \"truncate\",\n padding: [4, 6],\n },\n // labels on folder header bar\n upperLabel: {\n show: true,\n height: 24,\n fontSize: 12,\n fontWeight: 700,\n color: \"#f8fafc\",\n backgroundColor: \"rgba(15,23,42,0.85)\",\n borderRadius: [4, 4, 0, 0],\n padding: [4, 8],\n textShadowBlur: 0,\n },\n itemStyle: {\n borderColor: \"#0f172a\",\n borderWidth: 1,\n gapWidth: 1,\n },\n emphasis: {\n label: { color: \"#ffffff\", fontWeight: 700 },\n upperLabel: { color: \"#ffffff\", backgroundColor: \"rgba(99,102,241,0.9)\" },\n itemStyle: { borderColor: \"#6366f1\", borderWidth: 2 },\n },\n levels: [\n {\n // top-level folders — large colored blocks\n color: [\"#1e3a5f\", \"#1a3a2e\", \"#3b2a1a\", \"#2d1b4e\", \"#1a2e3b\", \"#3b1a1a\"],\n itemStyle: {\n borderColor: \"#0f172a\",\n borderWidth: 3,\n gapWidth: 4,\n },\n upperLabel: {\n show: true,\n height: 28,\n fontSize: 13,\n fontWeight: 700,\n color: \"#f8fafc\",\n backgroundColor: \"rgba(15,23,42,0.9)\",\n },\n },\n {\n // sub-folders\n itemStyle: {\n borderColor: \"#0f172a\",\n borderWidth: 2,\n gapWidth: 2,\n },\n upperLabel: { show: true },\n },\n {\n // leaf files — color comes from itemStyle.color set per-node (freshness)\n itemStyle: {\n borderColor: \"rgba(15,23,42,0.6)\",\n borderWidth: 1,\n gapWidth: 1,\n },\n },\n ],\n },\n ],\n }),\n [treeData]\n )\n\n function handleClick(params: { data?: TreemapNode }) {\n if (!params?.data?.path) return\n onSelect(params.data.path)\n }\n\n if (files.length === 0) {\n return (\n <div className=\"flex-1 flex items-center justify-center text-muted text-sm h-full\">\n No files to display\n </div>\n )\n }\n\n return (\n <ReactECharts\n option={option}\n onEvents={{ click: handleClick }}\n style={{ height: \"100%\", width: \"100%\" }}\n opts={{ renderer: \"canvas\" }}\n notMerge\n />\n )\n}\n","\"use client\"\n\nimport { useState, useEffect } from \"react\"\nimport { FileText, RefreshCw, ExternalLink } from \"lucide-react\"\nimport { Button } from \"@/components/ui/button\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { cn } from \"@/lib/utils\"\nimport type { ExplorerFile } from \"@/types\"\n\nconst SOURCE_LABEL: Record<ExplorerFile['source'], string> = { ai: 'AI', extracted: 'Auto' }\nconst SOURCE_VARIANT: Record<ExplorerFile['source'], 'default' | 'secondary'> = { ai: 'default', extracted: 'secondary' }\n\ninterface FileDetailProps {\n file: ExplorerFile | null\n root: string\n onEnriched: (path: string, description: string) => void\n onOpenDoc: (path: string) => Promise<void>\n}\n\nexport function FileDetail({ file, root, onEnriched, onOpenDoc }: FileDetailProps) {\n const [enriching, setEnriching] = useState(false)\n const [flashGreen, setFlashGreen] = useState(false)\n const [error, setError] = useState<string | null>(null)\n\n useEffect(() => {\n setEnriching(false)\n setFlashGreen(false)\n setError(null)\n }, [file?.path])\n\n if (!file) {\n return (\n <div className=\"flex-1 flex items-center justify-center text-muted text-sm\">\n Select a file to see details\n </div>\n )\n }\n\n const parts = file.path.split(\"/\")\n\n async function handleEnrich() {\n setEnriching(true)\n setError(null)\n try {\n const res = await fetch(\"/api/explorer\", {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({ path: file!.path, ...(root ? { root } : {}) }),\n })\n const data = await res.json()\n if (res.ok) {\n onEnriched(file!.path, data.description)\n setFlashGreen(true)\n setTimeout(() => setFlashGreen(false), 1500)\n } else {\n setError(data.error ?? 'Enrichment failed')\n }\n } finally {\n setEnriching(false)\n }\n }\n\n return (\n <div className=\"flex-1 p-6 flex flex-col gap-4 overflow-auto\">\n <div className=\"flex items-center gap-1.5 text-xs text-muted flex-wrap\">\n <FileText className=\"w-3.5 h-3.5 shrink-0\" />\n {parts.map((part, i) => (\n <span key={i} className=\"flex items-center gap-1.5\">\n {i > 0 && <span className=\"text-muted\">/</span>}\n <span className={i === parts.length - 1 ? \"text-txt font-medium\" : \"\"}>\n {part}\n </span>\n </span>\n ))}\n </div>\n\n <p className={cn(\"text-sm leading-relaxed transition-colors duration-500\", flashGreen ? \"text-green-400\" : \"text-txt\")}>\n {file.description || (\n <span className=\"text-muted italic\">\n No description yet — click Re-enrich to generate one\n </span>\n )}\n </p>\n\n {error && (\n <p className=\"text-xs text-red-400\">{error}</p>\n )}\n\n <div className=\"flex items-center gap-2 text-xs text-muted\">\n <Badge variant={SOURCE_VARIANT[file.source]} className=\"text-[10px]\">\n {SOURCE_LABEL[file.source]}\n </Badge>\n <span>Updated {new Date(file.updatedAt).toLocaleDateString()}</span>\n <span className=\"ml-auto\">Modified {new Date(file.mtime).toLocaleDateString()}</span>\n </div>\n\n <div className=\"flex gap-2 pt-2\">\n <Button variant=\"outline\" size=\"sm\" onClick={handleEnrich} disabled={enriching}>\n <RefreshCw className={`w-3 h-3 mr-1.5 ${enriching ? \"animate-spin\" : \"\"}`} />\n Re-enrich\n </Button>\n <Button variant=\"outline\" size=\"sm\" onClick={() => onOpenDoc(file.path)}>\n <ExternalLink className=\"w-3 h-3 mr-1.5\" />\n Open in Docs\n </Button>\n </div>\n </div>\n )\n}\n","\"use client\"\n\nimport { useState, useEffect, useMemo } from \"react\"\nimport { useRouter } from \"next/navigation\"\nimport { TreePine, SquareStack, Flame, type LucideIcon } from \"lucide-react\"\nimport { Input } from \"@/components/ui/input\"\nimport { Button } from \"@/components/ui/button\"\nimport { cn } from \"@/lib/utils\"\nimport { FileTree } from \"./FileTree\"\nimport { FileTreemap } from \"./FileTreemap\"\nimport { FileDetail } from \"./FileDetail\"\nimport type { ExplorerFile } from \"@/types\"\n\ntype ViewMode = \"tree\" | \"treemap\" | \"heatmap\"\ntype SortMode = \"name\" | \"mtime\" | \"updated\"\n\ninterface ExplorerTabProps {\n files: ExplorerFile[]\n loading: boolean\n view: ViewMode\n root: string\n onEnriched: (path: string, description: string) => void\n onOpenDoc: (path: string) => Promise<void>\n}\n\nconst VIEWS: { id: ViewMode; Icon: LucideIcon; label: string }[] = [\n { id: \"tree\", Icon: TreePine, label: \"Tree\" },\n { id: \"treemap\", Icon: SquareStack, label: \"Treemap\" },\n { id: \"heatmap\", Icon: Flame, label: \"Heatmap\" },\n]\n\nexport function ExplorerTab({ files, loading, view, root, onEnriched, onOpenDoc }: ExplorerTabProps) {\n const router = useRouter()\n const [search, setSearch] = useState(\"\")\n const [selectedPath, setSelectedPath] = useState<string | null>(null)\n const [activeSection, setActiveSection] = useState<string>(\"all\")\n const [sort, setSort] = useState<SortMode>(\"name\")\n const [missingOnly, setMissingOnly] = useState(false)\n\n const selectedFile = files.find((f) => f.path === selectedPath) ?? null\n\n const sections = useMemo(\n () => [\"all\", ...[...new Set(files.map(f => f.section))].sort()],\n [files]\n )\n\n const filteredFiles = useMemo(() => {\n let result = files\n\n if (search) {\n const q = search.toLowerCase()\n result = result.filter(\n f => f.path.toLowerCase().includes(q) || f.description.toLowerCase().includes(q)\n )\n }\n\n if (activeSection !== \"all\") {\n result = result.filter(f => f.section === activeSection)\n }\n\n if (missingOnly) {\n result = result.filter(f => !f.description.trim())\n }\n\n return [...result].sort((a, b) => {\n if (sort === \"mtime\") return b.mtime.localeCompare(a.mtime)\n if (sort === \"updated\") return b.updatedAt.localeCompare(a.updatedAt)\n return a.path.localeCompare(b.path)\n })\n }, [files, search, activeSection, missingOnly, sort])\n\n // Clear selection when the selected file is filtered out\n useEffect(() => {\n if (selectedPath !== null && !filteredFiles.find(f => f.path === selectedPath)) {\n setSelectedPath(null)\n }\n }, [filteredFiles, selectedPath])\n\n // Reset section filter when search changes\n useEffect(() => {\n setActiveSection(\"all\")\n }, [search])\n\n function setView(v: ViewMode) {\n router.push(`/explorer?view=${v}`)\n }\n\n return (\n <div className=\"flex flex-col h-full\">\n {/* Header row 1 */}\n <div className=\"flex items-center gap-3 px-4 py-3 border-b border-border shrink-0\">\n <span className=\"font-display font-semibold text-txt text-sm shrink-0\">Explorer</span>\n <Input\n id=\"explorer-search\"\n placeholder=\"Search files and descriptions…\"\n value={search}\n onChange={(e) => setSearch(e.target.value)}\n className=\"flex-1 h-7 text-xs\"\n />\n <div className=\"flex items-center gap-1 shrink-0\">\n {VIEWS.map(({ id, Icon, label }) => (\n <Button\n key={id}\n variant={view === id ? \"secondary\" : \"ghost\"}\n size=\"sm\"\n className=\"h-7 px-2 text-xs gap-1\"\n onClick={() => setView(id)}\n >\n <Icon className=\"w-3 h-3\" />\n {label}\n </Button>\n ))}\n <select\n value={sort}\n onChange={e => setSort(e.target.value as SortMode)}\n className=\"h-7 px-2 text-xs bg-surface2 border border-border rounded-sm text-txt focus:outline-hidden focus:border-accent ml-1\"\n >\n <option value=\"name\">Name</option>\n <option value=\"mtime\">Modified</option>\n <option value=\"updated\">Described</option>\n </select>\n <button\n onClick={() => setMissingOnly(v => !v)}\n className={cn(\n \"h-7 px-2 rounded-sm text-xs transition-colors border ml-1\",\n missingOnly\n ? \"bg-amber/20 text-amber border-amber/40\"\n : \"bg-surface2 text-muted border-border hover:text-txt\"\n )}\n >\n No desc\n </button>\n </div>\n </div>\n\n {/* Header row 2: section pills */}\n {sections.length > 2 && (\n <div className=\"flex items-center gap-1 px-4 py-2 border-b border-border overflow-x-auto shrink-0\">\n {sections.map(s => (\n <button\n key={s}\n onClick={() => setActiveSection(s)}\n className={cn(\n \"px-2.5 py-0.5 rounded-full text-xs whitespace-nowrap transition-colors\",\n activeSection === s\n ? \"bg-accent text-accent-fg\"\n : \"bg-surface2 text-muted hover:text-txt\"\n )}\n >\n {s === \"all\" ? \"All\" : s}\n </button>\n ))}\n </div>\n )}\n\n {/* Content */}\n {loading ? (\n <div className=\"flex-1 flex items-center justify-center text-muted text-sm\">\n Loading…\n </div>\n ) : view === \"treemap\" ? (\n <div className=\"flex-1 flex overflow-hidden\">\n <div className=\"flex-1 overflow-hidden\">\n <FileTreemap files={filteredFiles} onSelect={setSelectedPath} />\n </div>\n {selectedPath && selectedFile && (\n <div className=\"w-80 border-l border-border shrink-0\">\n <FileDetail\n file={selectedFile}\n root={root}\n onEnriched={onEnriched}\n onOpenDoc={onOpenDoc}\n />\n </div>\n )}\n </div>\n ) : (\n <div className=\"flex-1 flex overflow-hidden\">\n <div className=\"w-72 border-r border-border flex flex-col overflow-hidden\">\n {filteredFiles.length === 0 ? (\n <div className=\"flex-1 flex items-center justify-center text-muted text-sm\">\n No files match your search\n </div>\n ) : (\n <FileTree\n files={filteredFiles}\n selectedPath={selectedPath}\n onSelect={setSelectedPath}\n heatmap={view === \"heatmap\"}\n />\n )}\n </div>\n <FileDetail\n file={selectedFile}\n root={root}\n onEnriched={onEnriched}\n onOpenDoc={onOpenDoc}\n />\n </div>\n )}\n </div>\n )\n}\n","\"use client\"\n\nimport { Suspense, useCallback, useEffect, useState } from \"react\"\nimport { useSearchParams } from \"next/navigation\"\nimport { useApp } from \"@/context/AppContext\"\nimport { ExplorerTab } from \"@/components/explorer/ExplorerTab\"\nimport type { ExplorerFile } from \"@/types\"\n\nfunction ExplorerContent() {\n const { rootParam, activeProject, openDoc } = useApp()\n const searchParams = useSearchParams()\n const view = (searchParams.get(\"view\") as \"tree\" | \"treemap\" | \"heatmap\") || \"tree\"\n const [files, setFiles] = useState<ExplorerFile[]>([])\n const [loading, setLoading] = useState(true)\n\n const fetchFiles = useCallback(async () => {\n setLoading(true)\n try {\n const res = await fetch(`/api/explorer${rootParam}`)\n const data = await res.json()\n setFiles(Array.isArray(data) ? data : [])\n } finally {\n setLoading(false)\n }\n }, [rootParam])\n\n useEffect(() => {\n fetchFiles()\n }, [fetchFiles])\n\n function handleEnriched(path: string, description: string) {\n setFiles((prev) =>\n prev.map((f) =>\n f.path === path\n ? { ...f, description, source: \"ai\" as const, updatedAt: new Date().toISOString() }\n : f\n )\n )\n }\n\n return (\n <ExplorerTab\n files={files}\n loading={loading}\n view={view}\n root={activeProject}\n onEnriched={handleEnriched}\n onOpenDoc={openDoc}\n />\n )\n}\n\nexport default function ExplorerPage() {\n return (\n <div className=\"flex flex-col h-full\">\n <Suspense\n fallback={\n <div className=\"flex-1 flex items-center justify-center text-muted-foreground text-sm\">\n Loading…\n </div>\n }\n >\n <ExplorerContent />\n </Suspense>\n </div>\n )\n}\n","import createLucideIcon from '../createLucideIcon';\nimport type { LucideIconNode, LucideIconData } from '../types';\n\nexport const __iconData: LucideIconData = {\n name: 'external-link',\n size: 24,\n node: [\n ['path', { d: 'M15 3h6v6', key: '1q9fwt' }],\n ['path', { d: 'M10 14 21 3', key: 'gplh6r' }],\n ['path', { d: 'M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6', key: 'a6xqqp' }],\n ],\n};\n\n/**\n * @deprecated Access `__iconData` instead.\n */\nexport const __iconNode: LucideIconNode[] = __iconData.node;\n\n/**\n * @component @name ExternalLink\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/external-link\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ExternalLink = createLucideIcon(__iconData);\n\nexport default ExternalLink;\n","import createLucideIcon from '../createLucideIcon';\nimport type { LucideIconNode, LucideIconData } from '../types';\n\nexport const __iconData: LucideIconData = {\n name: 'flame',\n size: 24,\n node: [\n [\n 'path',\n {\n d: 'M12 3q1 4 4 6.5t3 5.5a1 1 0 0 1-14 0 5 5 0 0 1 1-3 1 1 0 0 0 5 0c0-2-1.5-3-1.5-5q0-2 2.5-4',\n key: '1slcih',\n },\n ],\n ],\n};\n\n/**\n * @deprecated Access `__iconData` instead.\n */\nexport const __iconNode: LucideIconNode[] = __iconData.node;\n\n/**\n * @component @name Flame\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/flame\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Flame = createLucideIcon(__iconData);\n\nexport default Flame;\n","import createLucideIcon from '../createLucideIcon';\nimport type { LucideIconNode, LucideIconData } from '../types';\n\nexport const __iconData: LucideIconData = {\n name: 'square-stack',\n size: 24,\n node: [\n ['path', { d: 'M4 10c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h4c1.1 0 2 .9 2 2', key: '4i38lg' }],\n ['path', { d: 'M10 16c-1.1 0-2-.9-2-2v-4c0-1.1.9-2 2-2h4c1.1 0 2 .9 2 2', key: 'mlte4a' }],\n ['rect', { width: '8', height: '8', x: '14', y: '14', rx: '2', key: '1fa9i4' }],\n ],\n};\n\n/**\n * @deprecated Access `__iconData` instead.\n */\nexport const __iconNode: LucideIconNode[] = __iconData.node;\n\n/**\n * @component @name SquareStack\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/square-stack\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst SquareStack = createLucideIcon(__iconData);\n\nexport default SquareStack;\n","import createLucideIcon from '../createLucideIcon';\nimport type { LucideIconNode, LucideIconData } from '../types';\n\nexport const __iconData: LucideIconData = {\n name: 'tree-pine',\n size: 24,\n node: [\n [\n 'path',\n {\n d: 'm17 14 3 3.3a1 1 0 0 1-.7 1.7H4.7a1 1 0 0 1-.7-1.7L7 14h-.3a1 1 0 0 1-.7-1.7L9 9h-.2A1 1 0 0 1 8 7.3L12 3l4 4.3a1 1 0 0 1-.8 1.7H15l3 3.3a1 1 0 0 1-.7 1.7H17Z',\n key: 'cpyugq',\n },\n ],\n ['path', { d: 'M12 22v-3', key: 'kmzjlo' }],\n ],\n};\n\n/**\n * @deprecated Access `__iconData` instead.\n */\nexport const __iconNode: LucideIconNode[] = __iconData.node;\n\n/**\n * @component @name TreePine\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/tree-pine\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst TreePine = createLucideIcon(__iconData);\n\nexport default TreePine;\n"],"names":["_interop_require_default","obj","__esModule","default","exports","_","encodeURIPath","file","split","map","p","encodeURIComponent","join","BailoutToCSR","reason","children","window","BailoutToCSRError","PreloadChunks","moduleIds","workStore","workAsyncStorage","getStore","undefined","allFiles","reactLoadableManifest","manifest","key","chunks","files","push","length","query","getAssetTokenQuery","chunk","href","assetPrefix","isCss","endsWith","link","precedence","rel","as","nonce","preload","fetchPriority","convertModule","mod","hasDefault","defaultOptions","loader","Promise","resolve","loading","ssr","Loadable","options","opts","Lazy","lazy","then","Loading","LoadableComponent","props","fallbackElement","isLoading","pastDelay","error","hasSuspenseBoundary","Wrap","Suspense","Fragment","wrapProps","fallback","modules","displayName","dynamic","dynamicOptions","loadableOptions","mergedOptions","loadableGenerated","node","d"],"mappings":"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","ignoreList":[0,1,2,3,4,5,11,12,13,14]}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
module.exports=[768450,a=>{"use strict";var b=a.i(256857);let c={name:"corner-up-left",size:24,node:[["path",{d:"M20 20v-7a4 4 0 0 0-4-4H4",key:"1nkjon"}],["path",{d:"M9 14 4 9l5-5",key:"102s5s"}]]};c.node;let d=(0,b.default)(c);a.s(["CornerUpLeft",0,d],768450)},536236,a=>{"use strict";var b=a.i(662145),c=a.i(174897),d=a.i(368114),e=a.i(757061),f=a.i(149350),g=a.i(173628),h=a.i(218451),i=a.i(822404),j=a.i(425404),k=a.i(768450),l=a.i(270923),m=a.i(441852),n=a.i(763747),o=a.i(661661),p=a.i(28386),q=a.i(335732),r=a.i(443108),s=a.i(147758),t=a.i(192698),u=a.i(508113),v=a.i(319264),w=a.i(452696),x=a.i(618940),y=a.i(890728),z=a.i(258701),A=a.i(815122),B=a.i(544394),C=a.i(685698),D=a.i(107742),E=a.i(542920);let F={todo:["in-progress","paused"],"in-progress":["done","review","blocked","paused","todo"],review:[],blocked:["in-progress","cancelled"],paused:["in-progress","todo"],done:["todo"],cancelled:["todo"]},G={"in-progress":"start",review:"to review",done:"done",blocked:"blocked",paused:"pause",todo:"backlog",cancelled:"cancel"},H="w-full rounded-md border border-border bg-bg px-2.5 py-1.5 text-sm text-txt focus:border-accent/60 focus:outline-hidden";function I({task:a,rootParam:e,onDone:f}){let[g]=(0,c.useState)(a),[h,i]=(0,c.useState)(a.title),[j,k]=(0,c.useState)("—"===a.size?"":a.size),[l,m]=(0,c.useState)("—"===a.phase?"":a.phase),[n,o]=(0,c.useState)("—"===a.dependsOn?"":a.dependsOn),[p,q]=(0,c.useState)(a.due??""),[r,s]=(0,c.useState)(!1),[t,u]=(0,c.useState)(null),v=a=>"—"===a.trim()?"":a.trim();async function w(){let b={};if(h.trim()&&h.trim()!==g.title&&(b.title=h),j.trim()!==v(g.size)&&(b.size=j),l.trim()!==v(g.phase)&&(b.phase=l),n.trim()!==v(g.dependsOn)&&(b.dependsOn=n),(p||null)!==g.due&&(b.due=p||null),0===Object.keys(b).length)return f();s(!0),u(null);try{await (0,z.updateTask)(a.id,b,e),f()}catch(a){u(a.message),s(!1)}}return(0,b.jsxs)("form",{onSubmit:a=>{a.preventDefault(),w()},onKeyDown:a=>{"Escape"===a.key&&(a.stopPropagation(),f())},className:"flex flex-col gap-3 px-5 py-4 border-b border-border shrink-0 bg-surface2/40",children:[(0,b.jsxs)("label",{className:"flex flex-col gap-1 text-xs text-muted",children:["Title",(0,b.jsx)("input",{autoFocus:!0,value:h,onChange:a=>i(a.target.value),className:H})]}),(0,b.jsxs)("div",{className:"grid grid-cols-2 gap-3",children:[(0,b.jsxs)("label",{className:"flex flex-col gap-1 text-xs text-muted",children:["Size",(0,b.jsx)("input",{value:j,onChange:a=>k(a.target.value),placeholder:"S / M / L",className:H})]}),(0,b.jsxs)("label",{className:"flex flex-col gap-1 text-xs text-muted",children:["Due",(0,b.jsx)("input",{type:"date",value:p,onChange:a=>q(a.target.value),className:(0,d.cn)(H,"scheme-light dark:scheme-dark")})]})]}),(0,b.jsxs)("label",{className:"flex flex-col gap-1 text-xs text-muted",children:["Epic / phase",(0,b.jsx)("input",{value:l,onChange:a=>m(a.target.value),placeholder:"R054 — Item actions",className:H})]}),(0,b.jsxs)("label",{className:"flex flex-col gap-1 text-xs text-muted",children:["Depends on",(0,b.jsx)("input",{value:n,onChange:a=>o(a.target.value),placeholder:"T001, T002",className:(0,d.cn)(H,"font-mono")})]}),t&&(0,b.jsx)("p",{role:"alert",className:"text-xs text-danger",children:t}),(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)("button",{type:"submit",disabled:r,className:"text-xs px-2.5 py-1 rounded-sm bg-accent text-accent-fg transition-[filter] hover:brightness-110 disabled:opacity-40",children:"Save"}),(0,b.jsx)("button",{type:"button",onClick:f,disabled:r,className:"text-xs text-muted hover:text-txt",children:"Cancel"})]})]})}function J({taskId:a,onDone:d}){let{rootParam:e}=(0,B.useApp)(),[f,g]=(0,c.useState)(!1),[h,i]=(0,c.useState)(""),[l,m]=(0,c.useState)(!1),[n,o]=(0,c.useState)(null);async function p(b){m(!0),o(null);try{let c=await fetch(`/api/tasks/review${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({id:a,action:b,note:h})});if(!c.ok)throw Error((await c.json().catch(()=>null))?.error??`Request failed (${c.status})`);d()}catch(a){o(a.message),m(!1)}}return(0,b.jsxs)("div",{className:"flex flex-col gap-2 px-5 py-3 border-b border-border shrink-0 bg-accent/5",children:[(0,b.jsx)("p",{className:"text-xs text-muted",children:"Waiting for your review. Approving moves it to done; sending it back returns it to the queue with your note."}),f?(0,b.jsxs)("div",{className:"flex flex-col gap-2 animate-fade-in",children:[(0,b.jsx)("textarea",{autoFocus:!0,value:h,onChange:a=>i(a.target.value),rows:3,placeholder:"What needs to change? The agent reads this first.","aria-label":"Send back note",className:"w-full resize-none rounded-md border border-border bg-bg px-2.5 py-2 text-sm text-txt placeholder:text-muted focus:border-accent/60 focus:outline-hidden"}),(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsxs)("button",{onClick:()=>p("send-back"),disabled:l||!h.trim(),className:"inline-flex items-center gap-1.5 text-xs px-2.5 py-1 rounded-sm bg-amber/15 border border-amber/40 text-amber transition-colors hover:bg-amber/25 disabled:opacity-40",children:[(0,b.jsx)(k.CornerUpLeft,{className:"size-3.5"})," Send back"]}),(0,b.jsx)("button",{onClick:()=>{g(!1),i("")},disabled:l,className:"text-xs text-muted hover:text-txt",children:"Cancel"})]})]}):(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsxs)("button",{onClick:()=>p("approve"),disabled:l,className:"inline-flex items-center gap-1.5 text-xs px-2.5 py-1 rounded-sm bg-teal/15 border border-teal/40 text-teal transition-colors hover:bg-teal/25 disabled:opacity-40",children:[(0,b.jsx)(j.Check,{className:"size-3.5"})," Approve"]}),(0,b.jsxs)("button",{onClick:()=>g(!0),disabled:l,className:"inline-flex items-center gap-1.5 text-xs px-2.5 py-1 rounded-sm bg-surface2 border border-border text-muted transition-colors hover:text-txt hover:border-border2",children:[(0,b.jsx)(k.CornerUpLeft,{className:"size-3.5"})," Send back…"]})]}),n&&(0,b.jsx)("p",{role:"alert",className:"text-xs text-danger",children:n})]})}function K({entries:a}){return a.length?(0,b.jsxs)("div",{className:"flex flex-col gap-2 px-5 py-3 border-b border-border shrink-0",children:[(0,b.jsx)("p",{className:"font-mono text-[10px] uppercase tracking-widest text-muted",children:"Review history"}),(0,b.jsx)("ul",{className:"flex flex-col gap-2",children:[...a].reverse().map((a,c)=>(0,b.jsxs)("li",{className:"flex flex-col gap-0.5",children:[(0,b.jsxs)("span",{className:"flex items-center gap-2 text-xs",children:[(0,b.jsx)("span",{className:(0,d.cn)("font-medium","approved"===a.outcome?"text-teal":"text-amber"),children:"approved"===a.outcome?"Approved":"Changes requested"}),(0,b.jsx)("span",{className:"font-mono text-[10px] text-muted",children:a.at.replace("T"," ").replace(/:\d\dZ$/,"Z")})]}),a.note&&(0,b.jsx)("p",{className:"whitespace-pre-wrap text-xs text-muted",children:a.note})]},c))})]}):null}a.s(["TaskDetailPanel",0,function({task:a,onClose:j,onMove:k}){var H;let L,[M,N]=(0,c.useState)(a);a&&a!==M&&N(a);let O=M&&F[M.status]||[],{chats:P,showAbout:Q}=(0,C.useChats)(),{rootParam:R}=(0,B.useApp)(),S=M?(0,D.chatFor)(P,{kind:"task",id:M.id}):void 0,[T,U]=(0,c.useState)(null),V=!!M&&T===M.id,[W,X]=(0,c.useState)(null),[Y,Z]=(0,c.useState)(!1),$=(0,r.useStatusDefs)(),_=()=>{M&&(j(),Q({kind:"task",id:M.id}))};async function aa(){if(M){X(null);try{await (0,z.deleteTaskWithUndo)(M,R),j()}catch(a){X(a.message)}}}return(0,y.useItemCommands)(a&&M&&!V?`${M.id} \xb7 ${M.title}`:null,M?[{action:"edit",label:"Edit",run:()=>U(M.id)},{action:"status",label:"Change status…",run:()=>Z(!0)},{action:"chat",label:"Chat about task",run:_},{action:"remove",label:"Delete",run:()=>{aa()}}]:[]),(0,b.jsx)(e.Sheet,{open:!!a,onOpenChange:a=>{a||j()},children:(0,b.jsx)(e.SheetContent,{side:"right","aria-describedby":void 0,className:"p-0 gap-0 sm:max-w-[420px] border-border flex flex-col",children:M&&(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(t.ItemPanelHeader,{kicker:(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("span",{children:M.id}),(0,b.jsx)("span",{children:"· task"}),(0,b.jsx)(A.AgentMark,{attach:{kind:"task",id:M.id}})]}),title:(0,b.jsx)(e.SheetTitle,{className:"text-base font-semibold leading-snug text-txt",children:M.title}),menu:(0,b.jsxs)(q.DropdownMenu,{open:Y,onOpenChange:Z,children:[(0,b.jsx)(q.DropdownMenuTrigger,{asChild:!0,children:(0,b.jsx)("button",{type:"button","aria-label":`Actions for ${M.id}`,className:"ml-auto grid size-6 place-items-center rounded-md text-muted hover:bg-surface2 hover:text-txt",children:(0,b.jsx)(n.MoreHorizontal,{className:"size-4"})})}),(0,b.jsxs)(q.DropdownMenuContent,{align:"end",className:"w-44",children:[(0,b.jsxs)(q.DropdownMenuItem,{onSelect:()=>U(M.id),children:[(0,b.jsx)(o.Pencil,{})," Edit",(0,b.jsx)(q.DropdownMenuShortcut,{children:(0,y.itemKeyLabel)("edit")})]}),(0,b.jsxs)(q.DropdownMenuSub,{children:[(0,b.jsxs)(q.DropdownMenuSubTrigger,{children:[(0,b.jsx)(g.StatusIcon,{status:(0,s.displayStatus)(M)})," Status",(0,b.jsx)(q.DropdownMenuShortcut,{children:(0,y.itemKeyLabel)("status")})]}),(0,b.jsx)(q.DropdownMenuSubContent,{children:$.map(a=>(0,b.jsxs)(q.DropdownMenuItem,{disabled:a.id===(0,s.displayStatus)(M),onSelect:()=>k(M.id,a.id),children:[(0,b.jsx)(g.StatusIcon,{status:a.id})," ",a.label]},a.id))})]}),(0,b.jsxs)(q.DropdownMenuItem,{onSelect:_,children:[(0,b.jsx)(m.MessageSquare,{})," Chat about task",(0,b.jsx)(q.DropdownMenuShortcut,{children:(0,y.itemKeyLabel)("chat")})]}),(0,b.jsx)(q.DropdownMenuSeparator,{}),(0,b.jsxs)(q.DropdownMenuItem,{onSelect:aa,className:"text-danger focus:text-danger",children:[(0,b.jsx)(p.Trash2,{})," Delete",(0,b.jsx)(q.DropdownMenuShortcut,{children:(0,y.itemKeyLabel)("remove")})]})]})]}),properties:(L=(H=M).phase&&"—"!==H.phase?(0,v.epicOf)(H.phase):null,[{label:"Status",value:(0,b.jsx)(u.TaskStatusField,{task:H,chip:!0})},{label:"Owner",value:(0,b.jsx)(u.TaskOwnerField,{task:H})},{label:"Due",value:(0,b.jsx)(u.TaskDueField,{task:H,children:H.due?(0,b.jsx)(x.DueChip,{due:H.due,state:(0,w.dueState)(H.due,"done"===H.status?"done":"planned",(0,w.localToday)())}):(0,b.jsx)("span",{className:"text-muted",children:"—"})})},{label:"Size",value:(0,b.jsx)(u.TaskSizeField,{task:H})},{label:"Epic",value:L&&(0,b.jsxs)("span",{className:"flex min-w-0 items-center gap-1.5",children:[L.id&&(0,b.jsx)("span",{className:"font-mono text-[11px] text-muted",children:L.id}),(0,b.jsx)("span",{className:"truncate",children:L.title})]})}])}),W&&(0,b.jsx)("p",{role:"alert",className:"px-5 py-2 text-xs text-danger border-b border-border",children:W}),V&&(0,b.jsx)(I,{task:M,rootParam:R,onDone:()=>U(null)},`edit-${M.id}`),(0,b.jsxs)("div",{className:"flex flex-wrap items-center gap-2 px-5 py-3 border-b border-border shrink-0",children:[O.map(a=>(0,b.jsxs)("button",{onClick:()=>{k(M.id,a),j()},className:"inline-flex items-center gap-1.5 text-xs px-2.5 py-1 rounded-sm bg-surface2 border border-border text-muted hover:text-txt hover:border-border2 transition-colors",children:[(0,b.jsx)(g.StatusIcon,{status:a,className:"size-3"})," ",G[a]||a]},a)),(0,b.jsxs)("button",{onClick:()=>{j(),Q({kind:"task",id:M.id})},className:"ml-auto inline-flex items-center gap-1.5 text-xs px-2.5 py-1 rounded-sm bg-accent text-accent-fg transition-[filter] hover:brightness-110",children:[(0,b.jsx)(m.MessageSquare,{className:"size-3.5"})," ",S?"Open chat":"Chat about task"]})]}),"review"===M.status&&(0,b.jsx)(J,{taskId:M.id,onDone:j},`review-${M.id}`),(0,b.jsxs)("div",{className:"flex-1 overflow-y-auto",children:[(0,b.jsx)("div",{className:"px-5 py-4",children:M.raw?(0,b.jsx)(f.MarkdownRenderer,{content:function(a){let b=a.split("\n"),c=b.findIndex(a=>a.startsWith("# "));for(c=c<0?0:c+1;c<b.length&&(""===b[c].trim()||/^\*\*[^*]+:\*\*/.test(b[c]));)c++;return b.slice(c).join("\n")}(M.raw)}):(0,b.jsx)("p",{className:"text-sm text-muted",children:"No content available."})}),(0,b.jsxs)("section",{"aria-label":"Activity",className:"border-t border-border",children:[M.manualTests&&(0,b.jsxs)(i.default,{href:`/manual-tests#${M.id}`,onClick:j,className:"group flex items-center gap-2 px-5 py-2.5 border-b border-border shrink-0 text-xs text-muted hover:bg-surface2 hover:text-txt transition-colors",children:[(0,b.jsx)(l.FlaskConical,{className:"size-3.5"}),(0,b.jsxs)("span",{className:(0,d.cn)("font-mono",M.manualTests.done===M.manualTests.total&&"text-teal"),children:[M.manualTests.done,"/",M.manualTests.total]}),"manual tests ticked",(0,b.jsx)("span",{className:"ml-auto text-accent opacity-0 transition-opacity group-hover:opacity-100",children:"Open checklist →"})]}),(0,b.jsx)(K,{entries:(0,E.reviewHistory)(M.raw??"")}),(0,b.jsx)(h.TaskSessions,{taskId:M.id,onNavigate:j},M.id)]})]})]})})})}])},508113,a=>{"use strict";var b=a.i(662145),c=a.i(544394),d=a.i(787714),e=a.i(813722),f=a.i(173628),g=a.i(443108),h=a.i(147758),i=a.i(319264),j=a.i(853775);let k=["XS","S","M","L","XL"],l=(0,b.jsx)("span",{className:"text-muted",children:"—"});a.s(["TaskDueField",0,function({task:a,children:e}){let{updateTaskFields:f}=(0,c.useApp)();return(0,b.jsx)(d.InlineDate,{label:`Due date of ${a.id}`,value:a.due,onChange:b=>f(a.id,{due:b}),children:e??(a.due?(0,b.jsx)("span",{className:"font-mono text-xs",children:a.due}):l)})},"TaskOwnerField",0,function({task:a,children:f}){let{updateTaskFields:g,board:h}=(0,c.useApp)(),i=[...new Set(["ai:claude",...Object.values(h??{}).flat().map(a=>a.owner).filter(a=>!!a?.startsWith("ai:"))])].sort(),k=[{value:"human",label:"Human",node:(0,b.jsx)(e.OwnerChip,{owner:"human",className:"text-xs"})},...i.map(a=>({value:a,label:(0,j.ownerLabel)(a),node:(0,b.jsx)(e.OwnerChip,{owner:a,className:"text-xs"})})),{value:"",label:"No owner",node:(0,b.jsx)("span",{className:"text-muted",children:"No owner"})}];return(0,b.jsx)(d.InlineSelect,{label:`Owner of ${a.id}`,value:a.owner??"",options:k,onChange:b=>g(a.id,{owner:b||null}),children:f??(a.owner?(0,b.jsx)(e.OwnerChip,{owner:a.owner,className:"text-xs"}):l)})},"TaskSizeField",0,function({task:a,children:e}){let{updateTaskFields:f}=(0,c.useApp)(),g=(0,i.sizeOf)(a),h=[...k.map(a=>({value:a,label:a,node:(0,b.jsx)("span",{className:"font-mono",children:a})})),{value:"",label:"No size",node:(0,b.jsx)("span",{className:"text-muted",children:"No size"})}];return(0,b.jsx)(d.InlineSelect,{label:`Size of ${a.id}`,value:g??"",options:h,onChange:b=>f(a.id,{size:b||"—"}),children:e??(g?(0,b.jsx)("span",{className:"font-mono text-xs",children:g}):l)})},"TaskStatusField",0,function({task:a,chip:e=!1}){let{moveTask:i}=(0,c.useApp)(),j=(0,g.useStatusDefs)(),k=(0,h.displayStatus)(a),l=j.map(a=>({value:a.id,label:a.label,node:(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(f.StatusIcon,{status:a.id}),a.label]})}));return(0,b.jsx)(d.InlineSelect,{label:`Status of ${a.id}`,value:k,options:l,onChange:b=>i(a.id,b),children:e?(0,b.jsx)(f.StatusChip,{status:k}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(f.StatusIcon,{status:k}),(0,b.jsx)("span",{className:"truncate text-xs",children:j.find(a=>a.id===k)?.label??k})]})})}])},218451,a=>{"use strict";var b=a.i(662145),c=a.i(174897),d=a.i(913975),e=a.i(795667),f=a.i(892678),g=a.i(544394),h=a.i(578520);a.s(["TaskSessions",0,function({taskId:a,onNavigate:i}){let{rootParam:j}=(0,g.useApp)(),k=(0,d.useRouter)(),[l,m]=(0,c.useState)(null);return(0,c.useEffect)(()=>{let b=j?`${j}&`:"?";fetch(`/api/sessions${b}taskId=${encodeURIComponent(a)}`).then(a=>a.json()).then(a=>m(Array.isArray(a)?a:[])).catch(()=>m([]))},[j,a]),(0,b.jsxs)("div",{className:"px-5 py-3 border-b border-border shrink-0",children:[(0,b.jsx)("p",{className:"mb-2 text-xs font-mono uppercase tracking-wide text-muted",children:"Sessions"}),null===l?null:0===l.length?(0,b.jsx)("p",{className:"text-xs text-muted",children:"No recorded sessions"}):(0,b.jsx)("div",{className:"flex max-h-40 flex-col gap-1 overflow-y-auto",children:l.map(a=>(0,b.jsxs)("button",{onClick:()=>{i(),k.push(`/activity?session=${encodeURIComponent(a.id)}`)},className:"flex items-center gap-2 rounded-sm px-2 py-1 text-left text-xs hover:bg-surface2",children:["ai"===a.actor?(0,b.jsx)(e.Bot,{"aria-hidden":!0,className:"size-3.5 shrink-0 text-muted"}):(0,b.jsx)(f.User,{"aria-hidden":!0,className:"size-3.5 shrink-0 text-muted"}),(0,b.jsx)("span",{className:"sr-only",children:"ai"===a.actor?"Agent session":"Human session"}),(0,b.jsx)("span",{className:"shrink-0 font-mono text-muted",children:(0,h.timeAgo)(a.start)}),(0,b.jsx)("span",{className:"truncate text-txt",children:a.headline})]},a.id))})]})}])},258701,a=>{"use strict";var b=a.i(269769);async function c(a,b){let c=await fetch(a,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(b)}),d=await c.json().catch(()=>null);if(!c.ok)throw Error(d?.error??`Request failed (${c.status})`);return d}async function d(a,d){let{task:e,links:f}=await c(`/api/tasks/delete${d}`,{id:a.id});(0,b.undoToast)(`Deleted ${e.id}`,async()=>{await c(`/api/tasks/restore${d}`,{file:e.file,raw:e.raw,links:f})})}a.s(["deleteTaskWithUndo",0,d,"updateTask",0,(a,b,d)=>c(`/api/tasks/update${d}`,{id:a,patch:b}).then(a=>a.task)])},319264,a=>{"use strict";let b=["status","epic","size","due","deps","tests","agent","owner"],c=["board","table","epic","timeline"],d={board:"Board",table:"Table",epic:"By epic",timeline:"Timeline"};function e(a){let c={kind:a,filters:[],sorts:[],group:"epic",subGroup:"none",q:"",properties:[...b],scale:"active"};return"board"===a?{...c,group:"none",subGroup:"epic",properties:["epic","size","deps","tests","agent","owner"]}:"table"===a?{...c,sorts:[{prop:"status",dir:"asc"},{prop:"id",dir:"asc"}]}:c}let f=c.map(a=>({...e(a),id:a,name:d[a]})),g=["in-progress","review","todo","blocked","paused","done","cancelled"],h={"in-progress":"In progress",review:"Review",todo:"Todo",blocked:"Blocked",paused:"Paused",done:"Done",cancelled:"Cancelled"},i=["XS","S","M","L","XL"],j=(a,b)=>a.localeCompare(b,void 0,{numeric:!0}),k=a=>"done"!==a.status&&"cancelled"!==a.status;function l(a){return[...new Set((a.dependsOn.match(/\bT\d+\b/gi)??[]).map(a=>a.toUpperCase()))]}function m(a){let b=a.trim().match(/^(R\d+)\b\s*(?:[—–:-]\s*)?(.*)$/i);return b?{id:b[1].toUpperCase(),title:b[2].trim()}:{id:null,title:a.trim()}}function n(a){let b=a.size.trim().match(/^(XS|XL|S|M|L)\b/i);return b?b[1].toUpperCase():null}function o(a,b){return"todo"===a.status&&l(a).every(a=>b.get(a)?.status==="done")}let p=["status","epic","size","due","deps","tests","agent","ready","owner"],q=["is","is-not","before","after","is-set","not-set"],r=["status","id","epic","size","due","title"],s=["status","epic","size","owner","none"],t=["epic","size","none"],u=["active","day","week"],v=(a,b,c)=>null!==b&&a.includes(b)?b:c,w=a=>a.map(a=>("desc"===a.dir?"-":"")+a.prop).join(",");a.s(["DEFAULT_VIEWS",0,f,"applyView",0,function(a,b,c){let d=new Map(a.map(a=>[a.id,a])),e=b.filters.some(a=>"status"===a.prop&&"is"===a.op&&a.value.includes("cancelled")),f=b.q.trim().toLowerCase();return a.filter(a=>e||"cancelled"!==a.status).filter(a=>!f||a.id.toLowerCase().includes(f)||a.title.toLowerCase().includes(f)).filter(a=>b.filters.every(b=>(function(a,b,c,d){let e=a=>"is"===b.op?b.value.includes(a):"is-not"!==b.op||!b.value.includes(a),f=a=>"is-set"===b.op?a:"not-set"!==b.op||!a;switch(b.prop){case"status":return e(a.customStatus??a.status);case"epic":return e(m(a.phase).id??"none");case"size":return e(n(a)??"none");case"due":if("before"===b.op)return!!a.due&&!!b.value[0]&&a.due<b.value[0];if("after"===b.op)return!!a.due&&!!b.value[0]&&a.due>b.value[0];return f(!!a.due);case"deps":return f(l(a).length>0);case"tests":return f(null!==a.manualTests);case"agent":return f(c.agentTasks.has(a.id));case"ready":return f(o(a,d));case"owner":return e("human"===a.owner?"human":a.owner?.startsWith("ai:")?"ai":"none")}})(a,b,c,d))).sort((a,c)=>{for(let d of b.sorts){let b=function(a,b,c){switch(c){case"status":return g.indexOf(a.status)-g.indexOf(b.status);case"id":return j(a.id,b.id);case"title":return a.title.localeCompare(b.title);case"epic":{let c=m(a.phase).id,d=m(b.phase).id;return c===d?0:null===c?1:null===d?-1:j(c,d)}case"size":{let c=i.indexOf(n(a)??""),d=i.indexOf(n(b)??"");return c===d?0:c<0?1:d<0?-1:c-d}case"due":return a.due===b.due?0:null===a.due?1:null===b.due?-1:a.due.localeCompare(b.due)}}(a,c,d.prop);if(b)return"desc"!==d.dir||function(a,b,c){let d=a=>"due"===c?a.due:"epic"===c?m(a.phase).id:"size"===c?i.includes(n(a)??"")?"x":null:"x";return null===d(a)!=(null===d(b))}(a,c,d.prop)?b:-b}return j(a.id,c.id)})},"depOutline",0,function(a){let b=new Set(a.map(a=>a.id)),c=new Map;for(let d of a){let a=l(d).find(a=>a!==d.id&&b.has(a));a&&c.set(d.id,a)}let d=new Map;for(let b of a){let a=c.get(b.id);a&&d.set(a,[...d.get(a)??[],b])}let e=[],f=new Set,g=(a,b,c)=>{if(!f.has(a.id))for(let h of(f.add(a.id),e.push({task:a,depth:Math.min(b,4),alsoAfter:l(a).filter(b=>b!==c&&b!==a.id)}),d.get(a.id)??[]))g(h,b+1,a.id)};for(let b of a)c.has(b.id)||g(b,0,null);for(let b of a)g(b,0,null);return e},"epicOf",0,m,"foldAxis",0,function(a,b){let c=a.map(a=>{let b=Math.max((a.endMs-a.startMs)*.05,6e4);return{startMs:a.startMs-b,endMs:a.endMs+b}}).sort((a,b)=>a.startMs-b.startMs),d=[];for(let a of c){let c=d[d.length-1];c&&a.startMs-c.endMs<b?c.endMs=Math.max(c.endMs,a.endMs):d.push({...a})}return d},"fromParams",0,function(a){let d=v(c,a.get("view"),"board"),f=e(d),g=a.get("s"),h=a.get("f"),i=a.get("p");return{kind:d,group:v(s,a.get("g"),f.group),subGroup:v(t,a.get("sg"),f.subGroup),sorts:null===g?f.sorts:g.split(",").filter(Boolean).flatMap(a=>{let b=a.startsWith("-"),c=b?a.slice(1):a;return r.includes(c)?[{prop:c,dir:b?"desc":"asc"}]:[]}),filters:h?h.split(";").flatMap(a=>{let[b,c,...d]=a.split(":");if(!p.includes(b)||!q.includes(c))return[];let e=d.join(":"),f=[];try{f=d.length?e.split("|").map(decodeURIComponent):[]}catch{return[]}return[{prop:b,op:c,value:f}]}):[],q:a.get("q")??"",properties:null===i?f.properties:[...new Set(i.split(",").filter(a=>b.includes(a)))],scale:v(u,a.get("sc"),f.scale)}},"groupTasks",0,function(a,b,c){if(!a.length)return[];if("none"===b)return[{key:"all",label:"All tasks",epicId:null,tasks:a}];let d=new Map,e=a=>"status"===b?a.customStatus??a.status:"size"===b?n(a)??"none":"owner"===b?a.owner??"none":m(a.phase).id??"none";for(let b of a){let a=e(b),c=d.get(a);c?c.push(b):d.set(a,[b])}let f=(a,b,c=null)=>({key:a,label:b,epicId:c,tasks:d.get(a)??[]});if("status"===b)return c?c.filter(a=>d.has(a.id)).map(a=>f(a.id,a.label)):g.filter(a=>d.has(a)).map(a=>f(a,h[a]));if("size"===b)return[...i,"none"].filter(a=>d.has(a)).map(a=>f(a,"none"===a?"No size":a));if("owner"===b)return["human",...[...d.keys()].filter(a=>a.startsWith("ai:")).sort(),"none"].filter(a=>d.has(a)).map(a=>f(a,"human"===a?"Human":"none"===a?"No owner":`${a.slice(3)} (AI)`));let l=a=>(d.get(a)??[]).filter(k).map(a=>a.id).sort(j)[0]??null,o=[...d.keys()].filter(a=>"none"!==a).sort((a,b)=>{let c=l(a),d=l(b);return c&&d?j(c,d)||j(a,b):c||d?c?-1:1:j(b,a)}).map(a=>{let b=(d.get(a)??[]).map(a=>m(a.phase).title).find(Boolean);return f(a,b||a,a)});return d.has("none")&&o.push(f("none","No epic")),o},"isDirty",0,function(a,b){let c=a=>JSON.stringify([a.kind,a.filters,a.sorts,a.group,a.subGroup,[...a.properties].sort(),a.scale]);return c(a)!==c(b)},"isReady",0,o,"sizeOf",0,n,"timelineBars",0,function(a,b,c){let d=new Map;for(let a of b){if("task_updated"!==a.type||!a.taskId)continue;let b=Date.parse(a.timestamp);if(Number.isNaN(b))continue;let c=d.get(a.taskId)??[];c.push({ms:b,status:a.taskStatus}),d.set(a.taskId,c)}let e=[];for(let b of a){let a=d.get(b.id)?.sort((a,b)=>a.ms-b.ms);if(!a?.length)continue;let f=(a.find(a=>"in-progress"===a.status)??a[0]).ms,g=a[a.length-1].ms,h=a.filter(a=>"done"===a.status).pop()?.ms,i="done"!==b.status&&"cancelled"!==b.status,j="done"===b.status?h??g:i?c:g;e.push({taskId:b.id,epicId:m(b.phase).id,startMs:f,endMs:Math.max(j,f),status:b.status,open:i})}return e},"toParams",0,function(a){let b=e(a.kind),c=new URLSearchParams;return"board"!==a.kind&&c.set("view",a.kind),a.group!==b.group&&c.set("g",a.group),a.subGroup!==b.subGroup&&c.set("sg",a.subGroup),w(a.sorts)!==w(b.sorts)&&c.set("s",w(a.sorts)),a.filters.length&&c.set("f",a.filters.map(a=>[a.prop,a.op,...a.value.length?[a.value.map(encodeURIComponent).join("|")]:[]].join(":")).join(";")),a.q&&c.set("q",a.q),a.properties.join(",")!==b.properties.join(",")&&c.set("p",a.properties.join(",")),a.scale!==b.scale&&c.set("sc",a.scale),c}])},542920,a=>{"use strict";let b=/^###\s+(\S+)\s+—\s+(approved|changes requested)\s*$/;function c(a){let c=a.split("\n"),d=function(a){let b,c=(b=!1,a.map(a=>/^\s*```/.test(a)?(b=!b,!0):b)),d=a.findIndex((a,b)=>!c[b]&&"## Review"===a.trim());if(d<0)return null;let e=a.findIndex((a,b)=>b>d&&!c[b]&&/^##\s/.test(a));return[d,e<0?a.length:e]}(c);if(!d)return[];let e=[];for(let a of c.slice(d[0]+1,d[1])){let c=a.match(b);if(c)e.push({at:c[1],outcome:c[2],note:""});else if(e.length){let b=e[e.length-1];b.note=b.note?`${b.note}
|
|
2
|
+
${a}`:a}}return e.map(a=>({...a,note:a.note.trim()}))}a.s(["latestReview",0,function(a){let b=c(a);return b[b.length-1]??null},"reviewHistory",0,c])}];
|
|
3
|
+
|
|
4
|
+
//# sourceMappingURL=_1ncdakv._.js.map
|