vibedoc 1.6.1 → 1.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/BUILD_ID +1 -1
- package/.next/app-path-routes-manifest.json +2 -0
- package/.next/build-manifest.json +3 -3
- package/.next/prerender-manifest.json +39 -11
- package/.next/routes-manifest.json +12 -0
- package/.next/server/app/(app)/activity/page.js.nft.json +1 -1
- package/.next/server/app/(app)/activity/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(app)/board/page.js.nft.json +1 -1
- package/.next/server/app/(app)/board/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(app)/chat/page/app-paths-manifest.json +3 -0
- package/.next/server/app/(app)/chat/page/build-manifest.json +20 -0
- package/.next/server/app/(app)/chat/page/next-font-manifest.json +11 -0
- package/.next/server/app/(app)/chat/page/react-loadable-manifest.json +1 -0
- package/.next/server/app/(app)/chat/page/server-reference-manifest.json +4 -0
- package/.next/server/app/(app)/chat/page.js +15 -0
- package/.next/server/app/(app)/chat/page.js.map +5 -0
- package/.next/server/app/(app)/chat/page.js.nft.json +1 -0
- package/.next/server/app/(app)/chat/page_client-reference-manifest.js +3 -0
- 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)/memory/page.js.nft.json +1 -1
- package/.next/server/app/(app)/memory/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(app)/roadmap/page.js.nft.json +1 -1
- package/.next/server/app/(app)/roadmap/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(app)/settings/page.js.nft.json +1 -1
- package/.next/server/app/(app)/settings/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(app)/setup/page.js.nft.json +1 -1
- package/.next/server/app/(app)/setup/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_global-error.html +1 -1
- package/.next/server/app/_global-error.rsc +1 -1
- package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_not-found.html +1 -1
- package/.next/server/app/_not-found.rsc +2 -2
- package/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
- package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/activity.html +1 -1
- package/.next/server/app/activity.rsc +22 -23
- package/.next/server/app/activity.segments/!KGFwcCk/activity/__PAGE__.segment.rsc +9 -10
- package/.next/server/app/activity.segments/_full.segment.rsc +22 -23
- package/.next/server/app/activity.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/api/activity/route.js.nft.json +1 -1
- package/.next/server/app/api/backlinks/route.js.nft.json +1 -1
- package/.next/server/app/api/chat/route.js.nft.json +1 -1
- package/.next/server/app/api/context/route.js.nft.json +1 -1
- package/.next/server/app/api/conversations/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/conversations/route/build-manifest.json +12 -0
- package/.next/server/app/api/conversations/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/conversations/route.js +9 -0
- package/.next/server/app/api/conversations/route.js.map +5 -0
- package/.next/server/app/api/conversations/route.js.nft.json +1 -0
- package/.next/server/app/api/conversations/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/decisions/route.js.nft.json +1 -1
- package/.next/server/app/api/docs/route.js.nft.json +1 -1
- package/.next/server/app/api/explorer/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/route.js.nft.json +1 -1
- package/.next/server/app/api/memory/route.js.nft.json +1 -1
- package/.next/server/app/api/plan/apply/route.js.nft.json +1 -1
- package/.next/server/app/api/projects/route.js.nft.json +1 -1
- package/.next/server/app/api/registry/route.js.nft.json +1 -1
- package/.next/server/app/api/roadmap/create/route.js.nft.json +1 -1
- package/.next/server/app/api/roadmap/delete/route.js.nft.json +1 -1
- package/.next/server/app/api/roadmap/generate/route.js.nft.json +1 -1
- package/.next/server/app/api/roadmap/layout/route.js.nft.json +1 -1
- package/.next/server/app/api/roadmap/route.js.nft.json +1 -1
- package/.next/server/app/api/roadmap/update/route.js.nft.json +1 -1
- package/.next/server/app/api/sessions/route.js.nft.json +1 -1
- package/.next/server/app/api/settings/route.js.nft.json +1 -1
- package/.next/server/app/api/setup/generate/route.js.nft.json +1 -1
- package/.next/server/app/api/setup/write/route.js.nft.json +1 -1
- package/.next/server/app/api/summary/route.js.nft.json +1 -1
- package/.next/server/app/api/tasks/create/route.js.nft.json +1 -1
- package/.next/server/app/api/tasks/route.js.nft.json +1 -1
- package/.next/server/app/board.html +1 -1
- package/.next/server/app/board.rsc +22 -23
- package/.next/server/app/board.segments/!KGFwcCk/board/__PAGE__.segment.rsc +9 -10
- package/.next/server/app/board.segments/_full.segment.rsc +22 -23
- package/.next/server/app/board.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/chat.html +1 -0
- package/.next/server/app/chat.meta +31 -0
- package/.next/server/app/chat.rsc +29 -0
- package/.next/server/app/chat.segments/!KGFwcCk/chat/__PAGE__.segment.rsc +31 -0
- package/.next/server/app/chat.segments/_full.segment.rsc +29 -0
- package/.next/server/app/chat.segments/_tree.segment.rsc +4 -0
- package/.next/server/app/docs.html +1 -1
- package/.next/server/app/docs.rsc +22 -27
- package/.next/server/app/docs.segments/!KGFwcCk/docs/__PAGE__.segment.rsc +6 -6
- package/.next/server/app/docs.segments/_full.segment.rsc +22 -27
- package/.next/server/app/docs.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/explorer.html +1 -1
- package/.next/server/app/explorer.rsc +22 -23
- package/.next/server/app/explorer.segments/!KGFwcCk/explorer/__PAGE__.segment.rsc +9 -10
- package/.next/server/app/explorer.segments/_full.segment.rsc +22 -23
- package/.next/server/app/explorer.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/index.html +1 -1
- package/.next/server/app/index.rsc +2 -2
- package/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/index.segments/_full.segment.rsc +2 -2
- package/.next/server/app/index.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/memory.html +1 -1
- package/.next/server/app/memory.rsc +22 -23
- package/.next/server/app/memory.segments/!KGFwcCk/memory/__PAGE__.segment.rsc +9 -10
- package/.next/server/app/memory.segments/_full.segment.rsc +22 -23
- package/.next/server/app/memory.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/page.js.nft.json +1 -1
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app/roadmap.html +1 -1
- package/.next/server/app/roadmap.rsc +22 -26
- package/.next/server/app/roadmap.segments/!KGFwcCk/roadmap/__PAGE__.segment.rsc +9 -11
- package/.next/server/app/roadmap.segments/_full.segment.rsc +22 -26
- package/.next/server/app/roadmap.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/settings.html +1 -1
- package/.next/server/app/settings.rsc +22 -23
- package/.next/server/app/settings.segments/!KGFwcCk/settings/__PAGE__.segment.rsc +9 -10
- package/.next/server/app/settings.segments/_full.segment.rsc +22 -23
- package/.next/server/app/settings.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/setup.html +1 -1
- package/.next/server/app/setup.rsc +22 -23
- package/.next/server/app/setup.segments/!KGFwcCk/setup/__PAGE__.segment.rsc +9 -10
- package/.next/server/app/setup.segments/_full.segment.rsc +22 -23
- package/.next/server/app/setup.segments/_tree.segment.rsc +2 -2
- package/.next/server/app-paths-manifest.json +2 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_1htgzmb._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_1htgzmb._.js.map +1 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_0d2_lq6._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__1613hjb._.js +4 -4
- package/.next/server/chunks/[root-of-the-server]__1613hjb._.js.map +1 -1
- package/.next/server/chunks/[root-of-the-server]__1jxu2x9._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__1jxu2x9._.js.map +1 -0
- package/.next/server/chunks/_next-internal_server_app_api_conversations_route_actions_1-pu7gs.js +3 -0
- package/.next/server/chunks/ssr/{0_nd_mermaid_dist_mermaid_core_mjs_1vulg1x._.js → 0_nd_mermaid_dist_mermaid_core_mjs_0vv_0i3._.js} +2 -2
- package/.next/server/chunks/ssr/{1u84_katex_dist_katex_mjs_0mwkb-i._.js → 1u84_katex_dist_katex_mjs_1z0p1bs._.js} +1 -1
- package/.next/server/chunks/ssr/1x05_lucide-react_dist_esm_icons_0cvmffy._.js +3 -0
- package/.next/server/chunks/ssr/1x05_lucide-react_dist_esm_icons_0cvmffy._.js.map +1 -0
- package/.next/server/chunks/ssr/1x05_lucide-react_dist_esm_icons_0u3jxas._.js +3 -0
- package/.next/server/chunks/ssr/1x05_lucide-react_dist_esm_icons_0u3jxas._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__11lfnu0._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__11lfnu0._.js.map +1 -0
- package/.next/server/chunks/ssr/_059qmur._.js +3 -0
- package/.next/server/chunks/ssr/_059qmur._.js.map +1 -0
- package/.next/server/chunks/ssr/_081irea._.js +3 -0
- package/.next/server/chunks/ssr/_081irea._.js.map +1 -0
- package/.next/server/chunks/ssr/_0d8t8l4._.js +3 -0
- package/.next/server/chunks/ssr/_0d8t8l4._.js.map +1 -0
- package/.next/server/chunks/ssr/_0dyvcdg._.js +3 -0
- package/.next/server/chunks/ssr/_0dyvcdg._.js.map +1 -0
- package/.next/server/chunks/ssr/_1-ghqy4._.js +3 -0
- package/.next/server/chunks/ssr/_1-ghqy4._.js.map +1 -0
- package/.next/server/chunks/ssr/_17jy5db._.js +3 -0
- package/.next/server/chunks/ssr/_17jy5db._.js.map +1 -0
- package/.next/server/chunks/ssr/_1c95ems._.js +1 -1
- package/.next/server/chunks/ssr/_1c95ems._.js.map +1 -1
- package/.next/server/chunks/ssr/_1dllfz5._.js +4 -0
- package/.next/server/chunks/ssr/_1dllfz5._.js.map +1 -0
- package/.next/server/chunks/ssr/_next-internal_server_app_(app)_chat_page_actions_0g4tbzt.js +3 -0
- package/.next/server/chunks/ssr/node_modules__pnpm_006_c8z._.js +3 -0
- package/.next/server/chunks/ssr/node_modules__pnpm_006_c8z._.js.map +1 -0
- package/.next/server/chunks/ssr/{node_modules__pnpm_00wjhj4._.js → node_modules__pnpm_0286-tg._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules__pnpm_0w9uewb._.js → node_modules__pnpm_04khl_s._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules__pnpm_1zsbfem._.js → node_modules__pnpm_07t_e8c._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules__pnpm_0p10j87._.js → node_modules__pnpm_08sqeu2._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules__pnpm_0cj37c-._.js → node_modules__pnpm_09_i2jk._.js} +1 -1
- package/.next/server/chunks/ssr/node_modules__pnpm_09_i2jk._.js.map +1 -0
- package/.next/server/chunks/ssr/{node_modules__pnpm_19ys1iv._.js → node_modules__pnpm_0a9b2ei._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules__pnpm_0ma8hho._.js → node_modules__pnpm_0ah02mu._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules__pnpm_0kna82c._.js → node_modules__pnpm_0cj8ryj._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules__pnpm_04xoqd9._.js → node_modules__pnpm_0dwi7mu._.js} +2 -2
- package/.next/server/chunks/ssr/node_modules__pnpm_0dwi7mu._.js.map +1 -0
- package/.next/server/chunks/ssr/{node_modules__pnpm_19ejwjv._.js → node_modules__pnpm_0f77_ng._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules__pnpm_11lluiq._.js → node_modules__pnpm_0fd3pr1._.js} +2 -2
- package/.next/server/chunks/ssr/{node_modules__pnpm_1xolwvc._.js → node_modules__pnpm_0gifu-u._.js} +2 -2
- package/.next/server/chunks/ssr/{node_modules__pnpm_1r4w_7k._.js → node_modules__pnpm_0jpv2b6._.js} +2 -2
- package/.next/server/chunks/ssr/{node_modules__pnpm_17o8zbz._.js → node_modules__pnpm_0og06fy._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules__pnpm_042y3e-._.js → node_modules__pnpm_0qc3gsk._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules__pnpm_0yixxj2._.js → node_modules__pnpm_0ts89ne._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules__pnpm_18pu1wl._.js → node_modules__pnpm_0ttvopp._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules__pnpm_1-poetj._.js → node_modules__pnpm_0u3u82f._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules__pnpm_07j8gcu._.js → node_modules__pnpm_0y35hs4._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules__pnpm_1a3fo7j._.js → node_modules__pnpm_104pzhc._.js} +2 -2
- package/.next/server/chunks/ssr/{node_modules__pnpm_00i3mh2._.js → node_modules__pnpm_195j8p_._.js} +1 -1
- package/.next/server/chunks/ssr/node_modules__pnpm_1kcnkjs._.js +3 -0
- package/.next/server/chunks/ssr/node_modules__pnpm_1kcnkjs._.js.map +1 -0
- package/.next/server/chunks/ssr/{node_modules__pnpm_1_34wt2._.js → node_modules__pnpm_1l8k8w1._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules__pnpm_0nbxdp_._.js → node_modules__pnpm_1w0f1m5._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules__pnpm_1l-posw._.js → node_modules__pnpm_1woddr6._.js} +2 -2
- package/.next/server/chunks/ssr/{node_modules__pnpm_0fk-8nl._.js → node_modules__pnpm_1x0t5_z._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules__pnpm_1o30a9w._.js → node_modules__pnpm_1xzf8g_._.js} +1 -1
- package/.next/server/chunks/ssr/{node_modules__pnpm_0--x5-5._.js → node_modules__pnpm_1yq90z7._.js} +1 -1
- package/.next/server/chunks/ssr/node_modules__pnpm_1yq90z7._.js.map +1 -0
- package/.next/server/chunks/ssr/src_app_(app)_chat_page_tsx_0c3e4l4._.js +3 -0
- package/.next/server/chunks/ssr/src_app_(app)_chat_page_tsx_0c3e4l4._.js.map +1 -0
- package/.next/server/chunks/ssr/src_app_(app)_layout_tsx_1yu5hom._.js +3 -0
- package/.next/server/chunks/ssr/src_app_(app)_layout_tsx_1yu5hom._.js.map +1 -0
- package/.next/server/chunks/ssr/src_app_(app)_roadmap_page_tsx_0vcq3jr._.js +5 -0
- package/.next/server/chunks/ssr/src_app_(app)_roadmap_page_tsx_0vcq3jr._.js.map +1 -0
- package/.next/server/chunks/ssr/src_context_ChatContext_tsx_0lowp8p._.js +5 -0
- package/.next/server/chunks/ssr/src_context_ChatContext_tsx_0lowp8p._.js.map +1 -0
- package/.next/server/chunks/ssr/{_1wf14_u._.js → src_lib_templates_index_ts_1s61uk7._.js} +2 -2
- package/.next/server/chunks/ssr/{_1wf14_u._.js.map → src_lib_templates_index_ts_1s61uk7._.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/050mq8l4e1ubn.js +1 -0
- package/.next/static/chunks/098le48845_fg.js +3 -0
- package/.next/static/chunks/0cw4-ebkoufdc.js +1 -0
- package/.next/static/chunks/0feo-go1w5nct.js +1 -0
- package/.next/static/chunks/14sefb904pl64.js +21 -0
- package/.next/static/chunks/1fer-wulyrjrs.js +3 -0
- package/.next/static/chunks/1o7b1x4umy8a6.js +1 -0
- package/.next/static/chunks/1q_io1j58aukw.js +1 -0
- package/.next/static/chunks/1t-cgh4477hfo.js +1 -0
- package/.next/static/chunks/1u-1po1qesc9f.js +1 -0
- package/.next/static/chunks/1u5kegkgm0xoz.js +1 -0
- package/.next/static/chunks/24ygzsgd-moqy.js +1 -0
- package/.next/static/chunks/26folxgplfa9t.js +68 -0
- package/.next/static/chunks/2ocixvjhv34_3.js +1 -0
- package/.next/static/chunks/3_lsdgxa-h7ma.css +10 -0
- package/.next/static/chunks/3rmv-sb9w9i3e.js +1 -0
- package/.next/static/chunks/3ttzomivj48jh.js +2 -0
- package/README.md +1 -1
- package/package.json +1 -1
- package/.next/server/chunks/ssr/1x05_lucide-react_dist_esm_icons_08ca0b4._.js +0 -3
- package/.next/server/chunks/ssr/1x05_lucide-react_dist_esm_icons_08ca0b4._.js.map +0 -1
- package/.next/server/chunks/ssr/1x05_lucide-react_dist_esm_icons_0c1k9is._.js +0 -3
- package/.next/server/chunks/ssr/1x05_lucide-react_dist_esm_icons_0c1k9is._.js.map +0 -1
- package/.next/server/chunks/ssr/_0qyglif._.js +0 -5
- package/.next/server/chunks/ssr/_0qyglif._.js.map +0 -1
- package/.next/server/chunks/ssr/_0skuoxv._.js +0 -6
- package/.next/server/chunks/ssr/_0skuoxv._.js.map +0 -1
- package/.next/server/chunks/ssr/_14i_6yb._.js +0 -3
- package/.next/server/chunks/ssr/_14i_6yb._.js.map +0 -1
- package/.next/server/chunks/ssr/_1cbhuz4._.js +0 -3
- package/.next/server/chunks/ssr/_1cbhuz4._.js.map +0 -1
- package/.next/server/chunks/ssr/_1ewk_mn._.js +0 -3
- package/.next/server/chunks/ssr/_1ewk_mn._.js.map +0 -1
- package/.next/server/chunks/ssr/_1y-ofyw._.js +0 -3
- package/.next/server/chunks/ssr/_1y-ofyw._.js.map +0 -1
- package/.next/server/chunks/ssr/node_modules__pnpm_0bmkw6o._.js +0 -3
- package/.next/server/chunks/ssr/node_modules__pnpm_0bmkw6o._.js.map +0 -1
- package/.next/server/chunks/ssr/src_components_008q3v8._.js +0 -3
- package/.next/server/chunks/ssr/src_components_008q3v8._.js.map +0 -1
- package/.next/static/chunks/0-vk2d2nnzav2.js +0 -3
- package/.next/static/chunks/02sab26ica2x3.js +0 -1
- package/.next/static/chunks/0eggcu0ovk8sd.js +0 -68
- package/.next/static/chunks/0iva6rdtfqpbz.js +0 -1
- package/.next/static/chunks/0qm101bdsxdyh.css +0 -10
- package/.next/static/chunks/0wg9n5zb8mo2p.js +0 -1
- package/.next/static/chunks/0z_y7el6m76yk.js +0 -1
- package/.next/static/chunks/1-ekntoveuxzd.js +0 -4
- package/.next/static/chunks/10neasnz6hhq1.js +0 -1
- package/.next/static/chunks/22dw7r8x0h2sx.js +0 -1
- package/.next/static/chunks/26ee8jsbellqk.js +0 -21
- package/.next/static/chunks/3kkg030rcpz7l.js +0 -1
- package/.next/static/chunks/3pf_4ye6ju8gt.js +0 -1
- /package/.next/server/chunks/{ssr/0_nd_mermaid_dist_mermaid_core_mjs_1vulg1x._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_0d2_lq6._.js.map} +0 -0
- /package/.next/server/chunks/{ssr/1u84_katex_dist_katex_mjs_0mwkb-i._.js.map → _next-internal_server_app_api_conversations_route_actions_1-pu7gs.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules__pnpm_0--x5-5._.js.map → 0_nd_mermaid_dist_mermaid_core_mjs_0vv_0i3._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules__pnpm_04xoqd9._.js.map → 1u84_katex_dist_katex_mjs_1z0p1bs._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules__pnpm_0cj37c-._.js.map → _next-internal_server_app_(app)_chat_page_actions_0g4tbzt.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules__pnpm_00wjhj4._.js.map → node_modules__pnpm_0286-tg._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules__pnpm_0w9uewb._.js.map → node_modules__pnpm_04khl_s._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules__pnpm_1zsbfem._.js.map → node_modules__pnpm_07t_e8c._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules__pnpm_0p10j87._.js.map → node_modules__pnpm_08sqeu2._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules__pnpm_19ys1iv._.js.map → node_modules__pnpm_0a9b2ei._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules__pnpm_0ma8hho._.js.map → node_modules__pnpm_0ah02mu._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules__pnpm_0kna82c._.js.map → node_modules__pnpm_0cj8ryj._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules__pnpm_19ejwjv._.js.map → node_modules__pnpm_0f77_ng._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules__pnpm_11lluiq._.js.map → node_modules__pnpm_0fd3pr1._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules__pnpm_1xolwvc._.js.map → node_modules__pnpm_0gifu-u._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules__pnpm_1r4w_7k._.js.map → node_modules__pnpm_0jpv2b6._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules__pnpm_17o8zbz._.js.map → node_modules__pnpm_0og06fy._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules__pnpm_042y3e-._.js.map → node_modules__pnpm_0qc3gsk._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules__pnpm_0yixxj2._.js.map → node_modules__pnpm_0ts89ne._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules__pnpm_18pu1wl._.js.map → node_modules__pnpm_0ttvopp._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules__pnpm_1-poetj._.js.map → node_modules__pnpm_0u3u82f._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules__pnpm_07j8gcu._.js.map → node_modules__pnpm_0y35hs4._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules__pnpm_1a3fo7j._.js.map → node_modules__pnpm_104pzhc._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules__pnpm_00i3mh2._.js.map → node_modules__pnpm_195j8p_._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules__pnpm_1_34wt2._.js.map → node_modules__pnpm_1l8k8w1._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules__pnpm_0nbxdp_._.js.map → node_modules__pnpm_1w0f1m5._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules__pnpm_1l-posw._.js.map → node_modules__pnpm_1woddr6._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules__pnpm_0fk-8nl._.js.map → node_modules__pnpm_1x0t5_z._.js.map} +0 -0
- /package/.next/server/chunks/ssr/{node_modules__pnpm_1o30a9w._.js.map → node_modules__pnpm_1xzf8g_._.js.map} +0 -0
- /package/.next/static/{gJtrYenzL6_deB-6pdvIL → uJ5RYxgFnE5svAvnuLDXN}/_buildManifest.js +0 -0
- /package/.next/static/{gJtrYenzL6_deB-6pdvIL → uJ5RYxgFnE5svAvnuLDXN}/_clientMiddlewareManifest.js +0 -0
- /package/.next/static/{gJtrYenzL6_deB-6pdvIL → uJ5RYxgFnE5svAvnuLDXN}/_ssgManifest.js +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,475850,e=>{"use strict";var t=e.i(83790);let s={name:"message-square",size:24,node:[["path",{d:"M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z",key:"18887p"}]]};s.node;let a=(0,t.default)(s);e.s(["MessageSquare",0,a],475850)},955787,e=>{"use strict";var t=e.i(72345),s=e.i(180338),a=e.i(910172),r=e.i(763371),n=e.i(155515),o=e.i(975157),l=e.i(487486),d=e.i(34086);function i({status:e,tasks:a,onMoveTask:r,onOpenTask:n}){let[c,x]=(0,s.useState)(!1);return(0,t.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2 mb-1",children:[(0,t.jsx)("span",{className:"text-sm",children:d.STATUS_ICONS[e]}),(0,t.jsx)("span",{className:"text-xs font-mono font-semibold text-muted uppercase tracking-wider",children:e}),(0,t.jsx)(l.Badge,{variant:"secondary",className:"ml-auto font-mono text-xs h-5 px-1.5",children:a.length})]}),(0,t.jsxs)("div",{className:(0,o.cn)("flex flex-col gap-2 min-h-[60px] rounded-lg transition-colors",c&&"ring-1 ring-accent/50 bg-accent/5"),onDragOver:e=>{e.preventDefault(),x(!0)},onDragLeave:e=>{e.currentTarget.contains(e.relatedTarget)||x(!1)},onDrop:t=>{t.preventDefault(),x(!1);let s=t.dataTransfer.getData("taskId");s&&r(s,e)},children:[(a??[]).map(e=>(0,t.jsx)(d.TaskCard,{task:e,onMove:r,onOpen:()=>n(e)},e.id)),0===a.length&&(0,t.jsx)("div",{className:"border border-dashed border-border rounded-lg py-6 text-center text-xs text-muted",children:"empty"})]})]})}function c({board:e,summary:s,onMoveTask:a,onOpenTask:r,onNewTask:o}){return(0,t.jsxs)("div",{className:"p-6",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between mb-6",children:[(0,t.jsx)("h1",{className:"font-display text-xl font-semibold tracking-tight",children:"Task Board"}),(0,t.jsxs)("div",{className:"flex items-center gap-3",children:[(0,t.jsxs)("span",{className:"text-xs font-mono text-muted",children:[s?.tasks.total||0," tasks"]}),(0,t.jsxs)("button",{onClick:o,className:"flex items-center gap-1.5 px-3 py-1.5 bg-accent text-white rounded-lg text-sm font-medium hover:bg-accent/90 transition-colors",children:[(0,t.jsx)(n.Plus,{className:"w-3.5 h-3.5"}),"New Task"]})]})]}),(0,t.jsx)("div",{className:"grid grid-cols-1 md:grid-cols-2 xl:grid-cols-4 gap-4",children:["in-progress","todo","blocked","done"].map(s=>(0,t.jsx)(i,{status:s,tasks:e[s],onMoveTask:a,onOpenTask:r},s))})]})}var x=e.i(592381),u=e.i(287272),m=e.i(765470),p=e.i(240595);let b=[{value:"XS (< 1 hr)",label:"XS — under 1 hr"},{value:"S (1-2 hrs)",label:"S — 1–2 hrs"},{value:"M (3-4 hrs)",label:"M — 3–4 hrs"},{value:"L (5-8 hrs)",label:"L — 5–8 hrs"},{value:"XL (> 1 day)",label:"XL — over a day"}];function h({open:e,onOpenChange:a,rootParam:r,onTaskCreated:l}){let[d,i]=(0,s.useState)(""),[c,x]=(0,s.useState)(""),[g,f]=(0,s.useState)(""),[j,v]=(0,s.useState)(""),[N,k]=(0,s.useState)(""),[y,w]=(0,s.useState)(""),[S,T]=(0,s.useState)(!1);async function C(e){if(e.preventDefault(),!d.trim())return void w("Title is required");T(!0),w("");try{let e=await fetch(`/api/tasks/create${r}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({title:d.trim(),phase:c.trim()||void 0,size:g||void 0,description:j.trim()||void 0,dependsOn:N.trim()||void 0})});if(!e.ok){let t=await e.json();w(t.error??"Failed to create task"),T(!1);return}T(!1),l(),a(!1)}catch{w("Network error — please try again"),T(!1)}}return(0,s.useEffect)(()=>{e&&(i(""),x(""),f(""),v(""),k(""),w(""),T(!1))},[e]),(0,t.jsx)(u.Root,{open:e,onOpenChange:a,children:(0,t.jsxs)(u.Portal,{children:[(0,t.jsx)(u.Overlay,{className:"fixed inset-0 z-50 bg-black/60"}),(0,t.jsxs)(u.Content,{className:"fixed z-50 top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 w-full max-w-lg bg-surface border border-border rounded-xl shadow-2xl",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between px-5 py-4 border-b border-border",children:[(0,t.jsx)(u.Title,{className:"font-semibold text-txt",children:"New Task"}),(0,t.jsx)(u.Close,{className:"text-muted hover:text-txt transition-colors",children:(0,t.jsx)(m.X,{className:"w-4 h-4"})})]}),(0,t.jsxs)("form",{onSubmit:C,className:"p-5 space-y-4",children:[(0,t.jsxs)("div",{className:"space-y-1.5",children:[(0,t.jsxs)("label",{className:"block text-xs font-medium text-muted uppercase tracking-wide",children:["Title ",(0,t.jsx)("span",{className:"text-danger",children:"*"})]}),(0,t.jsx)("input",{autoFocus:!0,type:"text",value:d,onChange:e=>i(e.target.value),placeholder:"e.g. Add drag-and-drop to kanban",className:"w-full px-3 py-2 bg-surface2 border border-border rounded-lg text-sm text-txt placeholder:text-muted focus:outline-hidden focus:border-accent transition-colors"})]}),(0,t.jsxs)("div",{className:"grid grid-cols-2 gap-3",children:[(0,t.jsxs)("div",{className:"space-y-1.5",children:[(0,t.jsx)("label",{className:"block text-xs font-medium text-muted uppercase tracking-wide",children:"Phase"}),(0,t.jsx)("input",{type:"text",value:c,onChange:e=>x(e.target.value),placeholder:"e.g. 1 — Core",className:"w-full px-3 py-2 bg-surface2 border border-border rounded-lg text-sm text-txt placeholder:text-muted focus:outline-hidden focus:border-accent transition-colors"})]}),(0,t.jsxs)("div",{className:"space-y-1.5",children:[(0,t.jsx)("label",{className:"block text-xs font-medium text-muted uppercase tracking-wide",children:"Size"}),(0,t.jsxs)("select",{value:g,onChange:e=>f(e.target.value),className:"w-full px-3 py-2 bg-surface2 border border-border rounded-lg text-sm text-txt focus:outline-hidden focus:border-accent transition-colors",children:[(0,t.jsx)("option",{value:"",children:"—"}),b.map(e=>(0,t.jsx)("option",{value:e.value,children:e.label},e.value))]})]})]}),(0,t.jsxs)("div",{className:"space-y-1.5",children:[(0,t.jsx)("label",{className:"block text-xs font-medium text-muted uppercase tracking-wide",children:"Depends on"}),(0,t.jsx)("input",{type:"text",value:N,onChange:e=>k(e.target.value),placeholder:"e.g. T001, T003",className:"w-full px-3 py-2 bg-surface2 border border-border rounded-lg text-sm text-txt placeholder:text-muted focus:outline-hidden focus:border-accent transition-colors"})]}),(0,t.jsxs)("div",{className:"space-y-1.5",children:[(0,t.jsx)("label",{className:"block text-xs font-medium text-muted uppercase tracking-wide",children:"Description"}),(0,t.jsx)("textarea",{value:j,onChange:e=>v(e.target.value),placeholder:"What needs to be built?",rows:3,className:"w-full px-3 py-2 bg-surface2 border border-border rounded-lg text-sm text-txt placeholder:text-muted focus:outline-hidden focus:border-accent transition-colors resize-none"})]}),y&&(0,t.jsx)("p",{className:"text-sm text-danger",children:y}),(0,t.jsxs)("div",{className:"flex items-center justify-end gap-2 pt-1",children:[(0,t.jsx)(u.Close,{type:"button",className:"px-4 py-2 text-sm text-muted hover:text-txt transition-colors",children:"Cancel"}),(0,t.jsxs)("button",{type:"submit",disabled:S||!d.trim(),className:(0,o.cn)("flex items-center gap-2 px-4 py-2 rounded-lg text-sm font-medium transition-colors","bg-accent text-white hover:bg-accent/90 disabled:opacity-50 disabled:cursor-not-allowed"),children:[S?(0,t.jsx)(p.Loader2,{className:"w-4 h-4 animate-spin"}):(0,t.jsx)(n.Plus,{className:"w-4 h-4"}),S?"Creating…":"Create Task"]})]})]})]})]})})}function g(){let{board:e,summary:n,moveTask:o,refresh:l,rootParam:d}=(0,r.useApp)(),i=(0,a.useRouter)(),[u,m]=(0,s.useState)(null),p=(0,a.useSearchParams)().get("task"),[b,g]=(0,s.useState)(null);if(e&&p!==b){g(p);let t=p?Object.values(e).flat().find(e=>e.id===p):void 0;t&&m(t)}let[f,j]=(0,s.useState)(!1);return e?(0,t.jsxs)("div",{className:"relative flex-1",children:[(0,t.jsx)(c,{board:e,summary:n,onMoveTask:o,onOpenTask:m,onNewTask:()=>j(!0)}),(0,t.jsx)(x.TaskDetailPanel,{task:u,onClose:()=>{m(null),p&&i.replace("/board",{scroll:!1})},onMove:o}),(0,t.jsx)(h,{open:f,onOpenChange:j,rootParam:d,onTaskCreated:l})]}):null}e.s(["default",0,function(){return(0,t.jsx)(s.Suspense,{children:(0,t.jsx)(g,{})})}],955787)},34086,e=>{"use strict";var t=e.i(72345),s=e.i(180338),a=e.i(975157),r=e.i(487486),n=e.i(519455),o=e.i(723528);let l={todo:"text-muted border-border2","in-progress":"text-amber border-amber/30 bg-amber/5",blocked:"text-danger border-danger/30 bg-danger/5",done:"text-teal border-teal/30 bg-teal/5",cancelled:"text-muted border-border line-through"},d={todo:"border-border2 text-muted","in-progress":"border-amber/40 text-amber",blocked:"border-danger/40 text-danger",done:"border-teal/40 text-teal",cancelled:"border-border text-muted"},i={todo:"📋","in-progress":"🔨",blocked:"🚫",done:"✅",cancelled:"❌"},c={todo:["in-progress"],"in-progress":["done","blocked","todo"],blocked:["in-progress","cancelled"],done:["todo"],cancelled:["todo"]};e.s(["STATUS_ICONS",0,i,"TaskCard",0,function({task:e,onMove:x,onOpen:u}){let[m,p]=(0,s.useState)(!1),b=c[e.status]||[];return(0,t.jsxs)("div",{draggable:!0,onDragStart:t=>{t.dataTransfer.setData("taskId",e.id),t.dataTransfer.effectAllowed="move",p(!0)},onDragEnd:()=>p(!1),style:{viewTransitionName:`task-${e.file.replace(/[^a-zA-Z0-9_-]/g,"_")}`},className:(0,a.cn)("group relative bg-surface border rounded-lg p-3 text-sm transition-[border-color,opacity] hover:border-border2",l[e.status]||"border-border",m&&"opacity-50 cursor-grabbing"),children:[(0,t.jsxs)("div",{className:"flex items-center justify-between mb-1.5",children:[(0,t.jsxs)("span",{className:"flex items-center gap-1.5 text-xs font-mono text-muted",children:[e.id,(0,t.jsx)(o.AgentDot,{attach:{kind:"task",id:e.id}})]}),(0,t.jsx)(r.Badge,{variant:"outline",className:(0,a.cn)("text-[10px] h-4 px-1.5 font-normal",d[e.status]),children:"in-progress"===e.status?"active":e.status})]}),(0,t.jsx)("p",{className:"font-medium text-txt text-sm leading-snug mb-2",children:e.title}),e.phase&&(0,t.jsx)("p",{className:"text-xs text-muted mb-2",children:e.phase}),(0,t.jsxs)("div",{className:"flex items-center gap-1 opacity-0 group-hover:opacity-100 transition-opacity",children:[(0,t.jsx)(n.Button,{variant:"ghost",size:"sm",className:"h-6 text-xs px-2",onClick:u,children:"open"}),b.map(s=>(0,t.jsxs)(n.Button,{variant:"ghost",size:"sm",className:"h-6 text-xs px-2",onClick:()=>x(e.id,s),children:[i[s]," ","in-progress"===s?"start":s]},s))]})]})}])},592381,329090,e=>{"use strict";var t=e.i(72345),s=e.i(180338),a=e.i(975157),r=e.i(980376),n=e.i(998822),o=e.i(34086),l=e.i(910172),d=e.i(763371);let i={task_updated:"🔨",decision_logged:"📝",memory_updated:"🧠",doc_read:"📄",session_start:"🤖",roadmap_updated:"🗺️"};function c(e){let t=(Date.now()-new Date(e).getTime())/1e3;return t<60?"just now":t<3600?`${Math.floor(t/60)}m ago`:t<86400?`${Math.floor(t/3600)}h ago`:`${Math.floor(t/86400)}d ago`}function x({taskId:e,onNavigate:a}){let{rootParam:r}=(0,d.useApp)(),n=(0,l.useRouter)(),[o,i]=(0,s.useState)(null);return(0,s.useEffect)(()=>{let t=r?`${r}&`:"?";fetch(`/api/sessions${t}taskId=${encodeURIComponent(e)}`).then(e=>e.json()).then(e=>i(Array.isArray(e)?e:[])).catch(()=>i([]))},[r,e]),(0,t.jsxs)("div",{className:"px-5 py-3 border-b border-border shrink-0",children:[(0,t.jsx)("p",{className:"mb-2 text-xs font-mono uppercase tracking-wide text-muted",children:"Sessions"}),null===o?null:0===o.length?(0,t.jsx)("p",{className:"text-xs text-muted",children:"No recorded sessions"}):(0,t.jsx)("div",{className:"flex max-h-40 flex-col gap-1 overflow-y-auto",children:o.map(e=>(0,t.jsxs)("button",{onClick:()=>{a(),n.push(`/activity?session=${encodeURIComponent(e.id)}`)},className:"flex items-center gap-2 rounded-sm px-2 py-1 text-left text-xs hover:bg-surface2",children:[(0,t.jsx)("span",{children:"ai"===e.actor?"🤖":"👤"}),(0,t.jsx)("span",{className:"shrink-0 font-mono text-muted",children:c(e.start)}),(0,t.jsx)("span",{className:"truncate text-txt",children:e.headline})]},e.id))})]})}e.s(["ActivityEventRow",0,function({event:e}){return(0,t.jsxs)("div",{className:"flex gap-4 pb-4 animate-fade-in",children:[(0,t.jsx)("div",{className:"relative shrink-0 w-8 h-8 rounded-full bg-surface2 border border-border flex items-center justify-center text-sm z-10",children:i[e.type]||"•"}),(0,t.jsxs)("div",{className:"flex-1 pt-1 min-w-0",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2 mb-0.5",children:[(0,t.jsx)("span",{className:"text-sm font-medium text-txt",children:e.title}),"ai"===e.actor&&(0,t.jsx)("span",{className:"text-xs px-1.5 py-0.5 rounded-sm bg-accent/10 text-accent border border-accent/20 font-mono",children:"AI"})]}),e.detail&&(0,t.jsx)("p",{className:"text-xs text-muted truncate",children:e.detail}),(0,t.jsx)("p",{className:"text-xs text-muted/60 mt-0.5 font-mono",children:c(e.timestamp)})]})]})},"timeAgo",0,c],329090);var u=e.i(475850),m=e.i(723528),p=e.i(244267),b=e.i(481523);let h={todo:["in-progress"],"in-progress":["done","blocked","todo"],blocked:["in-progress","cancelled"],done:["todo"],cancelled:["todo"]},g={"in-progress":"start",done:"done",blocked:"blocked",todo:"backlog",cancelled:"cancel"},f={todo:"text-muted border-border2","in-progress":"text-amber border-amber/30 bg-amber/5",blocked:"text-danger border-danger/30 bg-danger/5",done:"text-teal border-teal/30 bg-teal/5",cancelled:"text-muted border-border"};e.s(["TaskDetailPanel",0,function({task:e,onClose:l,onMove:d}){let[i,c]=(0,s.useState)(e);e&&e!==i&&c(e);let j=i&&h[i.status]||[],{chats:v,showAbout:N}=(0,p.useChats)(),k=i?(0,b.chatFor)(v,{kind:"task",id:i.id}):void 0;return(0,t.jsx)(r.Sheet,{open:!!e,onOpenChange:e=>{e||l()},children:(0,t.jsx)(r.SheetContent,{side:"right","aria-describedby":void 0,className:"p-0 gap-0 sm:max-w-[420px] border-border flex flex-col",children:i&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("div",{className:"flex flex-col gap-1 min-w-0 pl-5 pr-12 py-4 border-b border-border shrink-0",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)("span",{className:"font-mono text-xs text-muted",children:i.id}),(0,t.jsxs)("span",{className:(0,a.cn)("text-xs px-1.5 py-0.5 rounded-sm border font-mono",f[i.status]),children:[o.STATUS_ICONS[i.status]," ",i.status]}),(0,t.jsx)(m.AgentMark,{attach:{kind:"task",id:i.id}})]}),(0,t.jsx)(r.SheetTitle,{className:"font-medium text-txt text-sm leading-snug",children:i.title})]}),(0,t.jsxs)("div",{className:"flex flex-wrap items-center gap-2 px-5 py-3 border-b border-border shrink-0",children:[j.map(e=>(0,t.jsxs)("button",{onClick:()=>{d(i.id,e),l()},className:"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:[o.STATUS_ICONS[e]," ",g[e]||e]},e)),(0,t.jsxs)("button",{onClick:()=>{l(),N({kind:"task",id:i.id})},className:"ml-auto inline-flex items-center gap-1.5 text-xs px-2.5 py-1 rounded-sm bg-accent text-white transition-[filter] hover:brightness-110",children:[(0,t.jsx)(u.MessageSquare,{className:"size-3.5"})," ",k?"Open chat":"Chat about task"]})]}),(0,t.jsx)(x,{taskId:i.id,onNavigate:l},i.id),(0,t.jsx)("div",{className:"flex-1 overflow-y-auto px-5 py-4",children:i.raw?(0,t.jsx)(n.MarkdownRenderer,{content:i.raw}):(0,t.jsx)("p",{className:"text-sm text-muted",children:"No content available."})})]})})})}],592381)},723528,e=>{"use strict";var t=e.i(72345),s=e.i(479432),a=e.i(240595),r=e.i(975157),n=e.i(244267);let o={running:"Agent working","needs-answer":"Agent needs you",review:"Plan to review"};e.s(["AgentDot",0,function({attach:e}){let s=(0,n.useItemAgent)(e);if(!s)return null;let l=o[s.status];return(0,t.jsx)("span",{title:l,"aria-label":l,role:"img",className:"inline-flex shrink-0",children:"running"===s.status?(0,t.jsx)(a.Loader2,{className:"size-3 animate-spin text-accent"}):(0,t.jsx)("span",{className:(0,r.cn)("size-1.5 rounded-full animate-pulse-dot","needs-answer"===s.status?"bg-amber":"bg-accent")})})},"AgentMark",0,function({attach:e,className:l}){let d=(0,n.useItemAgent)(e),{show:i}=(0,n.useChats)();if(!d)return null;let c=o[d.status];return(0,t.jsxs)("button",{type:"button",onClick:e=>{e.stopPropagation(),i(d.chatId)},title:`${c} \xb7 open chat`,"aria-label":`${c}, open chat`,className:(0,r.cn)("nodrag inline-flex shrink-0 items-center gap-1 rounded-full border px-1.5 py-px font-mono text-[10px] leading-4 animate-fade-in transition-colors duration-(--duration-fast)","running"===d.status&&"border-accent/50 text-accent hover:bg-accent/10","needs-answer"===d.status&&"border-amber/50 text-amber hover:bg-amber/10","review"===d.status&&"border-accent/50 bg-accent/10 text-accent hover:bg-accent/20",l),children:["running"===d.status?(0,t.jsx)(a.Loader2,{className:"size-3 animate-spin"}):(0,t.jsx)(s.Bot,{className:"size-3"}),c]})}])}]);
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,83790,e=>{"use strict";var t=e.i(180338);let s=(...e)=>e.filter((e,t,s)=>!!e&&""!==e.trim()&&s.indexOf(e)===t).join(" ").trim(),n={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":2,"stroke-linecap":"round","stroke-linejoin":"round"},a=(0,t.createContext)({}),i=(0,t.forwardRef)(({color:e,size:i,width:r,height:o,strokeWidth:l,absoluteStrokeWidth:d,nonScalingStroke:c,className:u="",children:p,iconNode:f=[],icon:h={node:f,aliases:[],size:24},...m},g)=>{let{size:y=24,strokeWidth:b=2,absoluteStrokeWidth:w=!1,nonScalingStroke:x=!1,color:v="currentColor",className:k=""}=(0,t.useContext)(a)??{},N=!!p||(e=>{for(let t in e)if(t.startsWith("aria-")||"role"===t||"title"===t)return!0;return!1})(m),[j,A,S=[]]=function(e,t={}){return function(e,t={}){let a=t.attributeNames??{},i=e=>a[e]??e,r=e.size??e.width??n.width,o=e.size??e.height??n.height,l=e.aliases?.filter(e=>"string"==typeof e&&""!==e.trim()).map(e=>`lucide-${e}`)??[],d=[...e.name?[`lucide-${e.name}`]:[],...l],c=t.className?.split(" ").filter(Boolean)??[],u=!1===t.includeDefaultClasses?s(...c):s("lucide",...d,...c),p=t.absoluteStrokeWidth?Number(t.strokeWidth??n["stroke-width"])*Number(e.size??e.width??n.width)/Number(t.size??t.width??n.width):t.strokeWidth??n["stroke-width"];return["svg",{...Object.entries(n).reduce((e,[t,s])=>(e[i(t)]=s,e),{}),..."color"in t&&t.color&&{[i("stroke")]:t.color},..."size"in t&&null!=t.size&&{[i("width")]:t.size,[i("height")]:t.size},..."width"in t&&null!=t.width&&{[i("width")]:t.width},..."height"in t&&null!=t.height&&{[i("height")]:t.height},[i("stroke-width")]:p,...u&&{[i("class")]:u},[i("viewBox")]:`0 0 ${r} ${o}`,...!1===t.hasA11yProp?{[i("aria-hidden")]:"true"}:{},..."attributes"in t&&t.attributes},e.node.map(e=>{let[s,n,a]=e,r=t.nonScalingStroke?{[i("vector-effect")]:"non-scaling-stroke",...n}:n;return a?[s,r,a]:[s,r]})]}(e,{...t,attributeNames:{...t.attributeNames,class:"className","stroke-width":"strokeWidth","stroke-linecap":"strokeLinecap","stroke-linejoin":"strokeLinejoin","vector-effect":"vectorEffect"}})}(h,{color:e??v,width:r??i??y,height:o??i??y,strokeWidth:l??b,absoluteStrokeWidth:d??w,nonScalingStroke:c??x,className:s(k,u),hasA11yProp:N,attributes:m});return(0,t.createElement)(j,{ref:g,...A},[...S.map(([e,s])=>(0,t.createElement)(e,s)),...Array.isArray(p)?p:[p]])});e.s(["default",0,function(e,s=[],n=[]){let a,r="string"==typeof e?function(e,t,s=[]){if(null==t)throw Error("[lucide]: iconNode is required when icon name is used");return{name:e?.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),size:24,node:t,...s.length>0?{aliases:s}:{}}}(e,s,n):e,o=(0,t.forwardRef)(({className:e,...s},n)=>(0,t.createElement)(i,{ref:n,icon:r,className:e,...s}));return r.name&&(o.displayName=(a=(e=>{let t="",s=!1;for(let n of e){if("-"===n||"_"===n||n<=" "){s=t.length>0;continue}0===t.length?t+=n.toLowerCase():t+=s?n.toUpperCase():n,s=!1}return t})(r.name)).charAt(0).toUpperCase()+a.slice(1)),o}],83790)},479432,e=>{"use strict";var t=e.i(83790);let s={name:"bot",size:24,node:[["path",{d:"M12 8V4H8",key:"hb8ula"}],["rect",{width:"16",height:"12",x:"4",y:"8",rx:"2",key:"enze0r"}],["path",{d:"M2 14h2",key:"vft8re"}],["path",{d:"M20 14h2",key:"4cs60a"}],["path",{d:"M15 13v2",key:"1xurst"}],["path",{d:"M9 13v2",key:"rq6x2g"}]]};s.node;let n=(0,t.default)(s);e.s(["Bot",0,n],479432)},675964,e=>{"use strict";var t=e.i(83790);let s={name:"chevron-right",size:24,node:[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]]};s.node;let n=(0,t.default)(s);e.s(["ChevronRight",0,n],675964)},406952,e=>{"use strict";var t=e.i(83790);let s={name:"file-text",size:24,node:[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M10 9H8",key:"b1mrlr"}],["path",{d:"M16 13H8",key:"t4e002"}],["path",{d:"M16 17H8",key:"z1uh3a"}]]};s.node;let n=(0,t.default)(s);e.s(["FileText",0,n],406952)},240595,e=>{"use strict";var t=e.i(83790);let s={name:"loader-circle",size:24,node:[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]],aliases:["loader-2"]};s.node;let n=(0,t.default)(s);e.s(["Loader2",0,n],240595)},765470,e=>{"use strict";var t=e.i(83790);let s={name:"x",size:24,node:[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]};s.node;let n=(0,t.default)(s);e.s(["X",0,n],765470)},776639,e=>{"use strict";var t=e.i(72345),s=e.i(180338),n=e.i(287272),a=e.i(765470),i=e.i(975157);let r=n.Root;n.Trigger;let o=n.Portal;n.Close;let l=s.forwardRef(({className:e,...s},a)=>(0,t.jsx)(n.Overlay,{ref:a,className:(0,i.cn)("fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",e),...s}));l.displayName=n.Overlay.displayName;let d=s.forwardRef(({className:e,children:s,...r},d)=>(0,t.jsxs)(o,{children:[(0,t.jsx)(l,{}),(0,t.jsxs)(n.Content,{ref:d,className:(0,i.cn)("fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border border-border bg-surface p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg",e),...r,children:[s,(0,t.jsxs)(n.Close,{className:"absolute right-4 top-4 rounded-xs opacity-70 ring-offset-bg transition-opacity hover:opacity-100 focus:outline-hidden focus:ring-2 focus:ring-accent focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-surface2 data-[state=open]:text-muted",children:[(0,t.jsx)(a.X,{className:"h-4 w-4"}),(0,t.jsx)("span",{className:"sr-only",children:"Close"})]})]})]}));d.displayName=n.Content.displayName;let c=({className:e,...s})=>(0,t.jsx)("div",{className:(0,i.cn)("flex flex-col space-y-1.5 text-center sm:text-left",e),...s});c.displayName="DialogHeader";let u=s.forwardRef(({className:e,...s},a)=>(0,t.jsx)(n.Title,{ref:a,className:(0,i.cn)("text-lg font-semibold leading-none tracking-tight",e),...s}));u.displayName=n.Title.displayName,s.forwardRef(({className:e,...s},a)=>(0,t.jsx)(n.Description,{ref:a,className:(0,i.cn)("text-sm text-muted",e),...s})).displayName=n.Description.displayName,e.s(["Dialog",0,r,"DialogContent",0,d,"DialogHeader",0,c,"DialogTitle",0,u])},793479,e=>{"use strict";var t=e.i(72345),s=e.i(180338),n=e.i(975157);let a=s.forwardRef(({className:e,type:s,...a},i)=>(0,t.jsx)("input",{type:s,className:(0,n.cn)("flex h-10 w-full rounded-md border border-border bg-bg px-3 py-2 text-base ring-offset-bg file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-txt placeholder:text-muted focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-accent focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",e),ref:i,...a}));a.displayName="Input",e.s(["Input",0,a])},980376,e=>{"use strict";var t=e.i(72345),s=e.i(180338),n=e.i(287272),a=e.i(294237),i=e.i(765470),r=e.i(975157);let o=n.Root;n.Trigger,n.Close;let l=n.Portal,d=s.forwardRef(({className:e,...s},a)=>(0,t.jsx)(n.Overlay,{className:(0,r.cn)("fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",e),...s,ref:a}));d.displayName=n.Overlay.displayName;let c=(0,a.cva)("fixed z-50 gap-4 bg-surface p-6 shadow-lg transition ease-in-out data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:duration-300 data-[state=open]:duration-500",{variants:{side:{top:"inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top",bottom:"inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom",left:"inset-y-0 left-0 h-full w-3/4 border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm",right:"inset-y-0 right-0 h-full w-3/4 border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm"}},defaultVariants:{side:"right"}}),u=s.forwardRef(({side:e="right",className:s,children:a,...o},u)=>(0,t.jsxs)(l,{children:[(0,t.jsx)(d,{}),(0,t.jsxs)(n.Content,{ref:u,className:(0,r.cn)(c({side:e}),s),...o,children:[a,(0,t.jsxs)(n.Close,{className:"absolute right-4 top-4 rounded-xs opacity-70 ring-offset-bg transition-opacity hover:opacity-100 focus:outline-hidden focus:ring-2 focus:ring-accent focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-surface2",children:[(0,t.jsx)(i.X,{className:"h-4 w-4"}),(0,t.jsx)("span",{className:"sr-only",children:"Close"})]})]})]}));u.displayName=n.Content.displayName;let p=({className:e,...s})=>(0,t.jsx)("div",{className:(0,r.cn)("flex flex-col space-y-2 text-center sm:text-left",e),...s});p.displayName="SheetHeader";let f=s.forwardRef(({className:e,...s},a)=>(0,t.jsx)(n.Title,{ref:a,className:(0,r.cn)("text-lg font-semibold text-txt",e),...s}));f.displayName=n.Title.displayName;let h=s.forwardRef(({className:e,...s},a)=>(0,t.jsx)(n.Description,{ref:a,className:(0,r.cn)("text-sm text-muted",e),...s}));h.displayName=n.Description.displayName,e.s(["Sheet",0,o,"SheetContent",0,u,"SheetDescription",0,h,"SheetHeader",0,p,"SheetTitle",0,f])},244267,702197,481523,e=>{"use strict";var t=e.i(72345),s=e.i(180338),n=e.i(910172),a=e.i(763371),i=e.i(975157);function r(e){return Array.isArray(e)&&e.length>0&&e.every(e=>!!e&&"object"==typeof e&&"string"==typeof e.question&&"string"==typeof e.header&&Array.isArray(e.options)&&e.options.every(e=>!!e&&"object"==typeof e&&"string"==typeof e.label))}let o="\0other";function l(e,t){return["Answers:",...e.map((e,s)=>`- ${e.header}: ${t[s]}`)].join("\n")}e.s(["QuestionCard",0,function({set:e,disabled:n,onSubmit:a}){let[r,l]=(0,s.useState)(()=>e.questions.map(()=>[])),[d,c]=(0,s.useState)(()=>e.questions.map(()=>"")),u=!!e.answers,p=e.questions.map((e,t)=>{let s=e.options.map(e=>e.label).filter(e=>r[t].includes(e));return r[t].includes(o)&&d[t].trim()&&s.push(`Other: "${d[t].trim()}"`),s.join(", ")}),f=p.every(Boolean);return(0,t.jsxs)("div",{className:"my-2 rounded-md border border-border overflow-hidden","data-question-card":!0,children:[(0,t.jsxs)("div",{className:"flex items-center gap-2 px-2 py-1.5 bg-surface2 border-b border-border",children:[(0,t.jsx)("span",{className:"text-[10px] font-mono uppercase tracking-widest text-muted",children:"Questions"}),u&&(0,t.jsx)("span",{className:"ml-auto text-[10px] font-mono text-accent",children:"✓ Answered"})]}),(0,t.jsxs)("div",{className:"p-2 space-y-3",children:[e.questions.map((s,n)=>(0,t.jsxs)("fieldset",{disabled:u,className:"space-y-1",children:[(0,t.jsxs)("legend",{className:"mb-1",children:[(0,t.jsx)("span",{className:"text-[10px] font-mono px-1.5 py-0.5 rounded-sm bg-surface2 border border-border text-accent mr-1.5",children:s.header}),(0,t.jsx)("span",{className:"text-xs text-txt",children:s.question})]}),u?(0,t.jsx)("p",{className:"text-xs text-txt pl-1",children:e.answers?.[n]}):(0,t.jsxs)(t.Fragment,{children:[[...s.options,{label:"Other",value:o}].map(a=>{let o="value"in a?a.value:a.label,d=r[n].includes(o);return(0,t.jsxs)("label",{className:(0,i.cn)("flex gap-2 items-start rounded-sm px-1 py-0.5 cursor-pointer hover:bg-surface2",d&&"bg-surface2"),children:[(0,t.jsx)("input",{type:s.multiSelect?"checkbox":"radio",name:`${e.id}-${n}`,checked:d,onChange:()=>{var e;return e=s.multiSelect,void l(t=>t.map((t,s)=>s!==n?t:e?t.includes(o)?t.filter(e=>e!==o):[...t,o]:[o]))},className:"mt-0.5 accent-accent"}),(0,t.jsxs)("span",{className:"text-xs",children:[(0,t.jsx)("span",{className:"text-txt",children:a.label}),"description"in a&&a.description&&(0,t.jsx)("span",{className:"block text-muted",children:a.description})]})]},o)}),r[n].includes(o)&&(0,t.jsx)("input",{value:d[n],onChange:e=>c(t=>t.map((t,s)=>s===n?e.target.value:t)),placeholder:"Your answer","aria-label":`Other answer for ${s.header}`,className:"ml-6 w-[calc(100%-1.5rem)] rounded-sm bg-surface2 border border-border px-2 py-1 text-xs text-txt placeholder:text-muted focus:outline-hidden focus:border-accent"})]})]},n)),!u&&(0,t.jsx)("button",{onClick:()=>a(p),disabled:!f||n,className:"text-xs px-2 py-0.5 rounded-sm bg-accent/20 text-accent hover:bg-accent/30 disabled:opacity-50",children:"Submit"})]})]})},"formatAnswers",0,l,"isRenderableQuestions",0,r],702197);let d=e=>!!e&&"object"==typeof e&&!Array.isArray(e),c=e=>"string"==typeof e?e.trim():"";var u=e.i(956555);function p(e,t=Math.random()){return`c-${e.toString(36)}${t.toString(36).slice(2,6)}`}function f(e,t,s={}){var n;let a=s.now??new Date().toISOString();return[...e,{id:t,title:s.title??(s.attach?"epic"===(n=s.attach).kind?`Epic ${n.id}`:`Task ${n.id}`:"New chat"),messages:[],sessionId:null,busy:!1,notes:[],attach:s.attach??null,createdAt:a,updatedAt:a}]}function h(e,t,s){return e.map(e=>e.id===t?s(e):e)}function m(e){return e.messages.reduce((e,t)=>e+t.plans.filter(e=>"pending"===e.status).length+t.proposals.filter(e=>"pending"===e.status).length,0)}function g(e){if(e.busy)return"running";let t=e.messages[e.messages.length-1];if(t?.questions.some(e=>!e.answers))return"needs-answer";if(m(e))return"review";let s=e.messages.findLast(e=>"assistant"===e.role);return s?.error?"error":"idle"}let y=e=>"needs-answer"===e||"review"===e;function b(e,t,s={}){if((s.running??e.filter(e=>e.busy).length)>=4)return{refused:"Too many agents running (4). Stop or close a chat, or wait."};let n=e.find(e=>e.id===t);return!n||n.busy||s.newChat?{newChat:!0}:{chatId:n.id}}let w=e=>`${e.kind}:${e.id}`;function x(e){return e.trim().match(/^Break down epic (R\d+)/i)?.[1].toUpperCase()??null}function v(e,t){return e.filter(e=>{let s;return s=e.attach,!!s&&!!t&&s.kind===t.kind&&s.id===t.id}).sort((e,t)=>t.updatedAt.localeCompare(e.updatedAt))[0]}let k={running:3,"needs-answer":2,review:1};function N(e){let t={};for(let s of e){let e=g(s);if(!s.attach||"idle"===e||"error"===e)continue;let n=w(s.attach),a=t[n];(!a||k[e]>k[a.status])&&(t[n]={status:e,chatId:s.id})}return t}function j(e){return"epic"===e.kind?`[This chat is about epic ${e.id}. Read it with vibedoc_get_roadmap (and its tasks with vibedoc_get_task) before answering.]`:`[This chat is about task ${e.id}. Read it with vibedoc_get_task before answering.]`}function A(e){let t=[...e].sort((e,t)=>t.updatedAt.localeCompare(e.updatedAt)),s={needsYou:[],running:[],recent:[]};for(let e of t){let t=g(e);y(t)?s.needsYou.push(e):"running"===t?s.running.push(e):s.recent.push(e)}return s}function S(e){let t=A(e);return t.needsYou[0]??t.running[0]??t.recent[0]}function C(e){return e.messages.length?{...e,busy:!1}:null}function $(e){if(!e||"string"!=typeof e.id||!Array.isArray(e.messages))return null;let t=e.messages[e.messages.length-1],s=t?.role!=="assistant"||t.text||t.error||t.tools?.length||t.plans?.length||t.proposals?.length||t.questions?.length?e.messages:[...e.messages.slice(0,-1),{...t,error:"Interrupted: the page reloaded while the agent was working."}],n=e.updatedAt??e.createdAt??new Date(0).toISOString();return{...e,messages:s,busy:!1,notes:e.notes??[],attach:e.attach??null,createdAt:e.createdAt??n,updatedAt:n}}function _(e,t){return t.flatMap(t=>{let s=g(t);return y(s)&&e[t.id]!==s?[{chat:t,status:s}]:[]})}function E(e,t){let s=e.replace(/^\(\d+\) /,"");return t>0?`(${t}) ${s}`:s}function T(e){let t=x(e);if(t)return`Break down ${t}`;let s=e.trim().split("\n")[0];return s.length>40?`${s.slice(0,40).trimEnd()}…`:s}e.s(["MAX_RUNNING_CHATS",0,4,"STATUS_LABEL",0,{running:"Running","needs-answer":"Waiting for your answers",review:"Plan or edit to review",error:"Error",idle:"Idle"},"addChat",0,f,"ago",0,function(e,t){let s=Math.max(0,Math.floor((t-Date.parse(e))/6e4));return s<1?"now":s<60?`${s}m`:s<1440?`${Math.floor(s/60)}h`:`${Math.floor(s/1440)}d`},"attachContext",0,j,"attachKey",0,w,"chatFor",0,v,"chatStatus",0,g,"chatTitle",0,T,"defaultChat",0,S,"epicOf",0,x,"fromSaved",0,$,"groupChats",0,A,"isWaiting",0,y,"itemAgents",0,N,"newChatId",0,p,"newlyWaiting",0,_,"patchChat",0,h,"pendingReviews",0,m,"routeAsk",0,b,"suggestions",0,function(e){return e?"epic"===e.kind?[`Break down epic ${e.id} into tasks.`,"Summarize this epic's progress.","What is at risk in this epic?"]:["Refine this task's spec.","Split this task into smaller tasks.","What blocks this task?"]:["What should I work on next?","Plan a roadmap for this project.","What is blocked right now?"]},"toSaved",0,C,"waitingTitle",0,E],481523);let z=(e,t="")=>({role:e,text:t,tools:[],proposals:[],plans:[],questions:[]}),R=(0,s.createContext)(null),O=(0,s.createContext)({});e.s(["ChatProvider",0,function({children:e}){let{rootParam:i,activeProject:o,selectedDoc:w}=(0,a.useApp)(),k=(0,n.usePathname)(),A=(0,n.useRouter)(),[q,I]=(0,s.useState)([]),[M,P]=(0,s.useState)(!1),[W,D]=(0,s.useState)(null),[L,U]=(0,s.useState)(null),[B,H]=(0,s.useState)(null),V=(0,s.useRef)(new Map),J=(0,s.useRef)(new Set),K=(0,s.useRef)({}),Q="/chat"===k,X="/docs"===k?w?.path:void 0;(0,s.useEffect)(()=>{for(let e of V.current.values())e.abort();V.current.clear(),J.current.clear();let e=!1;return fetch(`/api/conversations${i}`).then(e=>e.ok?e.json():{chats:[]}).then(t=>{if(e)return;let s=(t.chats??[]).map(e=>$(e)).filter(e=>!!e);K.current=Object.fromEntries(s.map(e=>[e.id,g(e)])),I(s),D(null),U(null),P(!0)}).catch(t=>{console.warn("[vibedoc] could not load chats:",t),e||(I([]),P(!0))}),()=>{e=!0}},[o,i]),(0,s.useEffect)(()=>{for(let e of[...J.current]){let t=q.find(t=>t.id===e);J.current.delete(e);let s=t&&C(t);s&&fetch(`/api/conversations${i}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({chat:s})}).catch(t=>console.warn(`[vibedoc] could not save chat ${e}:`,t))}},[q,i]);let Y=(0,s.useRef)({key:"{}",value:{}}),F=(0,s.useMemo)(()=>{let e=N(q),t=JSON.stringify(e);return t!==Y.current.key&&(Y.current={key:t,value:e}),Y.current.value},[q]),G=q.filter(e=>e.busy).length,Z=q.filter(e=>y(g(e))).length;function ee(e){J.current.add(e)}function et(e){U(e),Q?(D(null),A.replace(`/chat?id=${encodeURIComponent(e)}`,{scroll:!1})):D(e)}function es(e=null){let t=p(Date.now());return I(s=>f(s,t,{attach:e})),t}function en(e,t){I(s=>h(s,e,e=>({...e,messages:[...e.messages.slice(0,-1),t(e.messages[e.messages.length-1])]})))}async function ea(e,t){let s=t.trim(),n=q.find(t=>t.id===e);if(!s||n?.busy)return;"Notification"in window&&"default"===Notification.permission&&Notification.requestPermission().catch(()=>{});let a=!n?.messages.length,o=x(s),l=n?.attach??(o?{kind:"epic",id:o}:null);I(t=>h(t,e,e=>({...e,title:e.messages.length?e.title:T(s),attach:e.attach??l,busy:!0,notes:[],updatedAt:new Date().toISOString(),messages:[...e.messages,z("user",s),z("assistant")]}))),ee(e);let c=[...a&&n?.attach?[j(n.attach)]:[],...n?.notes.length?[`[${n.notes.join(" ")}]`]:[]],u=c.length?`${c.join("\n")}
|
|
2
|
+
|
|
3
|
+
${s}`:s,p=new AbortController;V.current.set(e,p);try{let t=await fetch(`/api/chat${i}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({message:u,sessionId:n?.sessionId??null,docPath:X}),signal:p.signal});if(!t.ok||!t.body){let e=await t.json().catch(()=>null);throw Error(e?.error??`Request failed (${t.status})`)}let s=t.body.getReader(),a=new TextDecoder,o="";for(;;){let{done:t,value:n}=await s.read();if(t)break;let i=(o+=a.decode(n,{stream:!0})).split("\n");for(let t of(o=i.pop()??"",i))if(t.trim())try{!function(e,t){if(t.session_id&&I(s=>h(s,e,e=>e.sessionId===t.session_id?e:{...e,sessionId:t.session_id})),"stream_event"===t.type){let s=t.event;s?.type==="message_start"?en(e,e=>e.text&&!e.text.endsWith("\n\n")?{...e,text:e.text+"\n\n"}:e):s?.type==="content_block_delta"&&s.delta?.type==="text_delta"&&en(e,e=>({...e,text:e.text+s.delta.text}))}else if("assistant"===t.type){let s=(t.message?.content??[]).filter(e=>"tool_use"===e.type),n=s.filter(e=>e.name.endsWith("vibedoc_propose_edit")&&"string"==typeof e.input?.path&&Array.isArray(e.input?.edits)).map(e=>({id:e.id,path:e.input.path,edits:e.input.edits,summary:"string"==typeof e.input.summary?e.input.summary:void 0,status:"pending"})),a=s.filter(e=>e.name.endsWith("vibedoc_propose_plan")).flatMap(e=>{let t=function(e){if(!d(e))return null;let t=(e,t)=>Array.isArray(e)&&e.every(e=>d(e)&&t.every(t=>"string"==typeof e[t])&&(void 0===e.dependsOn||Array.isArray(e.dependsOn)));if("breakdown"===e.kind){let s=void 0===e.epic||"string"==typeof e.epic,n=void 0===e.newEpic||d(e.newEpic)&&"string"==typeof e.newEpic.title&&"string"==typeof e.newEpic.parent;return s&&n&&t(e.tasks,["key","title"])&&e.tasks.length>0?e:null}if("roadmap"===e.kind){let s=e.horizons??[],n=e.epics??[];return t(s,["key","title"])&&t(n,["key","title","parent"])?{kind:"roadmap",horizons:s,epics:n}:null}return null}(e.input?.plan);return t?[{id:e.id,plan:t,status:"pending"}]:[]}),i=s.filter(e=>e.name.endsWith("vibedoc_ask_questions")&&r(e.input?.questions)).map(e=>({id:e.id,questions:e.input.questions})),o=["vibedoc_propose_edit","vibedoc_propose_plan","vibedoc_ask_questions"],l=s.filter(e=>!o.some(t=>e.name.endsWith(t))).map(e=>e.name.replace(/^mcp__vibedoc__vibedoc_/,""));(l.length||n.length||a.length||i.length)&&en(e,e=>({...e,tools:[...e.tools,...l],proposals:[...e.proposals,...n],plans:[...e.plans,...a],questions:[...e.questions,...i]}))}else if("user"===t.type){let s=new Set((t.message?.content??[]).filter(e=>"tool_result"===e.type&&e.is_error).map(e=>e.tool_use_id));s.size&&en(e,e=>({...e,proposals:e.proposals.filter(e=>!s.has(e.id)),plans:e.plans.filter(e=>!s.has(e.id)),questions:e.questions.filter(e=>!s.has(e.id))}))}else"result"===t.type&&t.is_error?en(e,e=>({...e,error:t.result??t.subtype??"Agent error"})):"error"===t.type&&en(e,e=>({...e,error:t.message}))}(e,JSON.parse(t))}catch{}}}catch(t){p.signal.aborted?en(e,e=>e.text||e.error?e:{...e,error:"Stopped."}):en(e,e=>({...e,error:t.message}))}finally{V.current.get(e)===p&&(V.current.delete(e),ee(e)),I(t=>h(t,e,e=>({...e,busy:!1,updatedAt:new Date().toISOString()})))}}function ei(e){V.current.get(e)?.abort()}function er(e,t,s){I(n=>h(n,e,e=>({...e,notes:s?[...e.notes,s]:e.notes,messages:e.messages.map(t)}))),ee(e)}return(0,s.useEffect)(()=>{document.title=E(document.title,Z)},[Z,k]),(0,s.useEffect)(()=>{let e=_(K.current,q);if(K.current=Object.fromEntries(q.map(e=>[e.id,g(e)])),e.length&&document.hidden&&"Notification"in window&&"granted"===Notification.permission)for(let{chat:t,status:s}of e){let e=new Notification("needs-answer"===s?"Agent needs your answer":"Plan ready to review",{body:t.title,tag:t.id});e.onclick=()=>{window.focus(),(0,u.openAgentChat)(t.id),e.close()}}},[q]),(0,s.useEffect)(()=>{function e(e){let{message:t,newChat:s}=e.detail??{};if(!t)return;let n=b(q,L,{newChat:s,running:V.current.size});if("refused"in n)return H(n.refused);H(null);let a=x(t),i="chatId"in n?n.chatId:es(a?{kind:"epic",id:a}:null);ea(i,t),s||et(i)}function t(e){let t=e.detail?.chatId;t&&q.some(e=>e.id===t)&&et(t)}return window.addEventListener(u.ASK_AGENT_EVENT,e),window.addEventListener(u.OPEN_CHAT_EVENT,t),()=>{window.removeEventListener(u.ASK_AGENT_EVENT,e),window.removeEventListener(u.OPEN_CHAT_EVENT,t)}}),(0,t.jsx)(R.Provider,{value:{chats:q,loaded:M,modalId:W,closeModal:function(e={}){e.keep||I(e=>e.filter(e=>e.id!==W||e.messages.length>0)),D(null)},show:et,showDefault:function(){let e=S(q);et(e?e.id:es())},showAbout:function(e){let t=v(q,e);et(t?t.id:es(e))},create:es,send:ea,stop:ei,remove:function(e){let t=q.find(t=>t.id===e),s=t?m(t):0;return(!s||!!window.confirm(`Discard ${s} unreviewed proposal${1===s?"":"s"}?`))&&(ei(e),V.current.delete(e),J.current.delete(e),I(t=>t.filter(t=>t.id!==e)),W===e&&D(null),L===e&&U(null),fetch(`/api/conversations${i}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({delete:e})}).catch(t=>console.warn(`[vibedoc] could not delete chat ${e}:`,t)),!0)},resolveProposal:function(e,t,s,n){er(e,e=>({...e,proposals:e.proposals.map(e=>e.id===t?{...e,status:n}:e)}),`User ${n} your proposed edit to ${s}.`)},resolvePlan:function(e,t,s,n,a){var i;let r="breakdown"===t.plan.kind?c((i=t.plan).epic)?c(i.epic).toUpperCase():i.newEpic?`new epic "${c(i.newEpic.title)}"`:"no epic":"the roadmap";er(e,e=>({...e,plans:e.plans.map(e=>e.id===t.id?{...e,status:s,created:n}:e)}),"accepted"===s?`User accepted plan for ${r}: created ${n.map(e=>e.id).join(", ")}${a.length?` (unchecked: ${a.join(", ")})`:""}.`:`User rejected the plan for ${r}.`)},answerQuestions:function(e,t,s){q.find(t=>t.id===e)?.busy||(er(e,e=>({...e,questions:e.questions.map(e=>e.id===t.id?{...e,answers:s}:e)})),ea(e,l(t.questions,s)))},agents:F,runningCount:G,waitingCount:Z,notice:B,dismissNotice:()=>H(null)},children:(0,t.jsx)(O.Provider,{value:F,children:e})})},"useChats",0,function(){let e=(0,s.useContext)(R);if(!e)throw Error("useChats() must be used inside <ChatProvider>");return e},"useItemAgent",0,function(e){return(0,s.useContext)(O)[w(e)]}],244267)}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,475850,e=>{"use strict";var t=e.i(83790);let s={name:"message-square",size:24,node:[["path",{d:"M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z",key:"18887p"}]]};s.node;let a=(0,t.default)(s);e.s(["MessageSquare",0,a],475850)},66858,e=>{"use strict";var t=e.i(72345),s=e.i(180338),a=e.i(910172),n=e.i(763371),r=e.i(975157),i=e.i(329090);function o({activity:e}){return(0,t.jsxs)("div",{className:"relative",children:[(0,t.jsx)("div",{className:"absolute left-4 top-0 bottom-0 w-px bg-border"}),(0,t.jsx)("div",{className:"flex flex-col gap-0",children:e.map(e=>(0,t.jsx)(i.ActivityEventRow,{event:e},e.id))})]})}let l={done:"bg-teal","in-progress":"bg-amber",blocked:"bg-danger",todo:"bg-muted",cancelled:"bg-border2"},d="inline-flex max-w-full items-center gap-1.5 truncate rounded-md border border-border bg-bg/40 px-2 py-1 text-xs font-mono text-txt transition-[border-color,background-color,transform] duration-(--duration-fast) ease-out-soft hover:-translate-y-px hover:border-border2 hover:bg-surface2 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent/60";function c({open:e,events:s}){return(0,t.jsx)("div",{className:(0,r.cn)("grid transition-[grid-template-rows,opacity] duration-(--duration-slow) ease-out-soft",e?"grid-rows-[1fr] opacity-100":"grid-rows-[0fr] opacity-0"),children:(0,t.jsx)("div",{className:"min-h-0 overflow-hidden",inert:!e,children:(0,t.jsxs)("div",{className:"relative mt-4 border-t border-border pt-4",children:[(0,t.jsx)("div",{className:"absolute left-4 top-4 bottom-0 w-px bg-border"}),s.map(e=>(0,t.jsx)(i.ActivityEventRow,{event:e},e.id))]})})})}function x({open:e}){return(0,t.jsx)("span",{className:(0,r.cn)("inline-block text-muted transition-transform duration-(--duration-base) ease-out-soft",e&&"rotate-90"),"aria-hidden":!0,children:"▸"})}function m({session:e,events:a,onOpenTask:n,onOpenDoc:i,focused:o=!1,live:u=!1}){let p,[h,b]=(0,s.useState)(o),g=(0,s.useRef)(null);(0,s.useEffect)(()=>{o&&g.current?.scrollIntoView({block:"center",behavior:"smooth"})},[o]);let f="ai"===e.actor,v=e.tasks.filter(e=>"done"===e.lastStatus).length,j=e.tasks.length+e.docs.length+e.decisions.length>0,N=`${(p=Math.round((Date.parse(e.end)-Date.parse(e.start))/6e4))<1?"<1m":p<60?`${p}m`:`${Math.floor(p/60)}h ${p%60}m`} \xb7 ${e.eventCount} event${1===e.eventCount?"":"s"}`;return j?(0,t.jsxs)("div",{ref:g,className:(0,r.cn)("group rounded-xl border bg-surface p-4 transition-[border-color,transform,box-shadow] duration-(--duration-base) ease-out-soft hover:-translate-y-0.5 hover:border-border2 hover:shadow-lg hover:shadow-black/20",u?"border-accent/40":"border-border",o&&"border-accent/60 animate-flash"),children:[(0,t.jsxs)("button",{onClick:()=>b(e=>!e),"aria-expanded":h,className:"flex w-full items-center gap-2 text-left text-xs",children:[(0,t.jsx)("span",{className:(0,r.cn)("font-medium",f?"text-accent":"text-txt"),children:f?"🤖 Agent":"👤 Human"}),u&&(0,t.jsxs)("span",{className:"flex items-center gap-1 rounded-full bg-accent/10 px-1.5 py-0.5 font-mono text-[10px] uppercase tracking-wide text-accent",children:[(0,t.jsx)("span",{className:"h-1.5 w-1.5 rounded-full bg-accent animate-pulse-dot"}),"live"]}),(0,t.jsx)("span",{className:"ml-auto font-mono text-muted",children:N}),(0,t.jsx)(x,{open:h})]}),(0,t.jsx)("p",{className:"mt-2 text-[15px] font-medium leading-snug text-txt",children:e.headline}),e.tasks.length>0&&(0,t.jsxs)("div",{className:"mt-3 flex items-center gap-2",title:`${v} of ${e.tasks.length} tasks done`,children:[(0,t.jsx)("div",{className:"h-1 flex-1 overflow-hidden rounded-full bg-surface2",children:(0,t.jsx)("div",{className:"h-full origin-left rounded-full bg-teal animate-grow-x transition-[width] duration-(--duration-slow) ease-out-soft",style:{width:`${v/e.tasks.length*100}%`}})}),(0,t.jsxs)("span",{className:"font-mono text-[11px] text-muted",children:[v,"/",e.tasks.length]})]}),(0,t.jsxs)("div",{className:"mt-3 flex flex-wrap gap-1.5",children:[e.tasks.map(e=>(0,t.jsxs)("button",{onClick:()=>n(e.id),className:d,title:`${e.id} → ${e.lastStatus}`,children:[(0,t.jsx)("span",{className:(0,r.cn)("h-1.5 w-1.5 shrink-0 rounded-full",l[e.lastStatus])}),e.id,(0,t.jsx)("span",{className:"text-muted",children:e.lastStatus})]},e.id)),e.docs.map(e=>(0,t.jsxs)("button",{onClick:()=>i(e),className:d,title:e,children:["📄 ",e.split("/").pop()]},e)),e.decisions.map(e=>(0,t.jsxs)("button",{onClick:()=>i(e.split(":")[0]),className:(0,r.cn)(d,"text-accent"),title:e,children:["📝 ",e]},e))]}),(0,t.jsx)(c,{open:h,events:a})]}):(0,t.jsxs)("div",{ref:g,className:(0,r.cn)("rounded-lg px-3 py-2 transition-colors duration-(--duration-fast) hover:bg-surface/60",o&&"bg-surface animate-flash"),children:[(0,t.jsxs)("button",{onClick:()=>b(e=>!e),"aria-expanded":h,className:"flex w-full items-center gap-2 text-left text-sm text-muted",children:[(0,t.jsx)("span",{children:f?"🤖":"👤"}),(0,t.jsx)("span",{className:"truncate",children:e.headline}),(0,t.jsx)("span",{className:"ml-auto shrink-0 font-mono text-xs text-muted/70",children:N}),(0,t.jsx)(x,{open:h})]}),(0,t.jsx)(c,{open:h,events:a})]})}function u(e){let t=new Date(e),s=new Date,a=new Date(s);return(a.setDate(s.getDate()-1),t.toDateString()===s.toDateString())?"Today":t.toDateString()===a.toDateString()?"Yesterday":t.toLocaleDateString(void 0,{weekday:"short",month:"short",day:"numeric"})}function p({value:e,label:s,tone:a}){return(0,t.jsxs)("div",{className:"min-w-0",children:[(0,t.jsx)("p",{className:(0,r.cn)("font-display text-2xl font-semibold tabular-nums leading-none",e?a??"text-txt":"text-muted/50"),children:e}),(0,t.jsx)("p",{className:"mt-1.5 text-xs text-muted",children:s})]})}function h({sessions:e,events:a,onOpenTask:n,onOpenDoc:i,focusSessionId:o}){var l;let d,[c,x]=(0,s.useState)("all"),[b,g]=(0,s.useState)(()=>Date.now());(0,s.useEffect)(()=>{let e=setInterval(()=>g(Date.now()),3e4);return()=>clearInterval(e)},[]);let f=(l=b-864e5,{sessions:(d=e.filter(e=>Date.parse(e.end)>=l)).length,tasksDone:new Set(d.flatMap(e=>e.tasks.filter(e=>"done"===e.lastStatus).map(e=>e.id))).size,docs:new Set(d.flatMap(e=>e.docs)).size,decisions:d.reduce((e,t)=>e+t.decisions.length,0)}),v={all:e.length,ai:e.filter(e=>"ai"===e.actor).length,human:e.filter(e=>"human"===e.actor).length},j="all"===c?e:e.filter(e=>e.actor===c);return(0,t.jsxs)("div",{children:[(0,t.jsxs)("section",{className:"mb-6 grid grid-cols-2 gap-5 rounded-xl border border-border bg-surface px-5 py-4 animate-fade-in sm:grid-cols-4",children:[(0,t.jsx)(p,{value:f.sessions,label:"sessions · 24h"}),(0,t.jsx)(p,{value:f.tasksDone,label:"tasks done",tone:"text-teal"}),(0,t.jsx)(p,{value:f.docs,label:"docs changed"}),(0,t.jsx)(p,{value:f.decisions,label:"ADRs logged",tone:"text-accent"})]}),(0,t.jsx)("div",{className:"mb-4 flex items-center gap-1 text-xs",role:"tablist","aria-label":"Filter by actor",children:["all","ai","human"].map(e=>(0,t.jsxs)("button",{role:"tab","aria-selected":c===e,onClick:()=>x(e),className:(0,r.cn)("rounded-full px-3 py-1 transition-colors duration-(--duration-fast)",c===e?"bg-surface2 text-txt":"text-muted hover:text-txt"),children:["all"===e?"All":"ai"===e?"🤖 Agent":"👤 Human",(0,t.jsx)("span",{className:"ml-1.5 font-mono text-muted",children:v[e]})]},e))}),0===j.length?(0,t.jsxs)("p",{className:"py-10 text-center text-sm text-muted",children:["No ","ai"===c?"agent":"human"," sessions yet."]}):(0,t.jsxs)("ol",{className:"relative",children:[(0,t.jsx)("div",{className:"absolute left-[3.5rem] top-2 bottom-2 w-px bg-border","aria-hidden":!0}),j.map((e,s)=>{let l=u(e.start),d=0===s||u(j[s-1].start)!==l,c=function(e,t=Date.now(),s=3e5){return t-Date.parse(e.end)<s}(e,b),x=e.tasks.length+e.docs.length+e.decisions.length===0;return(0,t.jsxs)("li",{className:"animate-fade-in",style:{animationDelay:`${45*Math.min(s,8)}ms`,animationFillMode:"both"},children:[d&&(0,t.jsx)("p",{className:"sticky top-0 z-10 -mx-1 mb-2 bg-bg/90 px-1 py-2 text-xs font-mono uppercase tracking-wide text-muted backdrop-blur-sm",children:l}),(0,t.jsxs)("div",{className:"grid grid-cols-[2.75rem_1.5rem_1fr] items-start pb-3",children:[(0,t.jsx)("time",{dateTime:e.start,className:(0,r.cn)("text-right font-mono text-[11px] text-muted",x?"pt-2.5":"pt-4"),title:new Date(e.start).toLocaleString(),children:new Date(e.start).toLocaleTimeString(void 0,{hour:"2-digit",minute:"2-digit",hourCycle:"h23"})}),(0,t.jsx)("span",{className:(0,r.cn)("flex justify-center",x?"pt-[0.95rem]":"pt-[1.2rem]"),"aria-hidden":!0,children:(0,t.jsx)("span",{className:(0,r.cn)("relative z-[1] rounded-full ring-4 ring-bg",x?"h-1.5 w-1.5":"h-2.5 w-2.5","ai"===e.actor?"bg-accent":"bg-muted",c&&"animate-pulse-dot")})}),(0,t.jsx)(m,{session:e,events:e.eventIds.flatMap(e=>a.get(e)??[]),onOpenTask:n,onOpenDoc:i,focused:e.id===o,live:c})]})]},e.id)})]})]})}var b=e.i(635743);function g({activity:e,liveIndicator:a,rootParam:n,onOpenTask:i,onOpenDoc:l,focusSessionId:d}){let[c,x]=(0,s.useState)("sessions"),[m,u]=(0,s.useState)(d);d!==m&&(u(d),d&&x("sessions"));let[p,f]=(0,s.useState)(null),[v,j]=(0,s.useState)(!1),[N,k]=(0,s.useState)(new Map);(0,s.useEffect)(()=>{let e=n?`${n}&`:"?",t=()=>Promise.all([fetch(`/api/sessions${n}`).then(e=>e.json()),fetch(`/api/activity${e}limit=2000`).then(e=>e.json())]).then(([e,t])=>{j(!1),f(Array.isArray(e)?e:[]),k(new Map((Array.isArray(t)?t:[]).map(e=>[e.id,e])))}).catch(()=>{j(!0),f(e=>e??[])});return t(),window.addEventListener("vibedoc:sse",t),()=>window.removeEventListener("vibedoc:sse",t)},[n]);let w="sessions"===c?p?.length===0:0===e.length;return(0,t.jsxs)("div",{className:"p-6 max-w-3xl",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between mb-6",children:[(0,t.jsx)("h1",{className:"font-display text-xl font-semibold tracking-tight",children:"Activity"}),(0,t.jsxs)("div",{className:"flex items-center gap-4",children:[(0,t.jsxs)("div",{className:"relative grid grid-cols-2 rounded-md border border-border p-0.5 text-xs",children:[(0,t.jsx)("span",{"aria-hidden":!0,className:(0,r.cn)("absolute inset-y-0.5 left-0.5 w-[calc(50%-2px)] rounded-sm bg-surface2 transition-transform duration-(--duration-base) ease-out-soft","events"===c&&"translate-x-full")}),["sessions","events"].map(e=>(0,t.jsx)("button",{onClick:()=>x(e),"aria-pressed":c===e,className:(0,r.cn)("relative px-3 py-1 transition-colors duration-(--duration-fast)",c===e?"text-txt":"text-muted hover:text-txt"),children:"sessions"===e?"Sessions":"All events"},e))]}),(0,t.jsxs)("div",{className:"flex items-center gap-1.5 text-xs font-mono text-teal",children:[(0,t.jsxs)("span",{className:"relative flex h-1.5 w-1.5",children:[a&&(0,t.jsx)("span",{className:"absolute inset-0 rounded-full bg-teal animate-ping"}),(0,t.jsx)("span",{className:"relative h-1.5 w-1.5 rounded-full bg-teal"})]}),"live"]})]})]}),v&&(0,t.jsx)("p",{className:"mb-4 rounded-md border border-danger/30 bg-danger/5 px-3 py-2 text-xs text-danger animate-fade-in",children:"Couldn't load sessions. Showing the last data we had; it retries on the next update."}),"sessions"===c&&null===p?(0,t.jsxs)("div",{className:"flex flex-col gap-3","aria-busy":"true","aria-label":"Loading sessions",children:[(0,t.jsx)("div",{className:"h-[76px] rounded-xl bg-surface animate-pulse"}),[0,1,2].map(e=>(0,t.jsx)("div",{className:"ml-[4.25rem] h-24 rounded-xl bg-surface animate-pulse",style:{animationDelay:`${120*e}ms`}},e))]}):w?(0,t.jsx)(b.EmptyState,{icon:"⚡",message:"No activity yet.",subMessage:"Connect an AI agent to see real-time updates here."}):"sessions"===c?(0,t.jsx)(h,{focusSessionId:d,sessions:p??[],events:N,onOpenTask:i,onOpenDoc:l},d??""):(0,t.jsx)(o,{activity:e})]})}var f=e.i(592381);function v(){let{activity:e,liveIndicator:r,rootParam:i,board:o,moveTask:l,openDoc:d}=(0,n.useApp)(),c=(0,a.useSearchParams)().get("session"),[x,m]=(0,s.useState)(null),u=o&&x&&Object.values(o).flat().find(e=>e.id===x)||null;return(0,t.jsxs)("div",{className:"relative flex-1",children:[(0,t.jsx)(g,{activity:e,liveIndicator:r,rootParam:i,onOpenTask:m,onOpenDoc:d,focusSessionId:c}),(0,t.jsx)(f.TaskDetailPanel,{task:u,onClose:()=>m(null),onMove:l})]})}e.s(["default",0,function(){return(0,t.jsx)(s.Suspense,{children:(0,t.jsx)(v,{})})}],66858)},34086,e=>{"use strict";var t=e.i(72345),s=e.i(180338),a=e.i(975157),n=e.i(487486),r=e.i(519455),i=e.i(723528);let o={todo:"text-muted border-border2","in-progress":"text-amber border-amber/30 bg-amber/5",blocked:"text-danger border-danger/30 bg-danger/5",done:"text-teal border-teal/30 bg-teal/5",cancelled:"text-muted border-border line-through"},l={todo:"border-border2 text-muted","in-progress":"border-amber/40 text-amber",blocked:"border-danger/40 text-danger",done:"border-teal/40 text-teal",cancelled:"border-border text-muted"},d={todo:"📋","in-progress":"🔨",blocked:"🚫",done:"✅",cancelled:"❌"},c={todo:["in-progress"],"in-progress":["done","blocked","todo"],blocked:["in-progress","cancelled"],done:["todo"],cancelled:["todo"]};e.s(["STATUS_ICONS",0,d,"TaskCard",0,function({task:e,onMove:x,onOpen:m}){let[u,p]=(0,s.useState)(!1),h=c[e.status]||[];return(0,t.jsxs)("div",{draggable:!0,onDragStart:t=>{t.dataTransfer.setData("taskId",e.id),t.dataTransfer.effectAllowed="move",p(!0)},onDragEnd:()=>p(!1),style:{viewTransitionName:`task-${e.file.replace(/[^a-zA-Z0-9_-]/g,"_")}`},className:(0,a.cn)("group relative bg-surface border rounded-lg p-3 text-sm transition-[border-color,opacity] hover:border-border2",o[e.status]||"border-border",u&&"opacity-50 cursor-grabbing"),children:[(0,t.jsxs)("div",{className:"flex items-center justify-between mb-1.5",children:[(0,t.jsxs)("span",{className:"flex items-center gap-1.5 text-xs font-mono text-muted",children:[e.id,(0,t.jsx)(i.AgentDot,{attach:{kind:"task",id:e.id}})]}),(0,t.jsx)(n.Badge,{variant:"outline",className:(0,a.cn)("text-[10px] h-4 px-1.5 font-normal",l[e.status]),children:"in-progress"===e.status?"active":e.status})]}),(0,t.jsx)("p",{className:"font-medium text-txt text-sm leading-snug mb-2",children:e.title}),e.phase&&(0,t.jsx)("p",{className:"text-xs text-muted mb-2",children:e.phase}),(0,t.jsxs)("div",{className:"flex items-center gap-1 opacity-0 group-hover:opacity-100 transition-opacity",children:[(0,t.jsx)(r.Button,{variant:"ghost",size:"sm",className:"h-6 text-xs px-2",onClick:m,children:"open"}),h.map(s=>(0,t.jsxs)(r.Button,{variant:"ghost",size:"sm",className:"h-6 text-xs px-2",onClick:()=>x(e.id,s),children:[d[s]," ","in-progress"===s?"start":s]},s))]})]})}])},592381,329090,e=>{"use strict";var t=e.i(72345),s=e.i(180338),a=e.i(975157),n=e.i(980376),r=e.i(998822),i=e.i(34086),o=e.i(910172),l=e.i(763371);let d={task_updated:"🔨",decision_logged:"📝",memory_updated:"🧠",doc_read:"📄",session_start:"🤖",roadmap_updated:"🗺️"};function c(e){let t=(Date.now()-new Date(e).getTime())/1e3;return t<60?"just now":t<3600?`${Math.floor(t/60)}m ago`:t<86400?`${Math.floor(t/3600)}h ago`:`${Math.floor(t/86400)}d ago`}function x({taskId:e,onNavigate:a}){let{rootParam:n}=(0,l.useApp)(),r=(0,o.useRouter)(),[i,d]=(0,s.useState)(null);return(0,s.useEffect)(()=>{let t=n?`${n}&`:"?";fetch(`/api/sessions${t}taskId=${encodeURIComponent(e)}`).then(e=>e.json()).then(e=>d(Array.isArray(e)?e:[])).catch(()=>d([]))},[n,e]),(0,t.jsxs)("div",{className:"px-5 py-3 border-b border-border shrink-0",children:[(0,t.jsx)("p",{className:"mb-2 text-xs font-mono uppercase tracking-wide text-muted",children:"Sessions"}),null===i?null:0===i.length?(0,t.jsx)("p",{className:"text-xs text-muted",children:"No recorded sessions"}):(0,t.jsx)("div",{className:"flex max-h-40 flex-col gap-1 overflow-y-auto",children:i.map(e=>(0,t.jsxs)("button",{onClick:()=>{a(),r.push(`/activity?session=${encodeURIComponent(e.id)}`)},className:"flex items-center gap-2 rounded-sm px-2 py-1 text-left text-xs hover:bg-surface2",children:[(0,t.jsx)("span",{children:"ai"===e.actor?"🤖":"👤"}),(0,t.jsx)("span",{className:"shrink-0 font-mono text-muted",children:c(e.start)}),(0,t.jsx)("span",{className:"truncate text-txt",children:e.headline})]},e.id))})]})}e.s(["ActivityEventRow",0,function({event:e}){return(0,t.jsxs)("div",{className:"flex gap-4 pb-4 animate-fade-in",children:[(0,t.jsx)("div",{className:"relative shrink-0 w-8 h-8 rounded-full bg-surface2 border border-border flex items-center justify-center text-sm z-10",children:d[e.type]||"•"}),(0,t.jsxs)("div",{className:"flex-1 pt-1 min-w-0",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2 mb-0.5",children:[(0,t.jsx)("span",{className:"text-sm font-medium text-txt",children:e.title}),"ai"===e.actor&&(0,t.jsx)("span",{className:"text-xs px-1.5 py-0.5 rounded-sm bg-accent/10 text-accent border border-accent/20 font-mono",children:"AI"})]}),e.detail&&(0,t.jsx)("p",{className:"text-xs text-muted truncate",children:e.detail}),(0,t.jsx)("p",{className:"text-xs text-muted/60 mt-0.5 font-mono",children:c(e.timestamp)})]})]})},"timeAgo",0,c],329090);var m=e.i(475850),u=e.i(723528),p=e.i(244267),h=e.i(481523);let b={todo:["in-progress"],"in-progress":["done","blocked","todo"],blocked:["in-progress","cancelled"],done:["todo"],cancelled:["todo"]},g={"in-progress":"start",done:"done",blocked:"blocked",todo:"backlog",cancelled:"cancel"},f={todo:"text-muted border-border2","in-progress":"text-amber border-amber/30 bg-amber/5",blocked:"text-danger border-danger/30 bg-danger/5",done:"text-teal border-teal/30 bg-teal/5",cancelled:"text-muted border-border"};e.s(["TaskDetailPanel",0,function({task:e,onClose:o,onMove:l}){let[d,c]=(0,s.useState)(e);e&&e!==d&&c(e);let v=d&&b[d.status]||[],{chats:j,showAbout:N}=(0,p.useChats)(),k=d?(0,h.chatFor)(j,{kind:"task",id:d.id}):void 0;return(0,t.jsx)(n.Sheet,{open:!!e,onOpenChange:e=>{e||o()},children:(0,t.jsx)(n.SheetContent,{side:"right","aria-describedby":void 0,className:"p-0 gap-0 sm:max-w-[420px] border-border flex flex-col",children:d&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("div",{className:"flex flex-col gap-1 min-w-0 pl-5 pr-12 py-4 border-b border-border shrink-0",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)("span",{className:"font-mono text-xs text-muted",children:d.id}),(0,t.jsxs)("span",{className:(0,a.cn)("text-xs px-1.5 py-0.5 rounded-sm border font-mono",f[d.status]),children:[i.STATUS_ICONS[d.status]," ",d.status]}),(0,t.jsx)(u.AgentMark,{attach:{kind:"task",id:d.id}})]}),(0,t.jsx)(n.SheetTitle,{className:"font-medium text-txt text-sm leading-snug",children:d.title})]}),(0,t.jsxs)("div",{className:"flex flex-wrap items-center gap-2 px-5 py-3 border-b border-border shrink-0",children:[v.map(e=>(0,t.jsxs)("button",{onClick:()=>{l(d.id,e),o()},className:"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:[i.STATUS_ICONS[e]," ",g[e]||e]},e)),(0,t.jsxs)("button",{onClick:()=>{o(),N({kind:"task",id:d.id})},className:"ml-auto inline-flex items-center gap-1.5 text-xs px-2.5 py-1 rounded-sm bg-accent text-white transition-[filter] hover:brightness-110",children:[(0,t.jsx)(m.MessageSquare,{className:"size-3.5"})," ",k?"Open chat":"Chat about task"]})]}),(0,t.jsx)(x,{taskId:d.id,onNavigate:o},d.id),(0,t.jsx)("div",{className:"flex-1 overflow-y-auto px-5 py-4",children:d.raw?(0,t.jsx)(r.MarkdownRenderer,{content:d.raw}):(0,t.jsx)("p",{className:"text-sm text-muted",children:"No content available."})})]})})})}],592381)},723528,e=>{"use strict";var t=e.i(72345),s=e.i(479432),a=e.i(240595),n=e.i(975157),r=e.i(244267);let i={running:"Agent working","needs-answer":"Agent needs you",review:"Plan to review"};e.s(["AgentDot",0,function({attach:e}){let s=(0,r.useItemAgent)(e);if(!s)return null;let o=i[s.status];return(0,t.jsx)("span",{title:o,"aria-label":o,role:"img",className:"inline-flex shrink-0",children:"running"===s.status?(0,t.jsx)(a.Loader2,{className:"size-3 animate-spin text-accent"}):(0,t.jsx)("span",{className:(0,n.cn)("size-1.5 rounded-full animate-pulse-dot","needs-answer"===s.status?"bg-amber":"bg-accent")})})},"AgentMark",0,function({attach:e,className:o}){let l=(0,r.useItemAgent)(e),{show:d}=(0,r.useChats)();if(!l)return null;let c=i[l.status];return(0,t.jsxs)("button",{type:"button",onClick:e=>{e.stopPropagation(),d(l.chatId)},title:`${c} \xb7 open chat`,"aria-label":`${c}, open chat`,className:(0,n.cn)("nodrag inline-flex shrink-0 items-center gap-1 rounded-full border px-1.5 py-px font-mono text-[10px] leading-4 animate-fade-in transition-colors duration-(--duration-fast)","running"===l.status&&"border-accent/50 text-accent hover:bg-accent/10","needs-answer"===l.status&&"border-amber/50 text-amber hover:bg-amber/10","review"===l.status&&"border-accent/50 bg-accent/10 text-accent hover:bg-accent/20",o),children:["running"===l.status?(0,t.jsx)(a.Loader2,{className:"size-3 animate-spin"}):(0,t.jsx)(s.Bot,{className:"size-3"}),c]})}])},635743,e=>{"use strict";var t=e.i(72345),s=e.i(975157);e.s(["EmptyState",0,function({icon:e,message:a,subMessage:n,bordered:r}){return(0,t.jsxs)("div",{className:(0,s.cn)("text-center py-16 text-muted text-sm",r&&"border border-dashed border-border rounded-xl"),children:[(0,t.jsx)("p",{className:"text-3xl mb-3",children:e}),(0,t.jsx)("p",{children:a}),n&&(0,t.jsx)("p",{className:"text-xs mt-1",children:n})]})}])}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,837001,t=>{"use strict";var e=t.i(83790);let s={name:"check",size:24,node:[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]};s.node;let a=(0,e.default)(s);t.s(["Check",0,a],837001)},155515,t=>{"use strict";var e=t.i(83790);let s={name:"plus",size:24,node:[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]]};s.node;let a=(0,e.default)(s);t.s(["Plus",0,a],155515)},458055,t=>{"use strict";var e=t.i(83790);let s={name:"trash",size:24,node:[["path",{d:"M10 11v6",key:"nco0om"}],["path",{d:"M14 11v6",key:"outv1u"}],["path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6",key:"miytrc"}],["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2",key:"e791ji"}]],aliases:["trash-2"]};s.node;let a=(0,e.default)(s);t.s(["Trash2",0,a],458055)},788293,463464,t=>{"use strict";var e=t.i(83790);let s={name:"zap",size:24,node:[["path",{d:"M15.914 4a1.5 1.5 0 00-2.474-1.561l-9 9A1.5 1.5 0 005.5 14h4.002a.5.5 0 01.471.666L8.086 20a1.5 1.5 0 002.475 1.56l9-9A1.5 1.5 0 0018.5 10h-3.997a.5.5 0 01-.472-.667z",key:"1v7up4"}]]};s.node;let a=(0,e.default)(s);t.s(["Zap",0,a],788293);let n={name:"settings",size:24,node:[["path",{d:"M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915",key:"1i5ecw"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]};n.node;let c=(0,e.default)(n);t.s(["Settings",0,c],463464)},528427,t=>{t.v(e=>Promise.all(["static/chunks/3wehcul43z-up.js","static/chunks/090qol92bm3lm.js","static/chunks/16amofje8v-rw.js","static/chunks/2a46a9zwq8i_j.js","static/chunks/3rmz5_d6ve6ut.js","static/chunks/3ezb3p4b8ibl2.js","static/chunks/2uhr8khh963wn.js","static/chunks/2zy289po30i-l.js","static/chunks/2rubn40gv6g5w.js","static/chunks/25-4d7lo7j_n3.js"].map(e=>t.l(e))).then(()=>e(20832)))},476785,t=>{"use strict";var e=t.i(180338);let s=()=>()=>{};t.s(["useOrigin",0,function(){return(0,e.useSyncExternalStore)(s,()=>window.location.origin,()=>"")}])},573009,t=>{"use strict";var e=t.i(243668);t.s(["applyAccent",0,function(t){document.documentElement.setAttribute("data-accent",t)},"applyFontSize",0,function(t){document.documentElement.setAttribute("data-font-size",t)},"applyFonts",0,function(t){let s=document.documentElement;s.setAttribute("data-font-sans",t.fontSans??e.DEFAULT_SETTINGS.fontSans),s.setAttribute("data-font-mono",t.fontMono??e.DEFAULT_SETTINGS.fontMono)},"applyTheme",0,function(t){let e=document.documentElement,s=window.matchMedia("(prefers-color-scheme: dark)").matches;e.classList.toggle("dark","dark"===t||"system"===t&&s)}])}]);
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,609617,e=>{"use strict";var t=e.i(83790);let s={name:"copy",size:24,node:[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]]};s.node;let a=(0,t.default)(s);e.s(["Copy",0,a],609617)},424991,e=>{"use strict";var t=e.i(83790);let s={name:"pencil",size:24,node:[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}],["path",{d:"m15 5 4 4",key:"1mk7zo"}]]};s.node;let a=(0,t.default)(s);e.s(["Pencil",0,a],424991)},785821,e=>{"use strict";var t=e.i(72345),s=e.i(180338),a=e.i(763371),l=e.i(83790);let c={name:"palette",size:24,node:[["path",{d:"M12 22a1 1 0 0 1 0-20 10 9 0 0 1 10 9 5 5 0 0 1-5 5h-2.25a1.75 1.75 0 0 0-1.4 2.8l.3.4a1.75 1.75 0 0 1-1.4 2.8z",key:"e79jfc"}],["circle",{cx:"13.5",cy:"6.5",r:".5",fill:"currentColor",key:"1okk4w"}],["circle",{cx:"17.5",cy:"10.5",r:".5",fill:"currentColor",key:"f64h9f"}],["circle",{cx:"6.5",cy:"12.5",r:".5",fill:"currentColor",key:"qy21gx"}],["circle",{cx:"8.5",cy:"7.5",r:".5",fill:"currentColor",key:"fotxhn"}]]};c.node;let n=(0,l.default)(c),i={name:"type",size:24,node:[["path",{d:"M12 4v16",key:"1654pz"}],["path",{d:"M4 7V5a1 1 0 0 1 1-1h14a1 1 0 0 1 1 1v2",key:"e0r10z"}],["path",{d:"M9 20h6",key:"s66wpe"}]]};i.node;let r=(0,l.default)(i),d={name:"folder-cog",size:24,node:[["path",{d:"M10.3 20H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.98a2 2 0 0 1 1.69.9l.66 1.2A2 2 0 0 0 12 6h8a2 2 0 0 1 2 2v3.3",key:"128dxu"}],["path",{d:"m14.305 19.53.923-.382",key:"3m78fa"}],["path",{d:"m15.228 16.852-.923-.383",key:"npixar"}],["path",{d:"m16.852 15.228-.383-.923",key:"5xggr7"}],["path",{d:"m16.852 20.772-.383.924",key:"dpfhf9"}],["path",{d:"m19.148 15.228.383-.923",key:"1reyyz"}],["path",{d:"m19.53 21.696-.382-.924",key:"1goivc"}],["path",{d:"m20.772 16.852.924-.383",key:"htqkph"}],["path",{d:"m20.772 19.148.924.383",key:"9w9pjp"}],["circle",{cx:"18",cy:"18",r:"3",key:"1xkwt0"}]],aliases:["folder-cog-2"]};d.node;let o=(0,l.default)(d),x={name:"plug",size:24,node:[["path",{d:"M12 22v-5",key:"1ega77"}],["path",{d:"M15 8V2",key:"18g5xt"}],["path",{d:"M17 8a1 1 0 0 1 1 1v4a4 4 0 0 1-4 4h-4a4 4 0 0 1-4-4V9a1 1 0 0 1 1-1z",key:"1xoxul"}],["path",{d:"M9 8V2",key:"14iosj"}]]};x.node;let m=(0,l.default)(x);var h=e.i(788293),u=e.i(479432),p=e.i(463464),b=e.i(975157);let g={name:"moon",size:24,node:[["path",{d:"M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401",key:"kfwtm"}]]};g.node;let f=(0,l.default)(g),v={name:"sun",size:24,node:[["circle",{cx:"12",cy:"12",r:"4",key:"4exip2"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"m4.93 4.93 1.41 1.41",key:"149t6j"}],["path",{d:"m17.66 17.66 1.41 1.41",key:"ptbguv"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"m6.34 17.66-1.41 1.41",key:"1m8zz5"}],["path",{d:"m19.07 4.93-1.41 1.41",key:"1shlcs"}]]};v.node;let j=(0,l.default)(v),N={name:"monitor",size:24,node:[["rect",{width:"20",height:"14",x:"2",y:"3",rx:"2",key:"48i651"}],["line",{x1:"8",x2:"16",y1:"21",y2:"21",key:"1svkeh"}],["line",{x1:"12",x2:"12",y1:"17",y2:"21",key:"vw1qmm"}]]};N.node;let y=(0,l.default)(N);var k=e.i(837001),w=e.i(243668);let C=[{id:"blue",label:"Blue",class:"bg-blue-500"},{id:"purple",label:"Purple",class:"bg-purple-500"},{id:"green",label:"Green",class:"bg-green-500"},{id:"orange",label:"Orange",class:"bg-orange-500"}],S=[{id:"small",label:"Small"},{id:"medium",label:"Medium"},{id:"large",label:"Large"}];function T({settings:e,onSave:s}){return(0,t.jsxs)("div",{className:"space-y-8",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("h2",{className:"text-xl font-semibold text-txt mb-1",children:"Appearance"}),(0,t.jsx)("p",{className:"text-sm text-muted",children:"Customize the look and feel of the app."})]}),(0,t.jsxs)("div",{className:"space-y-3",children:[(0,t.jsx)("label",{className:"block text-sm font-medium text-txt",children:"Theme"}),(0,t.jsx)("div",{className:"grid grid-cols-3 gap-3",children:[{id:"dark",label:"Dark",icon:f},{id:"light",label:"Light",icon:j},{id:"system",label:"System",icon:y}].map(a=>{let l=a.icon,c=e.theme===a.id;return(0,t.jsxs)("button",{onClick:()=>s({...e,theme:a.id}),className:(0,b.cn)("flex flex-col items-center gap-2 p-4 rounded-lg border transition-colors",c?"border-accent bg-accent/10":"border-border hover:border-accent/50"),children:[(0,t.jsx)(l,{className:(0,b.cn)("w-5 h-5",c?"text-accent":"text-muted")}),(0,t.jsx)("span",{className:(0,b.cn)("text-sm",c?"text-accent font-medium":"text-muted"),children:a.label})]},a.id)})})]}),(0,t.jsxs)("div",{className:"space-y-3",children:[(0,t.jsx)("label",{className:"block text-sm font-medium text-txt",children:"Accent Color"}),(0,t.jsx)("div",{className:"flex gap-3",children:C.map(a=>{let l=e.accentColor===a.id;return(0,t.jsx)("button",{onClick:()=>s({...e,accentColor:a.id}),className:(0,b.cn)("w-10 h-10 rounded-full flex items-center justify-center transition-transform",a.class,l?"ring-2 ring-offset-2 ring-offset-bg ring-white scale-110":"hover:scale-105"),title:a.label,children:l&&(0,t.jsx)(k.Check,{className:"w-5 h-5 text-white"})},a.id)})})]}),(0,t.jsxs)("div",{className:"space-y-3",children:[(0,t.jsx)("label",{className:"block text-sm font-medium text-txt",children:"Font Size"}),(0,t.jsx)("div",{className:"flex gap-2",children:S.map(a=>{let l=e.fontSize===a.id;return(0,t.jsx)("button",{onClick:()=>s({...e,fontSize:a.id}),className:(0,b.cn)("px-4 py-2 rounded-lg border text-sm transition-colors",l?"border-accent bg-accent/10 text-accent font-medium":"border-border text-muted hover:border-accent/50"),children:a.label},a.id)})})]}),[{key:"fontSans",label:"Interface Font",fonts:w.SANS_FONTS,fallback:"system-ui",sample:"Ship the roadmap by Friday"},{key:"fontMono",label:"Code Font",fonts:w.MONO_FONTS,fallback:"ui-monospace, Menlo, Consolas, monospace",sample:"const id = 0O1lI;"}].map(a=>(0,t.jsxs)("div",{className:"space-y-3",children:[(0,t.jsx)("label",{className:"block text-sm font-medium text-txt",children:a.label}),(0,t.jsx)("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-2",children:a.fonts.map(l=>{let c=e[a.key]===l.id;return(0,t.jsxs)("button",{onClick:()=>s({...e,[a.key]:l.id}),className:(0,b.cn)("text-left p-3 rounded-lg border transition-colors",c?"border-accent bg-accent/10":"border-border hover:border-accent/50"),children:[(0,t.jsx)("div",{className:"text-base text-txt truncate",style:{fontFamily:"system"===l.id?a.fallback:`var(--font-${l.id})`},children:a.sample}),(0,t.jsx)("div",{className:(0,b.cn)("mt-1 text-xs",c?"text-accent font-medium":"text-txt"),children:l.label}),(0,t.jsx)("div",{className:"text-xs text-muted",children:l.note})]},l.id)})})]},a.key))]})}let A=[{value:0,label:"Off"},{value:5,label:"5 seconds"},{value:10,label:"10 seconds"},{value:30,label:"30 seconds"}],I=[{id:"split",label:"Split View"},{id:"tab",label:"Tab View"},{id:"preview",label:"Preview Only"}];function _({settings:e,onSave:s}){let a=(t,a)=>{s({...e,editor:{...e.editor,[t]:a}})};return(0,t.jsxs)("div",{className:"space-y-8",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("h2",{className:"text-xl font-semibold text-txt mb-1",children:"Editor"}),(0,t.jsx)("p",{className:"text-sm text-muted",children:"Configure the markdown editor behavior."})]}),(0,t.jsxs)("div",{className:"space-y-3",children:[(0,t.jsx)("label",{className:"block text-sm font-medium text-txt",children:"Auto-save"}),(0,t.jsx)("div",{className:"flex flex-wrap gap-2",children:A.map(s=>{let l=e.editor.autoSave===s.value;return(0,t.jsx)("button",{onClick:()=>a("autoSave",s.value),className:(0,b.cn)("px-4 py-2 rounded-lg border text-sm transition-colors",l?"border-accent bg-accent/10 text-accent font-medium":"border-border text-muted hover:border-accent/50"),children:s.label},s.value)})})]}),(0,t.jsxs)("div",{className:"space-y-3",children:[(0,t.jsx)("label",{className:"block text-sm font-medium text-txt",children:"Preview Mode"}),(0,t.jsx)("div",{className:"flex flex-wrap gap-2",children:I.map(s=>{let l=e.editor.previewMode===s.id;return(0,t.jsx)("button",{onClick:()=>a("previewMode",s.id),className:(0,b.cn)("px-4 py-2 rounded-lg border text-sm transition-colors",l?"border-accent bg-accent/10 text-accent font-medium":"border-border text-muted hover:border-accent/50"),children:s.label},s.id)})})]}),(0,t.jsxs)("div",{className:"space-y-4",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("div",{className:"text-sm font-medium text-txt",children:"Word Wrap"}),(0,t.jsx)("div",{className:"text-xs text-muted",children:"Wrap long lines in the editor"})]}),(0,t.jsx)("button",{onClick:()=>a("wordWrap",!e.editor.wordWrap),className:(0,b.cn)("w-11 h-6 rounded-full transition-colors relative",e.editor.wordWrap?"bg-accent":"bg-border"),children:(0,t.jsx)("span",{className:(0,b.cn)("absolute top-1 w-4 h-4 rounded-full bg-white transition-transform",e.editor.wordWrap?"left-6":"left-1")})})]}),(0,t.jsxs)("div",{className:"flex items-center justify-between",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("div",{className:"text-sm font-medium text-txt",children:"Line Numbers"}),(0,t.jsx)("div",{className:"text-xs text-muted",children:"Show line numbers in the editor"})]}),(0,t.jsx)("button",{onClick:()=>a("lineNumbers",!e.editor.lineNumbers),className:(0,b.cn)("w-11 h-6 rounded-full transition-colors relative",e.editor.lineNumbers?"bg-accent":"bg-border"),children:(0,t.jsx)("span",{className:(0,b.cn)("absolute top-1 w-4 h-4 rounded-full bg-white transition-transform",e.editor.lineNumbers?"left-6":"left-1")})})]})]})]})}let z=[{value:0,label:"Off"},{value:5,label:"5 seconds"},{value:10,label:"10 seconds"},{value:30,label:"30 seconds"}];function M({settings:e,onSave:s}){let a=(t,a)=>{s({...e,project:{...e.project,[t]:a}})};return(0,t.jsxs)("div",{className:"space-y-8",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("h2",{className:"text-xl font-semibold text-txt mb-1",children:"Project"}),(0,t.jsx)("p",{className:"text-sm text-muted",children:"Configure project-level settings."})]}),(0,t.jsxs)("div",{className:"space-y-3",children:[(0,t.jsx)("label",{className:"block text-sm font-medium text-txt",children:"Auto-refresh Interval"}),(0,t.jsx)("p",{className:"text-xs text-muted",children:"How often to check for changes in the project files."}),(0,t.jsx)("div",{className:"flex flex-wrap gap-2",children:z.map(s=>{let l=e.project.autoRefresh===s.value;return(0,t.jsx)("button",{onClick:()=>a("autoRefresh",s.value),className:(0,b.cn)("px-4 py-2 rounded-lg border text-sm transition-colors",l?"border-accent bg-accent/10 text-accent font-medium":"border-border text-muted hover:border-accent/50"),children:s.label},s.value)})})]}),(0,t.jsxs)("div",{className:"flex items-center justify-between",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("div",{className:"text-sm font-medium text-txt",children:"Show Hidden Files"}),(0,t.jsx)("div",{className:"text-xs text-muted",children:"Display files starting with a dot"})]}),(0,t.jsx)("button",{onClick:()=>a("showHidden",!e.project.showHidden),className:(0,b.cn)("w-11 h-6 rounded-full transition-colors relative",e.project.showHidden?"bg-accent":"bg-border"),children:(0,t.jsx)("span",{className:(0,b.cn)("absolute top-1 w-4 h-4 rounded-full bg-white transition-transform",e.project.showHidden?"left-6":"left-1")})})]})]})}var P=e.i(765470),O=e.i(609617),F=e.i(240595),D=e.i(793479),E=e.i(476785);let L={"claude-code":{name:"Claude Code",config:`{
|
|
2
|
+
"mcpServers": {
|
|
3
|
+
"vibedoc": {
|
|
4
|
+
"url": "{{ENDPOINT}}"
|
|
5
|
+
}
|
|
6
|
+
}
|
|
7
|
+
}`,path:"~/.claude/claude.json"},cursor:{name:"Cursor",config:`{
|
|
8
|
+
"mcp": {
|
|
9
|
+
"servers": {
|
|
10
|
+
"vibedoc": {
|
|
11
|
+
"url": "{{ENDPOINT}}"
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
}`,path:".cursor/mcp.json"},windsurf:{name:"Windsurf",config:`{
|
|
16
|
+
"mcpServers": {
|
|
17
|
+
"vibedoc": {
|
|
18
|
+
"url": "{{ENDPOINT}}"
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
}`,path:".windsurf/mcp.json"}};function U({settings:e,onSave:a}){let[l,c]=(0,s.useState)(!1),[n,i]=(0,s.useState)(null),[r,d]=(0,s.useState)(null),o=(0,w.resolveMcpEndpoint)(e.mcp.endpoint,(0,E.useOrigin)()),x=async()=>{c(!0),i(null);try{(await fetch(o,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({jsonrpc:"2.0",id:1,method:"tools/list"})})).ok?i("success"):i("error")}catch{i("error")}c(!1)},h=async e=>{let t=L[e].config.replace("{{ENDPOINT}}",o);await navigator.clipboard.writeText(t),d(e),setTimeout(()=>d(null),2e3)};return(0,t.jsxs)("div",{className:"space-y-8",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("h2",{className:"text-xl font-semibold text-txt mb-1",children:"MCP Connection"}),(0,t.jsx)("p",{className:"text-sm text-muted",children:"Configure the Model Context Protocol server for AI agents."})]}),(0,t.jsxs)("div",{className:"space-y-3",children:[(0,t.jsx)("label",{className:"block text-sm font-medium text-txt",children:"MCP Endpoint"}),(0,t.jsxs)("div",{className:"flex gap-2",children:[(0,t.jsx)(D.Input,{value:o,onChange:t=>{var s;return s=t.target.value,void a({...e,mcp:{...e.mcp,endpoint:s}})},className:"bg-surface2 font-mono text-sm"}),(0,t.jsxs)("button",{onClick:x,disabled:l,className:"px-4 py-2 bg-accent text-white rounded-lg text-sm font-medium hover:bg-accent/90 transition-colors disabled:opacity-50 flex items-center gap-2",children:[l?(0,t.jsx)(F.Loader2,{className:"w-4 h-4 animate-spin"}):(0,t.jsx)(m,{className:"w-4 h-4"}),"Test"]})]}),n&&(0,t.jsx)("div",{className:(0,b.cn)("flex items-center gap-2 text-sm","success"===n?"text-green-400":"text-red-400"),children:"success"===n?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(k.Check,{className:"w-4 h-4"}),"Connection successful"]}):(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(P.X,{className:"w-4 h-4"}),"Connection failed"]})})]}),(0,t.jsxs)("div",{className:"space-y-3",children:[(0,t.jsx)("label",{className:"block text-sm font-medium text-txt",children:"Agent Configuration"}),(0,t.jsx)("p",{className:"text-xs text-muted",children:"Copy the configuration for your coding agent:"}),(0,t.jsx)("div",{className:"space-y-2",children:Object.entries(L).map(([e,s])=>(0,t.jsxs)("div",{className:"flex items-center justify-between p-3 border border-border rounded-lg",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("div",{className:"text-sm font-medium text-txt",children:s.name}),(0,t.jsx)("div",{className:"text-xs text-muted font-mono",children:s.path})]}),(0,t.jsx)("button",{onClick:()=>h(e),className:(0,b.cn)("flex items-center gap-2 px-3 py-1.5 rounded-lg text-sm transition-colors",r===e?"bg-green-500/20 text-green-400":"bg-surface2 text-muted hover:text-txt"),children:r===e?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(k.Check,{className:"w-3.5 h-3.5"}),"Copied"]}):(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(O.Copy,{className:"w-3.5 h-3.5"}),"Copy"]})})]},e))})]})]})}var V=e.i(155515),W=e.i(424991),H=e.i(458055);let $=["vibedoc_read_doc","vibedoc_write_doc","vibedoc_search_docs","vibedoc_list_docs","vibedoc_get_status","vibedoc_list_tasks","vibedoc_update_task","vibedoc_read_memory","vibedoc_update_memory"],R=["🔧","📝","🧪","🔍","📊","🔒","⚡","🎯","💡","🚀"];function B({skills:e,onSave:a}){let[l,c]=(0,s.useState)(null),[n,i]=(0,s.useState)(null),[r,d]=(0,s.useState)(!1),o=()=>{c(null),i(null),d(!1)},x=()=>{n&&n.name.trim()&&(r?a([...e,n]):a(e.map(e=>e.id===n.id?n:e)),o())},m=e=>{if(!n)return;let t=n.tools.includes(e)?n.tools.filter(t=>t!==e):[...n.tools,e];i({...n,tools:t})};return(0,t.jsxs)("div",{className:"space-y-6",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("h2",{className:"text-xl font-semibold text-txt mb-1",children:"Skills"}),(0,t.jsx)("p",{className:"text-sm text-muted",children:"Reusable capabilities for AI agents."})]}),(0,t.jsxs)("button",{onClick:()=>{let e={id:`skill-${Date.now()}`,name:"",description:"",trigger:"/",prompt:"",tools:[],icon:"⚡"};c(e.id),i(e),d(!0)},className:"flex items-center gap-2 px-3 py-2 bg-accent text-white rounded-lg text-sm font-medium hover:bg-accent/90 transition-colors",children:[(0,t.jsx)(V.Plus,{className:"w-4 h-4"}),"Add Skill"]})]}),(0,t.jsxs)("div",{className:"space-y-3",children:[e.map(s=>(0,t.jsx)("div",{children:l===s.id&&n?(0,t.jsxs)("div",{className:"border border-accent rounded-lg p-4 space-y-4 bg-accent/5",children:[(0,t.jsxs)("div",{className:"flex items-center gap-3",children:[(0,t.jsx)("select",{value:n.icon||"⚡",onChange:e=>i({...n,icon:e.target.value}),className:"w-12 h-10 text-center text-xl bg-surface2 border border-border rounded-lg",children:R.map(e=>(0,t.jsx)("option",{value:e,children:e},e))}),(0,t.jsx)(D.Input,{value:n.name,onChange:e=>i({...n,name:e.target.value}),placeholder:"Skill name",className:"bg-surface2"})]}),(0,t.jsx)(D.Input,{value:n.description,onChange:e=>i({...n,description:e.target.value}),placeholder:"Description",className:"bg-surface2"}),(0,t.jsx)("div",{className:"flex gap-3",children:(0,t.jsxs)("div",{className:"flex-1",children:[(0,t.jsx)("label",{className:"text-xs text-muted mb-1 block",children:"Trigger"}),(0,t.jsx)(D.Input,{value:n.trigger,onChange:e=>i({...n,trigger:e.target.value}),placeholder:"/command",className:"bg-surface2 font-mono"})]})}),(0,t.jsxs)("div",{children:[(0,t.jsx)("label",{className:"text-xs text-muted mb-1 block",children:"System Prompt"}),(0,t.jsx)("textarea",{value:n.prompt,onChange:e=>i({...n,prompt:e.target.value}),placeholder:"Instructions for the AI when this skill is activated...",rows:4,className:"w-full px-3 py-2 bg-surface2 border border-border rounded-lg text-sm resize-none"})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("label",{className:"text-xs text-muted mb-2 block",children:"Available Tools"}),(0,t.jsx)("div",{className:"flex flex-wrap gap-2",children:$.map(e=>(0,t.jsx)("button",{onClick:()=>m(e),className:(0,b.cn)("px-2 py-1 rounded-sm text-xs font-mono transition-colors",n.tools.includes(e)?"bg-accent/20 text-accent":"bg-surface2 text-muted hover:text-txt"),children:e.replace("vibedoc_","")},e))})]}),(0,t.jsxs)("div",{className:"flex justify-end gap-2",children:[(0,t.jsx)("button",{onClick:o,className:"px-3 py-1.5 text-sm text-muted hover:text-txt transition-colors",children:"Cancel"}),(0,t.jsxs)("button",{onClick:x,disabled:!n.name.trim(),className:"flex items-center gap-2 px-3 py-1.5 bg-accent text-white rounded-lg text-sm font-medium hover:bg-accent/90 transition-colors disabled:opacity-50",children:[(0,t.jsx)(k.Check,{className:"w-4 h-4"}),"Save"]})]})]}):(0,t.jsxs)("div",{className:"flex items-start gap-3 p-4 border border-border rounded-lg hover:border-accent/30 transition-colors group",children:[(0,t.jsx)("div",{className:"w-10 h-10 rounded-lg bg-surface2 flex items-center justify-center text-xl shrink-0",children:s.icon||"⚡"}),(0,t.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)("span",{className:"font-medium text-txt",children:s.name}),(0,t.jsx)("code",{className:"text-xs bg-surface2 px-1.5 py-0.5 rounded-sm text-accent",children:s.trigger})]}),(0,t.jsx)("p",{className:"text-sm text-muted mt-0.5",children:s.description}),s.tools.length>0&&(0,t.jsx)("div",{className:"flex flex-wrap gap-1 mt-2",children:s.tools.map(e=>(0,t.jsx)("span",{className:"text-xs bg-surface2 px-1.5 py-0.5 rounded-sm text-muted",children:e.replace("vibedoc_","")},e))})]}),(0,t.jsxs)("div",{className:"flex gap-1 opacity-0 group-hover:opacity-100 transition-opacity",children:[(0,t.jsx)("button",{onClick:()=>{c(s.id),i({...s}),d(!1)},className:"p-1.5 rounded-sm hover:bg-surface2 text-muted hover:text-txt transition-colors",children:(0,t.jsx)(W.Pencil,{className:"w-4 h-4"})}),(0,t.jsx)("button",{onClick:()=>{var t;return t=s.id,void(confirm("Delete this skill?")&&a(e.filter(e=>e.id!==t)))},className:"p-1.5 rounded-sm hover:bg-red-500/10 text-muted hover:text-red-400 transition-colors",children:(0,t.jsx)(H.Trash2,{className:"w-4 h-4"})})]})]})},s.id)),r&&n&&(0,t.jsxs)("div",{className:"border border-accent rounded-lg p-4 space-y-4 bg-accent/5",children:[(0,t.jsxs)("div",{className:"flex items-center gap-3",children:[(0,t.jsx)("select",{value:n.icon||"⚡",onChange:e=>i({...n,icon:e.target.value}),className:"w-12 h-10 text-center text-xl bg-surface2 border border-border rounded-lg",children:R.map(e=>(0,t.jsx)("option",{value:e,children:e},e))}),(0,t.jsx)(D.Input,{value:n.name,onChange:e=>i({...n,name:e.target.value}),placeholder:"Skill name",className:"bg-surface2"})]}),(0,t.jsx)(D.Input,{value:n.description,onChange:e=>i({...n,description:e.target.value}),placeholder:"Description",className:"bg-surface2"}),(0,t.jsx)("div",{className:"flex gap-3",children:(0,t.jsxs)("div",{className:"flex-1",children:[(0,t.jsx)("label",{className:"text-xs text-muted mb-1 block",children:"Trigger"}),(0,t.jsx)(D.Input,{value:n.trigger,onChange:e=>i({...n,trigger:e.target.value}),placeholder:"/command",className:"bg-surface2 font-mono"})]})}),(0,t.jsxs)("div",{children:[(0,t.jsx)("label",{className:"text-xs text-muted mb-1 block",children:"System Prompt"}),(0,t.jsx)("textarea",{value:n.prompt,onChange:e=>i({...n,prompt:e.target.value}),placeholder:"Instructions for the AI when this skill is activated...",rows:4,className:"w-full px-3 py-2 bg-surface2 border border-border rounded-lg text-sm resize-none"})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("label",{className:"text-xs text-muted mb-2 block",children:"Available Tools"}),(0,t.jsx)("div",{className:"flex flex-wrap gap-2",children:$.map(e=>(0,t.jsx)("button",{onClick:()=>m(e),className:(0,b.cn)("px-2 py-1 rounded-sm text-xs font-mono transition-colors",n.tools.includes(e)?"bg-accent/20 text-accent":"bg-surface2 text-muted hover:text-txt"),children:e.replace("vibedoc_","")},e))})]}),(0,t.jsxs)("div",{className:"flex justify-end gap-2",children:[(0,t.jsx)("button",{onClick:o,className:"px-3 py-1.5 text-sm text-muted hover:text-txt transition-colors",children:"Cancel"}),(0,t.jsxs)("button",{onClick:x,disabled:!n.name.trim(),className:"flex items-center gap-2 px-3 py-1.5 bg-accent text-white rounded-lg text-sm font-medium hover:bg-accent/90 transition-colors disabled:opacity-50",children:[(0,t.jsx)(k.Check,{className:"w-4 h-4"}),"Save"]})]})]}),0===e.length&&!r&&(0,t.jsxs)("div",{className:"text-center py-8 text-muted",children:[(0,t.jsx)(h.Zap,{className:"w-10 h-10 mx-auto mb-3 opacity-30"}),(0,t.jsx)("p",{className:"text-sm",children:"No skills configured"}),(0,t.jsx)("p",{className:"text-xs mt-1",children:"Add a skill to give your agents capabilities"})]})]})]})}let G=["🤖","📚","🔒","🧪","📝","🔧","💡","🎯","🚀","⚡"];function q({agents:e,skills:a,onSave:l}){let[c,n]=(0,s.useState)(null),[i,r]=(0,s.useState)(null),[d,o]=(0,s.useState)(!1),x=()=>{n(null),r(null),o(!1)},m=()=>{i&&i.name.trim()&&(d?l([...e,i]):l(e.map(e=>e.id===i.id?i:e)),x())},h=e=>(0,t.jsxs)("div",{className:"border border-accent rounded-lg p-4 space-y-4 bg-accent/5",children:[(0,t.jsxs)("div",{className:"flex items-center gap-3",children:[(0,t.jsx)("select",{value:e.icon,onChange:t=>r({...e,icon:t.target.value}),className:"w-12 h-10 text-center text-xl bg-surface2 border border-border rounded-lg",children:G.map(e=>(0,t.jsx)("option",{value:e,children:e},e))}),(0,t.jsx)(D.Input,{value:e.name,onChange:t=>r({...e,name:t.target.value}),placeholder:"Agent name",className:"bg-surface2"})]}),(0,t.jsx)(D.Input,{value:e.description,onChange:t=>r({...e,description:t.target.value}),placeholder:"Description",className:"bg-surface2"}),(0,t.jsxs)("div",{children:[(0,t.jsx)("label",{className:"text-xs text-muted mb-2 block",children:"Assigned Skills"}),(0,t.jsxs)("div",{className:"flex flex-wrap gap-2",children:[a.map(s=>(0,t.jsxs)("button",{onClick:()=>(e=>{if(!i)return;let t=i.skills.includes(e)?i.skills.filter(t=>t!==e):[...i.skills,e];r({...i,skills:t})})(s.id),className:(0,b.cn)("flex items-center gap-1.5 px-2.5 py-1.5 rounded-lg text-sm transition-colors",e.skills.includes(s.id)?"bg-accent/20 text-accent":"bg-surface2 text-muted hover:text-txt"),children:[(0,t.jsx)("span",{children:s.icon||"⚡"}),s.name]},s.id)),0===a.length&&(0,t.jsx)("span",{className:"text-xs text-muted",children:"No skills available. Create skills first."})]})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("label",{className:"text-xs text-muted mb-1 block",children:"Custom System Prompt"}),(0,t.jsx)("textarea",{value:e.prompt,onChange:t=>r({...e,prompt:t.target.value}),placeholder:"Additional instructions for this agent...",rows:3,className:"w-full px-3 py-2 bg-surface2 border border-border rounded-lg text-sm resize-none"})]}),(0,t.jsxs)("div",{className:"flex items-center justify-between",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)("button",{onClick:()=>r({...e,active:!e.active}),className:(0,b.cn)("w-11 h-6 rounded-full transition-colors relative",e.active?"bg-accent":"bg-border"),children:(0,t.jsx)("span",{className:(0,b.cn)("absolute top-1 w-4 h-4 rounded-full bg-white transition-transform",e.active?"left-6":"left-1")})}),(0,t.jsx)("span",{className:"text-sm text-muted",children:e.active?"Active":"Inactive"})]}),(0,t.jsxs)("div",{className:"flex gap-2",children:[(0,t.jsx)("button",{onClick:x,className:"px-3 py-1.5 text-sm text-muted hover:text-txt transition-colors",children:"Cancel"}),(0,t.jsxs)("button",{onClick:m,disabled:!e.name.trim(),className:"flex items-center gap-2 px-3 py-1.5 bg-accent text-white rounded-lg text-sm font-medium hover:bg-accent/90 transition-colors disabled:opacity-50",children:[(0,t.jsx)(k.Check,{className:"w-4 h-4"}),"Save"]})]})]})]});return(0,t.jsxs)("div",{className:"space-y-6",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("h2",{className:"text-xl font-semibold text-txt mb-1",children:"Agents"}),(0,t.jsx)("p",{className:"text-sm text-muted",children:"AI agent profiles with assigned skills."})]}),(0,t.jsxs)("button",{onClick:()=>{let e={id:`agent-${Date.now()}`,name:"",icon:"🤖",description:"",skills:[],prompt:"",active:!0};n(e.id),r(e),o(!0)},className:"flex items-center gap-2 px-3 py-2 bg-accent text-white rounded-lg text-sm font-medium hover:bg-accent/90 transition-colors",children:[(0,t.jsx)(V.Plus,{className:"w-4 h-4"}),"Add Agent"]})]}),(0,t.jsxs)("div",{className:"space-y-3",children:[e.map(s=>(0,t.jsx)("div",{children:c===s.id&&i?h(i):(0,t.jsxs)("div",{className:(0,b.cn)("flex items-start gap-3 p-4 border rounded-lg transition-colors group",s.active?"border-border hover:border-accent/30":"border-border/50 opacity-60"),children:[(0,t.jsx)("div",{className:"w-10 h-10 rounded-lg bg-surface2 flex items-center justify-center text-xl shrink-0",children:s.icon}),(0,t.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)("span",{className:"font-medium text-txt",children:s.name}),!s.active&&(0,t.jsx)("span",{className:"text-xs bg-surface2 px-1.5 py-0.5 rounded-sm text-muted",children:"Inactive"})]}),(0,t.jsx)("p",{className:"text-sm text-muted mt-0.5",children:s.description}),s.skills.length>0&&(0,t.jsx)("div",{className:"flex flex-wrap gap-1 mt-2",children:s.skills.map(e=>{let s=a.find(t=>t.id===e);return s?(0,t.jsxs)("span",{className:"flex items-center gap-1 text-xs bg-surface2 px-1.5 py-0.5 rounded-sm text-muted",children:[s.icon," ",s.name]},e):null})})]}),(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)("button",{onClick:()=>{var t;return t=s.id,void l(e.map(e=>e.id===t?{...e,active:!e.active}:e))},className:(0,b.cn)("w-9 h-5 rounded-full transition-colors relative",s.active?"bg-accent":"bg-border"),children:(0,t.jsx)("span",{className:(0,b.cn)("absolute top-0.5 w-4 h-4 rounded-full bg-white transition-transform",s.active?"left-4":"left-0.5")})}),(0,t.jsxs)("div",{className:"flex gap-1 opacity-0 group-hover:opacity-100 transition-opacity",children:[(0,t.jsx)("button",{onClick:()=>{n(s.id),r({...s}),o(!1)},className:"p-1.5 rounded-sm hover:bg-surface2 text-muted hover:text-txt transition-colors",children:(0,t.jsx)(W.Pencil,{className:"w-4 h-4"})}),(0,t.jsx)("button",{onClick:()=>{var t;return t=s.id,void(confirm("Delete this agent?")&&l(e.filter(e=>e.id!==t)))},className:"p-1.5 rounded-sm hover:bg-red-500/10 text-muted hover:text-red-400 transition-colors",children:(0,t.jsx)(H.Trash2,{className:"w-4 h-4"})})]})]})]})},s.id)),d&&i&&h(i),0===e.length&&!d&&(0,t.jsxs)("div",{className:"text-center py-8 text-muted",children:[(0,t.jsx)(u.Bot,{className:"w-10 h-10 mx-auto mb-3 opacity-30"}),(0,t.jsx)("p",{className:"text-sm",children:"No agents configured"}),(0,t.jsx)("p",{className:"text-xs mt-1",children:"Add an agent to define AI personas with skills"})]})]})]})}var J=e.i(573009);let K=[{id:"appearance",label:"Appearance",icon:n},{id:"editor",label:"Editor",icon:r},{id:"project",label:"Project",icon:o},{id:"mcp",label:"MCP",icon:m},{id:"skills",label:"Skills",icon:h.Zap},{id:"agents",label:"Agents",icon:u.Bot}];e.s(["default",0,function(){let{rootParam:e,setEditorSettings:l,setAutoRefreshSeconds:c}=(0,a.useApp)(),[n,i]=(0,s.useState)("appearance"),[r,d]=(0,s.useState)(w.DEFAULT_SETTINGS),[o,x]=(0,s.useState)(w.DEFAULT_SKILLS),[m,h]=(0,s.useState)(w.DEFAULT_AGENTS),[u,g]=(0,s.useState)(!0),[f,v]=(0,s.useState)(!1),j=(0,s.useCallback)(async()=>{try{let t=await fetch(`/api/settings${e}&type=all`),s=await t.json();d({...w.DEFAULT_SETTINGS,...s.settings}),x(s.skills||w.DEFAULT_SKILLS),h(s.agents||w.DEFAULT_AGENTS)}catch{}g(!1)},[e]);(0,s.useEffect)(()=>{j()},[j]);let N=async t=>{v(!0),d(t);try{await fetch(`/api/settings${e}&type=settings`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)}),(0,J.applyTheme)(t.theme),(0,J.applyAccent)(t.accentColor),(0,J.applyFontSize)(t.fontSize),(0,J.applyFonts)(t),l(t.editor),c(t.project?.autoRefresh??0)}catch{}v(!1)},y=async t=>{v(!0),x(t);try{await fetch(`/api/settings${e}&type=skills`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)})}catch{}v(!1)},k=async t=>{v(!0),h(t);try{await fetch(`/api/settings${e}&type=agents`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)})}catch{}v(!1)};return u?(0,t.jsx)("div",{className:"flex items-center justify-center h-full",children:(0,t.jsx)("div",{className:"text-muted",children:"Loading settings..."})}):(0,t.jsxs)("div",{className:"flex h-full",children:[(0,t.jsxs)("aside",{className:"w-56 border-r border-border bg-sidebar shrink-0",children:[(0,t.jsx)("div",{className:"p-4 border-b border-border",children:(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)(p.Settings,{className:"w-5 h-5 text-accent"}),(0,t.jsx)("h1",{className:"font-semibold text-txt",children:"Settings"})]})}),(0,t.jsx)("nav",{className:"p-2",children:K.map(e=>{let s=e.icon;return(0,t.jsxs)("button",{onClick:()=>i(e.id),className:(0,b.cn)("w-full flex items-center gap-3 px-3 py-2 rounded-lg text-sm transition-colors",n===e.id?"bg-accent/10 text-accent font-medium":"text-muted hover:text-txt hover:bg-surface2"),children:[(0,t.jsx)(s,{className:"w-4 h-4"}),e.label]},e.id)})})]}),(0,t.jsx)("div",{className:"flex-1 overflow-y-auto",children:(0,t.jsxs)("div",{className:"max-w-2xl mx-auto p-6",children:[f&&(0,t.jsx)("div",{className:"fixed top-4 right-4 bg-accent text-white px-3 py-1.5 rounded-lg text-sm shadow-lg",children:"Saving..."}),"appearance"===n&&(0,t.jsx)(T,{settings:r,onSave:N}),"editor"===n&&(0,t.jsx)(_,{settings:r,onSave:N}),"project"===n&&(0,t.jsx)(M,{settings:r,onSave:N}),"mcp"===n&&(0,t.jsx)(U,{settings:r,onSave:N}),"skills"===n&&(0,t.jsx)(B,{skills:o,onSave:y}),"agents"===n&&(0,t.jsx)(q,{agents:m,skills:o,onSave:k})]})})]})}],785821)}]);
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,298367,e=>{"use strict";var t=e.i(72345),s=e.i(180338),a=e.i(211672),n=e.i(301702),r=e.i(496385),l=e.i(479432),i=e.i(406952),o=e.i(83790);let d={name:"list-tree",size:24,node:[["path",{d:"M8 5h13",key:"1pao27"}],["path",{d:"M13 12h8",key:"h98zly"}],["path",{d:"M13 19h8",key:"c3s6r1"}],["path",{d:"M3 10a2 2 0 0 0 2 2h3",key:"1npucw"}],["path",{d:"M3 5v12a2 2 0 0 0 2 2h3",key:"x1gjn2"}]]};d.node;let c=(0,o.default)(d);var u=e.i(155515),x=e.i(885600),m=e.i(910172),p=e.i(763371),h=e.i(635743),f=e.i(519455);let g=e=>"done"===e||"cancelled"===e;function b(e,t){let s=new Map(t.map(e=>[e.id,e])),a=e.tasks.map(e=>s.get(e)).filter(e=>!!e),n=e=>[...new Set((e.dependsOn.match(/\bT\d+\b/gi)??[]).map(e=>e.toUpperCase()))].filter(e=>{let t=s.get(e);return!t||!g(t.status)});for(let e of a)if("todo"===e.status&&!n(e).length)return{kind:"ready",taskId:e.id};if(a.every(e=>g(e.status)))return{kind:"finished"};let r=new Set(e.tasks),l=new Map,i=e=>{if(l.has(e))return l.get(e)??!1;l.set(e,!1);let t=s.get(e),a=!!t&&"blocked"!==t.status&&("todo"!==t.status||r.has(e)&&n(t).every(i));return l.set(e,a),a},o=[];for(let t of e.tasks){let e=s.get(t);if(e){if("in-progress"===e.status)o.push({taskId:t,reason:`${t} is in progress (claimed)`});else if("blocked"===e.status)o.push({taskId:t,reason:`${t} is blocked`});else if("todo"===e.status){let a=n(e).map(e=>`${e} (${s.get(e)?.status??"missing"})`);o.push({taskId:t,reason:`${t} waits on ${a.join(", ")}`})}}else o.push({taskId:t,reason:`${t} has no task file`})}return{kind:"waiting",waiting:o,needsHuman:o.every(e=>!i(e.taskId))}}var j=e.i(692172),N=e.i(975157),k=e.i(956555),v=e.i(651581),y=e.i(723528),w=e.i(450768);function S({items:e,today:a,onSelect:n,progressById:r}){let l=new Map(e.filter(e=>null===e.parent).sort((e,t)=>e.order-t.order).map((e,t)=>[e.id,t+1])),i=(0,s.useMemo)(()=>(0,w.buildTimeline)(e,a),[e,a]),o=(0,s.useRef)(null);(0,s.useEffect)(()=>{let e=o.current;e&&(e.scrollLeft=Math.max(0,i.todayX-(e.clientWidth-200)/3))},[i.todayX]);let d=i.lanes.some(e=>e.markers.length>0);return(0,t.jsxs)("div",{className:"flex flex-1 min-h-0 flex-col",children:[(0,t.jsx)("div",{ref:o,className:"relative flex-1 min-h-0 overflow-auto",children:(0,t.jsxs)("div",{className:"relative",style:{width:200+i.width,minHeight:"100%"},children:[(0,t.jsxs)("div",{className:"pointer-events-none absolute inset-y-0",style:{left:200,width:i.width},children:[i.months.map(e=>(0,t.jsx)("div",{className:"absolute inset-y-0 border-l border-border",style:{left:e.x}},e.x)),(0,t.jsx)("div",{className:"absolute inset-y-0 left-0 bg-surface/50",style:{width:i.todayX}}),(0,t.jsx)("div",{className:"absolute inset-y-0 w-px bg-accent shadow-[0_0_12px_rgb(var(--rgb-accent)/0.8)]",style:{left:i.todayX},children:(0,t.jsx)("span",{className:"absolute -translate-x-1/2 rounded-full bg-accent px-2 py-0.5 font-mono text-[10px] uppercase tracking-wider text-white",style:{top:42},children:"Today"})})]}),(0,t.jsxs)("div",{className:"sticky top-0 z-20 flex border-b border-border bg-bg",style:{height:36},children:[(0,t.jsx)("div",{className:"sticky left-0 z-10 shrink-0 bg-bg",style:{width:200}}),(0,t.jsx)("div",{className:"relative",children:i.months.map(e=>(0,t.jsx)("span",{className:"absolute top-3 whitespace-nowrap pl-2 font-mono text-[10px] uppercase tracking-widest text-muted",style:{left:e.x},children:e.label},e.x))})]}),i.lanes.map(e=>(0,t.jsxs)("div",{className:"relative flex border-b border-border",children:[(0,t.jsx)(C,{item:e.item,chapter:l.get(e.item.id),progress:r[e.item.id],onSelect:n}),(0,t.jsx)("div",{className:"relative",style:{width:i.width,height:e.rows*w.LANE_ROW_H+12},children:e.markers.map(e=>(0,t.jsxs)("button",{type:"button",onClick:()=>n(e.item.id),title:`${e.item.id} \xb7 ${e.item.title} \xb7 due ${e.item.due}${"overdue"===e.state?" (overdue)":""}`,className:"group absolute flex items-center gap-1.5",style:{left:e.x-10,top:6+e.row*w.LANE_ROW_H},children:[e.horizon?(0,t.jsx)("span",{className:(0,N.cn)("h-4 w-4 rotate-45 border-2 border-accent","done"===e.item.status?"bg-accent":"bg-bg","overdue"===e.state&&"border-danger")}):(0,t.jsx)("span",{className:(0,N.cn)("rounded-full","overdue"===e.state&&"ring-2 ring-danger ring-offset-1 ring-offset-bg"),children:(0,t.jsx)(v.StatusDot,{status:e.item.status})}),(0,t.jsxs)("span",{className:(0,N.cn)("flex max-w-[150px] flex-col rounded-md border px-2 py-0.5 text-left transition-colors","in-progress"===e.item.status?"border-accent/50 bg-surface shadow-[0_6px_18px_-10px_rgb(var(--rgb-accent)/0.7)]":"done"===e.item.status?"border-border bg-surface/60":"border-dashed border-border2 bg-bg","group-hover:border-accent"),children:[(0,t.jsxs)("span",{className:"flex items-center gap-1",children:[(0,t.jsx)("span",{className:(0,N.cn)("truncate text-xs","done"===e.item.status?"text-muted":"text-txt",e.horizon&&"font-semibold"),children:e.item.title}),(0,t.jsx)(y.AgentDot,{attach:{kind:"epic",id:e.item.id}})]}),(0,t.jsx)("span",{className:(0,N.cn)("font-mono text-[10px]","overdue"===e.state?"text-danger":"soon"===e.state?"text-amber":"text-muted"),children:(0,w.formatDay)(e.item.due)})]})]},e.item.id))})]},e.item.id)),!d&&(0,t.jsx)("p",{className:"px-6 py-8 text-sm text-muted",style:{marginLeft:200},children:"No due dates yet — open an item and set a Due date."})]})}),i.undated.length>0&&(0,t.jsxs)("div",{className:"max-h-28 shrink-0 overflow-y-auto border-t border-border bg-surface px-4 py-2",children:[(0,t.jsxs)("p",{className:"mb-2 font-mono text-[10px] uppercase tracking-widest text-muted",children:["No due date · ",i.undated.length]}),(0,t.jsx)("div",{className:"flex flex-wrap gap-1.5",children:i.undated.map(e=>(0,t.jsxs)("button",{type:"button",onClick:()=>n(e.id),className:"flex items-center gap-1 rounded-md border border-border px-1.5 py-0.5 text-xs text-muted hover:border-accent hover:text-txt",children:[(0,t.jsx)(v.StatusDot,{status:e.status}),e.title,(0,t.jsx)(y.AgentDot,{attach:{kind:"epic",id:e.id}})]},e.id))})]})]})}function C({item:e,chapter:s,progress:a,onSelect:n}){return(0,t.jsxs)("button",{type:"button",onClick:()=>n(e.id),className:"sticky left-0 z-10 flex shrink-0 items-center gap-3 border-r border-border bg-surface px-3 text-left hover:bg-surface2",style:{width:200},children:[(0,t.jsx)("span",{className:(0,N.cn)("font-mono text-lg font-semibold tabular-nums","in-progress"===e.status?"text-accent":"done"===e.status?"text-teal":"text-muted"),children:s?String(s).padStart(2,"0"):"··"}),(0,t.jsxs)("span",{className:"flex min-w-0 flex-1 flex-col gap-1",children:[(0,t.jsx)("span",{className:"line-clamp-2 text-[11px] font-semibold uppercase leading-snug tracking-wider text-txt",children:e.title}),a&&(0,t.jsx)("span",{className:"h-1 overflow-hidden rounded-full bg-border",children:(0,t.jsx)("span",{className:"block h-full rounded-full bg-teal",style:{width:`${a.done/a.total*100}%`}})})]})]})}var z=e.i(640818),$=e.i(675964),B=e.i(475850),T=e.i(424991),M=e.i(980376),D=e.i(793479),O=e.i(998822),A=e.i(481523),I=e.i(244267);let P=["planned","in-progress","done"],R="w-full rounded-md border border-border bg-bg px-3 py-2 text-sm text-txt focus:outline-hidden focus:ring-1 focus:ring-accent disabled:opacity-50",E="text-xs font-medium text-muted",_="font-mono text-[10px] uppercase tracking-widest text-muted";function F({item:e,onClose:s,...a}){return(0,t.jsx)(M.Sheet,{open:!!e,onOpenChange:e=>{e||s()},children:(0,t.jsx)(M.SheetContent,{className:"w-[480px] sm:max-w-[480px] gap-0 bg-surface border-border text-txt flex flex-col overflow-y-auto p-0",children:e&&(0,t.jsx)(L,{item:e,onClose:s,...a},e.id)})})}function L(e){let[a,n]=(0,s.useState)(!1);return a?(0,t.jsx)(U,{...e,onCancel:()=>n(!1)}):(0,t.jsx)(H,{...e,onEdit:()=>n(!0)})}function H({item:e,items:s,onClose:a,onAddFeature:n,onEditRaw:r,onSelect:o,tasksById:d,progressById:c,onEdit:x}){let m=null===e.parent,p=s.find(t=>t.id===e.parent),h=s.filter(t=>t.parent===e.id).sort((e,t)=>e.order-t.order),g=c[e.id],b=(0,j.localToday)(),{chats:w,showAbout:S}=(0,I.useChats)(),C=m?void 0:(0,A.chatFor)(w,{kind:"epic",id:e.id}),z=!m&&0===e.tasks.length&&!C;return(0,t.jsxs)("div",{className:"flex min-h-full flex-col",children:[(0,t.jsxs)("header",{className:(0,N.cn)("border-b border-border px-6 pb-5 pt-6","in-progress"===e.status&&"bg-[linear-gradient(180deg,rgb(var(--rgb-accent)/0.08),transparent)]"),children:[(0,t.jsx)(M.SheetDescription,{asChild:!0,children:(0,t.jsxs)("div",{className:"flex items-center gap-1 pr-8 font-mono text-[11px] text-muted",children:[p&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("button",{type:"button",onClick:()=>o(p.id),className:"truncate hover:text-txt",children:p.title}),(0,t.jsx)($.ChevronRight,{className:"h-3 w-3 shrink-0"})]}),(0,t.jsxs)("span",{className:"shrink-0",children:[e.id," · ",m?"horizon":"epic"]})]})}),(0,t.jsx)(M.SheetTitle,{className:"mt-2 text-xl font-semibold leading-tight text-txt",children:e.title}),(0,t.jsxs)("div",{className:"mt-3 flex flex-wrap items-center gap-3",children:[(0,t.jsx)(v.StatusPill,{status:e.status}),(0,t.jsx)(y.AgentMark,{attach:{kind:"epic",id:e.id}}),(0,t.jsx)(v.DueChip,{due:e.due,state:(0,j.dueState)(e.due,e.status,b)})]}),g&&(0,t.jsxs)("div",{className:"mt-5 flex items-end gap-4",children:[(0,t.jsxs)("p",{className:"font-mono text-3xl font-semibold leading-none tabular-nums text-txt",children:[Math.round(g.done/g.total*100),(0,t.jsx)("span",{className:"text-base text-muted",children:"%"})]}),(0,t.jsxs)("div",{className:"flex-1 pb-1",children:[(0,t.jsxs)("p",{className:"mb-1.5 font-mono text-[10px] text-muted",children:[g.done," of ",g.total,m?"":" tasks"," done"]}),m?(0,t.jsx)("div",{className:"h-1.5 overflow-hidden rounded-full bg-border",children:(0,t.jsx)("div",{className:"h-full rounded-full bg-teal",style:{width:`${g.done/g.total*100}%`}})}):(0,t.jsx)(v.SegmentedProgress,{statuses:e.tasks.map(e=>d[e]?.status).filter(e=>!!e&&"cancelled"!==e)})]})]})]}),(0,t.jsxs)("div",{className:"flex flex-1 flex-col gap-6 px-6 py-5",children:[!m&&e.tasks.length>0&&(0,t.jsx)(W,{item:e,tasksById:d,onOpen:r}),m&&(0,t.jsxs)("section",{className:"flex flex-col gap-2",children:[(0,t.jsxs)("p",{className:_,children:["Epics · ",h.length]}),0===h.length&&(0,t.jsx)("p",{className:"text-sm text-muted",children:"No epics yet."}),(0,t.jsx)("ul",{className:"-mx-2 flex flex-col",children:h.map(e=>{let s=c[e.id];return(0,t.jsx)("li",{children:(0,t.jsxs)("button",{type:"button",onClick:()=>o(e.id),className:"flex w-full items-center gap-3 rounded-md px-2 py-2 text-left hover:bg-surface2",children:[(0,t.jsx)(v.StatusDot,{status:e.status}),(0,t.jsx)("span",{className:"shrink-0 font-mono text-[11px] text-muted",children:e.id}),(0,t.jsx)("span",{className:(0,N.cn)("min-w-0 flex-1 truncate text-sm","done"===e.status?"text-muted":"text-txt"),children:e.title}),s&&(0,t.jsxs)("span",{className:"shrink-0 font-mono text-[10px] text-muted",children:[s.done,"/",s.total]})]})},e.id)})})]}),(0,t.jsxs)("section",{className:"flex flex-col gap-2",children:[(0,t.jsx)("p",{className:_,children:"Brief"}),e.body.trim()?(0,t.jsx)(O.MarkdownRenderer,{content:e.body,className:"text-sm"}):(0,t.jsx)("p",{className:"text-sm text-muted",children:"No description. Edit to add the outcome, scope and “done when”."})]})]}),(0,t.jsxs)("footer",{className:"sticky bottom-0 flex flex-wrap items-center gap-2 border-t border-border bg-surface px-6 py-3",children:[z&&(0,t.jsxs)(f.Button,{size:"sm",onClick:()=>{a(),(0,k.askAgent)(`Break down epic ${e.id} into tasks.`)},className:"bg-accent text-white hover:bg-accent/90",children:[(0,t.jsx)(l.Bot,{})," Break down with agent"]}),!m&&(0,t.jsxs)(f.Button,{size:"sm",variant:z?"outline":"default",onClick:()=>{a(),S({kind:"epic",id:e.id})},className:(0,N.cn)(!z&&"bg-accent text-white hover:bg-accent/90"),children:[(0,t.jsx)(B.MessageSquare,{})," ",C?"Open chat":"Chat"]}),m&&(0,t.jsxs)(f.Button,{size:"sm",onClick:()=>n(e.id),className:"bg-accent text-white hover:bg-accent/90",children:[(0,t.jsx)(u.Plus,{})," Add epic"]}),(0,t.jsxs)(f.Button,{size:"sm",variant:"outline",onClick:x,children:[(0,t.jsx)(T.Pencil,{})," Edit"]}),(0,t.jsxs)(f.Button,{size:"sm",variant:"ghost",onClick:()=>r(e.file),className:"ml-auto text-muted hover:text-txt",children:[(0,t.jsx)(i.FileText,{})," Open file"]})]})]})}function U({item:e,items:a,onClose:n,onSave:r,onDelete:l,onCancel:i}){let[o]=(0,s.useState)(e),[d,c]=(0,s.useState)(e.title),[u,x]=(0,s.useState)(e.status),[m,p]=(0,s.useState)(e.parent??""),[h,g]=(0,s.useState)(String(e.order)),[b,j]=(0,s.useState)(e.tasks.join(", ")),[N,k]=(0,s.useState)(e.due??""),[v,y]=(0,s.useState)(e.body),[w,S]=(0,s.useState)(null),[C,z]=(0,s.useState)(!1),$=a.some(t=>t.parent===e.id),B=a.filter(t=>null===t.parent&&t.id!==e.id),T=null===e.parent,O=null!==e.parent&&!B.some(t=>t.id===e.parent);async function A(e){z(!0),S(null);let t=await e();return z(!1),t&&S(t),!t}async function I(){let t={},s=d.trim()||o.title;if(s!==o.title&&(t.title=s),u!==o.status&&(t.status=u),(m||null)!==o.parent&&(t.parent=m||null),h.trim()!==String(o.order)){let e=Number(h);if(""===h.trim()||!Number.isFinite(e))return void S("Order must be a number");t.order=e}let a=b.split(",").map(e=>e.trim()).filter(Boolean);(a.join(",")!==o.tasks.join(",")&&(t.tasks=a),(N||null)!==o.due&&(t.due=N||null),v!==o.body&&(t.body=v),0===Object.keys(t).length)?i():await A(()=>r(e.id,t))&&n()}async function _(){window.confirm(`Delete ${e.id}: ${e.title}?`)&&await A(()=>l(e.id))&&n()}return(0,t.jsxs)("div",{className:"flex min-h-full flex-col",children:[(0,t.jsxs)("div",{className:"border-b border-border px-6 pb-4 pt-6 pr-12",children:[(0,t.jsxs)(M.SheetDescription,{className:"font-mono text-[11px] text-muted",children:["Editing ",e.id," · ",T?"horizon":"epic"]}),(0,t.jsx)(M.SheetTitle,{className:"mt-1 text-base text-txt",children:e.title})]}),(0,t.jsxs)("div",{className:"flex flex-1 flex-col gap-4 px-6 py-5",children:[(0,t.jsxs)("label",{className:"flex flex-col gap-1",children:[(0,t.jsx)("span",{className:E,children:"Title"}),(0,t.jsx)(D.Input,{value:d,onChange:e=>c(e.target.value),className:"bg-bg border-border text-txt"})]}),(0,t.jsxs)("div",{className:"grid grid-cols-3 gap-3",children:[(0,t.jsxs)("label",{className:"flex flex-col gap-1",children:[(0,t.jsx)("span",{className:E,children:"Status"}),(0,t.jsx)("select",{value:u,onChange:e=>x(e.target.value),className:R,children:P.map(e=>(0,t.jsx)("option",{value:e,children:e},e))})]}),(0,t.jsxs)("label",{className:"flex flex-col gap-1",children:[(0,t.jsx)("span",{className:E,children:"Parent"}),(0,t.jsxs)("select",{value:m,onChange:e=>p(e.target.value),disabled:$,title:$?"Items with children must stay on the spine":void 0,className:R,children:[(0,t.jsx)("option",{value:"",children:"— (horizon)"}),O&&(0,t.jsxs)("option",{value:e.parent??"",children:[e.parent," · missing"]}),B.map(e=>(0,t.jsxs)("option",{value:e.id,children:[e.id," · ",e.title]},e.id))]})]}),(0,t.jsxs)("label",{className:"flex flex-col gap-1",children:[(0,t.jsx)("span",{className:E,children:"Order"}),(0,t.jsx)(D.Input,{type:"number",step:10,value:h,onChange:e=>g(e.target.value),title:T?"Position on the spine":"Position within the branch",className:"bg-bg border-border text-txt"})]})]}),(0,t.jsxs)("label",{className:"flex flex-col gap-1",children:[(0,t.jsx)("span",{className:E,children:"Due"}),(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)(D.Input,{type:"date",value:N,onChange:e=>k(e.target.value),className:"bg-bg border-border text-txt scheme-light dark:scheme-dark"}),N&&(0,t.jsx)("button",{type:"button",onClick:()=>k(""),className:"text-xs text-muted hover:text-txt",children:"Clear"})]})]}),(0,t.jsxs)("label",{className:"flex flex-col gap-1",children:[(0,t.jsx)("span",{className:E,children:"Tasks"}),(0,t.jsx)(D.Input,{value:b,onChange:e=>j(e.target.value),placeholder:"T001, T012",className:"bg-bg border-border text-txt font-mono"})]}),(0,t.jsxs)("label",{className:"flex flex-col gap-1",children:[(0,t.jsx)("span",{className:E,children:"Body (markdown)"}),(0,t.jsx)("textarea",{value:v,onChange:e=>y(e.target.value),rows:12,className:`${R} font-mono resize-y`})]}),w&&(0,t.jsx)("p",{className:"text-xs text-danger",children:w})]}),(0,t.jsxs)("footer",{className:"sticky bottom-0 flex items-center gap-2 border-t border-border bg-surface px-6 py-3",children:[(0,t.jsx)(f.Button,{size:"sm",onClick:I,disabled:C,className:"bg-accent text-white hover:bg-accent/90",children:"Save"}),(0,t.jsx)(f.Button,{size:"sm",variant:"ghost",onClick:i,disabled:C,className:"text-txt",children:"Cancel"}),(0,t.jsx)(f.Button,{size:"sm",variant:"ghost",onClick:_,disabled:C,className:"ml-auto text-danger hover:text-danger",children:"Delete"})]})]})}function W({item:e,tasksById:s,onOpen:a}){let n=(0,j.localToday)(),r=b(e,Object.values(s)),l="ready"===r.kind?r.taskId:null,i="waiting"===r.kind?[...r.waiting].sort((e,t)=>Number(s[t.taskId]?.status==="todo")-Number(s[e.taskId]?.status==="todo")).map(e=>e.reason):[];return(0,t.jsxs)("section",{className:"flex flex-col gap-2",children:[(0,t.jsxs)("p",{className:_,children:["Tasks · ",e.tasks.length]}),(0,t.jsx)("ul",{className:"-mx-2 flex flex-col",children:e.tasks.map(e=>{let r=s[e];if(!r)return(0,t.jsxs)("li",{className:"px-2 py-2 font-mono text-xs text-danger",children:[e," · missing task file"]},e);let i=r.id===l;return(0,t.jsxs)("li",{className:(0,N.cn)("group flex items-center rounded-md hover:bg-surface2",i&&"bg-accent/10 hover:bg-accent/15"),children:[(0,t.jsxs)("button",{type:"button",onClick:()=>a(r.file),className:"flex min-w-0 flex-1 items-center gap-3 px-2 py-2 text-left",children:[(0,t.jsx)("span",{title:r.status,className:(0,N.cn)("h-2 w-2 shrink-0 rounded-full",v.TASK_STATUS_BG[r.status])}),(0,t.jsx)("span",{className:"shrink-0 font-mono text-[11px] text-muted",children:r.id}),(0,t.jsx)("span",{className:(0,N.cn)("min-w-0 flex-1 truncate text-sm","cancelled"===r.status?"text-muted line-through":"done"===r.status?"text-muted":"text-txt"),children:r.title}),(0,t.jsx)(v.DueChip,{due:r.due,state:(0,j.dueState)(r.due,"done"===r.status?"done":"planned",n)}),i?(0,t.jsx)("span",{className:"shrink-0 font-mono text-[10px] uppercase tracking-wider text-accent",children:"Next up"}):r.size&&"—"!==r.size&&(0,t.jsx)("span",{className:"shrink-0 font-mono text-[10px] text-muted",children:r.size.split(" ")[0]}),(0,t.jsx)(y.AgentDot,{attach:{kind:"task",id:r.id}})]}),(0,t.jsx)(G,{taskId:r.id})]},e)})}),i.length>0&&(0,t.jsxs)("p",{className:"truncate text-xs text-muted",title:i.join("\n"),children:[i[0],i.length>1&&` (+${i.length-1} more)`]})]})}function G({taskId:e}){let{chats:s,showAbout:a}=(0,I.useChats)(),n=!!(0,A.chatFor)(s,{kind:"task",id:e});return(0,t.jsx)("button",{type:"button",onClick:()=>a({kind:"task",id:e}),"aria-label":`${n?"Open chat":"Chat"} about ${e}`,title:n?`Open the chat about ${e}`:`Chat about ${e}`,className:(0,N.cn)("mr-1 grid size-7 shrink-0 place-items-center rounded-md text-muted transition-[opacity,color] duration-(--duration-fast) hover:bg-surface hover:text-accent focus-visible:opacity-100",n?"text-accent opacity-100":"opacity-0 group-hover:opacity-100"),children:(0,t.jsx)(B.MessageSquare,{className:"size-3.5"})})}var X=e.i(776639);function K({open:e,heading:a,onOpenChange:n,onSubmit:r}){let[l,i]=(0,s.useState)(""),[o,d]=(0,s.useState)(null),[c,u]=(0,s.useState)(!1);function x(e){e||(i(""),d(null)),n(e)}async function m(e){if(e.preventDefault(),!l.trim())return;u(!0);let t=await r(l.trim());u(!1),t?d(t):x(!1)}return(0,t.jsx)(X.Dialog,{open:e,onOpenChange:x,children:(0,t.jsxs)(X.DialogContent,{className:"max-w-sm bg-surface border-border text-txt",children:[(0,t.jsx)(X.DialogTitle,{className:"text-sm font-semibold text-txt",children:a}),(0,t.jsxs)("form",{onSubmit:m,className:"flex flex-col gap-3",children:[(0,t.jsx)(D.Input,{autoFocus:!0,value:l,onChange:e=>i(e.target.value),placeholder:"Title",className:"bg-bg border-border text-txt"}),o&&(0,t.jsx)("p",{className:"text-xs text-danger",children:o}),(0,t.jsxs)("div",{className:"flex justify-end gap-2",children:[(0,t.jsx)(f.Button,{type:"button",variant:"ghost",size:"sm",onClick:()=>x(!1),children:"Cancel"}),(0,t.jsx)(f.Button,{type:"submit",size:"sm",disabled:c||!l.trim(),className:"bg-accent text-white hover:bg-accent/90",children:"Create"})]})]})]})})}function q({open:e,onOpenChange:a}){let[n,r]=(0,s.useState)("");return(0,t.jsx)(X.Dialog,{open:e,onOpenChange:a,children:(0,t.jsxs)(X.DialogContent,{className:"max-w-lg bg-surface border-border text-txt",children:[(0,t.jsx)(X.DialogTitle,{className:"text-sm font-semibold text-txt",children:"Plan from spec"}),(0,t.jsxs)("form",{onSubmit:function(e){e.preventDefault(),n.trim()&&(a(!1),(0,k.askAgent)(`Break down this spec into tasks:
|
|
2
|
+
|
|
3
|
+
${n.trim()}`))},className:"flex flex-col gap-3",children:[(0,t.jsx)("textarea",{autoFocus:!0,value:n,onChange:e=>r(e.target.value),placeholder:"Paste a feature spec…",rows:12,className:"w-full resize-y rounded-md border border-border bg-bg px-3 py-2 text-sm text-txt placeholder:text-muted focus:outline-none focus:ring-1 focus:ring-accent"}),(0,t.jsx)("p",{className:"text-xs text-muted",children:"The agent asks where the tasks go (a new epic, an existing epic, or no epic) and shows a plan before writing anything."}),(0,t.jsxs)("div",{className:"flex justify-end gap-2",children:[(0,t.jsx)(f.Button,{type:"button",variant:"ghost",size:"sm",onClick:()=>{r(""),a(!1)},children:"Cancel"}),(0,t.jsx)(f.Button,{type:"submit",size:"sm",disabled:!n.trim(),className:"bg-accent text-white hover:bg-accent/90",children:"Break down"})]})]})]})})}function J({open:e,onOpenChange:s,items:a}){return(0,t.jsx)(X.Dialog,{open:e,onOpenChange:s,children:(0,t.jsxs)(X.DialogContent,{className:"max-w-lg bg-surface border-border text-txt",children:[(0,t.jsx)(X.DialogTitle,{className:"text-sm font-semibold text-txt",children:"Break down epics"}),(0,t.jsx)(V,{items:a,onDone:()=>s(!1)})]})})}function V({items:e,onDone:a}){let n,r=(n=(e,t)=>e.order-t.order,e.filter(e=>null===e.parent).sort(n).map(t=>({horizon:t,epics:e.filter(e=>e.parent===t.id&&"done"!==e.status).sort((e,t)=>Number(e.tasks.length>0)-Number(t.tasks.length>0)||n(e,t))})).filter(e=>e.epics.length>0)),[l,i]=(0,s.useState)(()=>new Set(r.flatMap(e=>e.epics.filter(e=>0===e.tasks.length).map(e=>e.id)))),o=(0,I.useChats)().runningCount,d=Math.max(0,A.MAX_RUNNING_CHATS-o),c=l.size>d;return(0,t.jsxs)("form",{onSubmit:function(e){if(e.preventDefault(),l.size&&!c)for(let e of(a(),r))for(let t of e.epics)l.has(t.id)&&(0,k.askAgent)(`Break down epic ${t.id} into tasks.`,{newChat:!0})},className:"flex flex-col gap-3",children:[(0,t.jsx)("div",{className:"max-h-[50vh] overflow-y-auto rounded-md border border-border",children:r.map(e=>(0,t.jsxs)("div",{children:[(0,t.jsxs)("div",{className:"sticky top-0 bg-surface2 px-3 py-1 text-[10px] font-mono uppercase tracking-widest text-muted",children:[e.horizon.id," · ",e.horizon.title]}),(0,t.jsx)("ul",{children:e.epics.map(e=>{let s=l.has(e.id);return(0,t.jsx)("li",{className:"border-b border-border last:border-b-0",children:(0,t.jsxs)("label",{className:"flex items-start gap-2 px-3 py-1.5 text-xs cursor-pointer has-[:disabled]:cursor-not-allowed",children:[(0,t.jsx)("input",{type:"checkbox",checked:s,disabled:!s&&l.size>=d,onChange:()=>{var t;return t=e.id,void i(e=>{let s=new Set(e);return s.delete(t)||s.add(t),s})},className:"mt-0.5 accent-accent"}),(0,t.jsxs)("span",{className:"flex-1 min-w-0 text-txt",children:[(0,t.jsx)("span",{className:"font-mono text-muted mr-1",children:e.id}),e.title]}),e.tasks.length>0&&(0,t.jsxs)("span",{className:"shrink-0 text-[10px] font-mono text-muted",children:["has ",e.tasks.length," task",1===e.tasks.length?"":"s"]})]})},e.id)})})]},e.horizon.id))}),(0,t.jsx)("p",{className:c||0===d?"text-xs text-amber":"text-xs text-muted",children:0===d?`All ${A.MAX_RUNNING_CHATS} agent slots are busy. Stop a chat or wait for one to finish.`:c?`${l.size} selected, but only ${d} of ${A.MAX_RUNNING_CHATS} agent slots ${1===d?"is":"are"} free (${o} running). Uncheck some or stop a chat.`:`One chat per epic, running at once (${d} of ${A.MAX_RUNNING_CHATS} agent slots free). Each shows a plan before writing anything.`}),(0,t.jsxs)("div",{className:"flex justify-end gap-2",children:[(0,t.jsx)(f.Button,{type:"button",variant:"ghost",size:"sm",onClick:a,children:"Cancel"}),(0,t.jsxs)(f.Button,{type:"submit",size:"sm",disabled:!l.size||c,className:"bg-accent text-white hover:bg-accent/90",children:["Break down ",l.size||""," epic",1===l.size?"":"s"]})]})]})}async function Z(e,t){try{let s=await fetch(e,void 0===t?void 0:{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)}),a=await s.json().catch(()=>null);if(!s.ok)return{error:a?.error??`Request failed (${s.status})`};return{data:a}}catch{return{error:"Could not reach the server"}}}function Q(e,t,s,a){var r;let l,i,o,d,c,[u,x]=(r=!a,i=(l=e=>({x:e.position.x+(e.measured?.width??("horizon"===e.type?z.HORIZON_W:z.FEATURE_W))/2,y:e.position.y+(e.measured?.height??48)/2}))(t),d=(o=l(s)).x-i.x,c=o.y-i.y,r||Math.abs(d)>Math.abs(c)?d>0?[n.Position.Right,n.Position.Left]:[n.Position.Left,n.Position.Right]:c>0?[n.Position.Bottom,n.Position.Top]:[n.Position.Top,n.Position.Bottom]);return{id:e,source:t.id,target:s.id,sourceHandle:u,targetHandle:`${x}-t`,type:a?"straight":"default",selectable:!1,...function(e,t,s){if(s)return"done"===e.data.item.status?{style:{stroke:"var(--color-accent)",strokeWidth:3}}:{style:{stroke:"var(--color-border2)",strokeWidth:3,strokeDasharray:"6 6"}};let a=t.data.item.status;return"in-progress"===a?{animated:!0,style:{stroke:"var(--color-accent)",strokeWidth:2}}:"done"===a?{style:{stroke:"var(--color-border2)",strokeWidth:1.5}}:{style:{stroke:"var(--color-border2)",strokeWidth:1.5,strokeDasharray:"2 5",strokeLinecap:"round"}}}(t,s,a)}}function Y(e){let t=new MutationObserver(e);return t.observe(document.documentElement,{attributes:!0,attributeFilter:["class"]}),()=>t.disconnect()}let ee={"--xy-background-color":"var(--color-bg)"};function et(){let{rootParam:e,openDoc:n,board:r}=(0,p.useApp)(),o=(0,m.useRouter)(),d=(0,m.useSearchParams)(),g="timeline"===d.get("view")?"timeline":"map",y=(0,j.localToday)(),[w,C]=(0,s.useState)([]),[$,B]=(0,s.useState)({}),[T,M]=(0,s.useState)([]),[D,O]=(0,s.useState)(!0),[A,I]=(0,s.useState)(null),[P,R]=(0,s.useState)(null),E=d.get("item"),[_,L]=(0,s.useState)(null);E!==_&&(L(E),E&&R(E));let[H,U]=(0,s.useState)(null),[W,G]=(0,s.useState)(!1),[X,V]=(0,s.useState)(null),[et,en]=(0,s.useState)(!1),[er,el]=(0,s.useState)(!1),ei=(0,s.useRef)(!1),eo=(0,s.useRef)(null),ed=(0,s.useCallback)(e=>{let t=eo.current?.clientWidth??0,s=e.getNodesBounds(e.getNodes());if(!t||!s.width)return;let a=Math.min(1,Math.max(.75,(t-80)/s.width));e.setViewport({x:t/2-(s.x+s.width/2)*a,y:40-s.y*a,zoom:a})},[]),ec=(0,s.useRef)(!1),eu=(0,s.useRef)(0),ex=(0,s.useSyncExternalStore)(Y,()=>document.documentElement.classList.contains("dark"),()=>!0),em=(0,s.useCallback)((e,t)=>{C(e),B(t),M(s=>{let a,n;return a=(0,z.resolvePositions)(e,t),n=new Map(s.map(e=>[e.id,e])),e.map(e=>{let t=n.get(e.id);return{id:e.id,type:null===e.parent?"horizon":"feature",position:a[e.id]??{x:0,y:0},data:{item:e},measured:t?.measured,selected:t?.selected}})})},[]),ep=(0,s.useCallback)(()=>{let t=++eu.current;return Z(`/api/roadmap${e}`).then(({data:e,error:s})=>{if(t===eu.current){if(O(!1),s){I(s),em([],{}),R(null);return}I(null),U(e?.generateSource??null),em(e?.items??[],e?.layout??{})}})},[e,em]);(0,s.useEffect)(()=>{ep()},[ep]),(0,s.useEffect)(()=>{let e=new EventSource("/api/events");return e.onmessage=e=>{try{let t=JSON.parse(e.data);if("roadmap_updated"!==t.type)return;ei.current?ec.current=!0:ep()}catch{}},()=>e.close()},[ep]);let eh=(0,s.useMemo)(()=>{let e=new Map(T.map(e=>[e.id,e])),t=[],s=w.filter(e=>null===e.parent).sort((e,t)=>e.order-t.order);for(let a of(s.forEach((a,n)=>{let r=e.get(a.id),l=s[n+1]&&e.get(s[n+1].id);r&&l&&t.push(Q(`spine-${a.id}`,r,l,!0))}),w)){let s=a.parent&&e.get(a.parent),n=e.get(a.id);s&&n&&"horizon"===s.type&&t.push(Q(`branch-${a.id}`,s,n,!1))}return t},[w,T]),ef=(0,s.useMemo)(()=>Object.fromEntries(Object.values(r??{}).flat().map(e=>[e.id,e])),[r]),eg=(0,s.useMemo)(()=>(0,j.roadmapHealth)(w,ef,y),[w,ef,y]),eb=(0,s.useMemo)(()=>{let e=Object.values(ef),t=new Map(w.filter(e=>null===e.parent).sort((e,t)=>e.order-t.order).map((e,t)=>[e.id,t+1]));return T.map(s=>{var a;let n,{item:r}=s.data,l=w.filter(e=>e.parent===r.id),i="feature"===s.type&&"in-progress"===r.status?b(r,e):null;return{...s,data:{...s.data,progress:eg.progress[s.id],drift:eg.drift.filter(e=>e.id===s.id).map(e=>e.message),dueState:(0,j.dueState)(r.due,r.status,y),..."feature"===s.type&&{...(a=r.tasks,{taskDue:n=(0,j.taskDueSummary)(a,ef,y),taskDueSoon:!!n?.next&&"soon"===(0,j.dueState)(n.next,"planned",y)}),taskStatuses:r.tasks.map(e=>ef[e]?.status).filter(e=>!!e&&"cancelled"!==e),nextTaskId:i?.kind==="ready"?i.taskId:null},..."horizon"===s.type&&{chapter:t.get(r.id),epics:{done:l.filter(e=>"done"===e.status).length,total:l.length}}}}})},[T,w,eg,y,ef]),ej=(0,s.useCallback)(e=>M(t=>(0,a.applyNodeChanges)(e,t)),[]);async function eN(){G(!0),I(null);let{data:t,error:s}=await Z(`/api/roadmap/generate${e}`,{});if(s){I(s),G(!1);return}let a=Object.fromEntries(Object.entries((0,z.resolvePositions)(t?.items??[],{})).map(([e,t])=>[e,{x:Math.round(t.x),y:Math.round(t.y)}])),{error:n}=await Z(`/api/roadmap/layout${e}`,{positions:a});await ep(),n&&I(n),G(!1)}let ek=Object.values(r??{}).flat().filter(e=>"cancelled"!==e.status).length,ev="roadmap-md"===H?"from ROADMAP.md":"tasks"===H?`from ${ek} tasks, grouped by phase`:"starter horizons: Shipped · Now · Next · Later";async function ey(t){let{error:s}=await Z(`/api/roadmap/create${e}`,{title:t,parent:X||null});return s||(await ep(),null)}async function ew(t,s){let{data:a,error:n}=await Z(`/api/roadmap/update${e}`,{id:t,patch:s});if(n)return n;let r=a?.item;return r?em(w.map(e=>e.id===t?r:e),$):await ep(),null}async function eS(t){let{error:s}=await Z(`/api/roadmap/delete${e}`,{id:t});return s||(em(w.filter(e=>e.id!==t),$),null)}let eC=w.find(e=>e.id===P)??null,ez=(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(K,{open:null!==X,heading:X?`New feature under ${X}`:"New horizon",onOpenChange:e=>{e||V(null)},onSubmit:ey}),(0,t.jsx)(q,{open:et,onOpenChange:en}),(0,t.jsx)(J,{open:er,onOpenChange:el,items:w})]});return D?(0,t.jsx)("div",{className:"flex-1 flex items-center justify-center text-sm text-muted",children:"Loading…"}):0===w.length?(0,t.jsxs)("div",{className:"flex-1 p-6",children:[A&&(0,t.jsx)("p",{className:"mb-4 text-sm text-danger",children:A}),(0,t.jsx)(h.EmptyState,{icon:"🗺️",message:"No roadmap yet",subMessage:"Items live in plans/roadmap/R*.md",bordered:!0}),(0,t.jsxs)("div",{className:"mt-4 flex flex-col items-center gap-2",children:[(0,t.jsxs)("div",{className:"flex gap-2",children:[(0,t.jsxs)(f.Button,{size:"sm",onClick:eN,disabled:W,className:"bg-accent text-white hover:bg-accent/90",children:[(0,t.jsx)(x.Sparkles,{})," ",W?"Generating…":"Generate roadmap"]}),(0,t.jsxs)(f.Button,{size:"sm",variant:"outline",onClick:()=>(0,k.askAgent)("Plan a roadmap for this project."),disabled:W,children:[(0,t.jsx)(l.Bot,{})," Plan with agent"]}),(0,t.jsxs)(f.Button,{size:"sm",variant:"outline",onClick:()=>en(!0),disabled:W,children:[(0,t.jsx)(i.FileText,{})," Plan from spec"]}),(0,t.jsxs)(f.Button,{size:"sm",variant:"outline",onClick:()=>V(""),disabled:W,children:[(0,t.jsx)(u.Plus,{})," Create first horizon"]})]}),(0,t.jsxs)("p",{className:"text-xs text-muted",children:["Generate ",ev,". Existing files are not modified."]})]}),ez]}):(0,t.jsxs)("div",{className:"relative flex flex-1 min-h-0 flex-col",children:[(0,t.jsxs)("div",{className:"flex shrink-0 items-center gap-4 border-b border-border px-3 py-2",children:[(0,t.jsx)("div",{className:"flex rounded-md border border-border p-0.5 text-xs",children:["map","timeline"].map(e=>(0,t.jsx)("button",{type:"button",onClick:()=>{let t,s;return t=new URLSearchParams(d.toString()),"map"===e?t.delete("view"):t.set("view",e),s=t.toString(),void o.replace(s?`/roadmap?${s}`:"/roadmap")},className:(0,N.cn)("rounded-sm px-3 py-1 capitalize",g===e?"bg-surface2 text-txt":"text-muted hover:text-txt"),children:e},e))}),(0,t.jsx)(es,{items:w,tasksById:ef}),(0,t.jsxs)("div",{className:"ml-auto flex items-center gap-2",children:[A&&(0,t.jsx)("p",{className:"text-xs text-danger",children:A}),eg.drift.length>0&&(0,t.jsx)(ea,{drift:eg.drift,onSelect:R,onApply:e=>e.suggestedStatus&&ew(e.id,{status:e.suggestedStatus}).then(e=>{e&&I(e)})}),(0,t.jsxs)(f.Button,{size:"sm",variant:"outline",onClick:()=>en(!0),children:[(0,t.jsx)(i.FileText,{})," Plan from spec"]}),w.some(e=>null!==e.parent&&"done"!==e.status)&&(0,t.jsxs)(f.Button,{size:"sm",variant:"outline",onClick:()=>el(!0),children:[(0,t.jsx)(c,{})," Break down epics…"]}),(0,t.jsxs)(f.Button,{size:"sm",onClick:()=>V(""),className:"bg-accent text-white hover:bg-accent/90",children:[(0,t.jsx)(u.Plus,{})," Horizon"]})]})]}),"map"===g?(0,t.jsx)("div",{ref:eo,className:"relative flex-1 min-h-0",children:(0,t.jsxs)(a.ReactFlow,{nodes:eb,edges:eh,nodeTypes:v.nodeTypes,onNodesChange:ej,onNodeClick:(e,t)=>R(t.id),onNodeDragStart:()=>{ei.current=!0},onNodeDragStop:(t,s,a)=>{let n;return ei.current=!1,n=Object.fromEntries(a.map(e=>[e.id,{x:Math.round(e.position.x),y:Math.round(e.position.y)}])),void(em(w,{...$,...n}),Z(`/api/roadmap/layout${e}`,{positions:n}).then(({error:e})=>{e&&I(e),ec.current&&(ec.current=!1,ep())}))},nodesConnectable:!1,deleteKeyCode:null,colorMode:ex?"dark":"light",onInit:ed,minZoom:.2,style:ee,children:[(0,t.jsx)(a.Background,{variant:a.BackgroundVariant.Dots,gap:20,size:1}),(0,t.jsx)(a.Controls,{showInteractive:!1})]})}):(0,t.jsx)(S,{items:w,today:y,onSelect:R,progressById:eg.progress}),(0,t.jsx)(F,{item:eC,items:w,onClose:()=>R(null),onSave:ew,onDelete:eS,onAddFeature:e=>{R(null),V(e)},onEditRaw:e=>{n(e)},tasksById:ef,progressById:eg.progress,onSelect:R}),ez]})}function es({items:e,tasksById:s}){let a=e.filter(e=>null!==e.parent),n=e=>a.filter(t=>t.status===e).length,r=[...new Set(a.flatMap(e=>e.tasks))].map(e=>s[e]).filter(e=>e&&"cancelled"!==e.status),l=r.filter(e=>"done"===e.status).length;return(0,t.jsxs)("div",{className:"hidden items-center gap-4 font-mono text-[11px] text-muted md:flex",children:[["in-progress","done","planned"].map(e=>(0,t.jsxs)("span",{className:"flex items-center gap-1.5",children:[(0,t.jsx)(v.StatusDot,{status:e}),(0,t.jsx)("span",{className:(0,N.cn)("tabular-nums","in-progress"===e&&n(e)>0?"text-accent":"text-txt"),children:n(e)}),v.STATUS_LABEL[e].toLowerCase()]},e)),r.length>0&&(0,t.jsxs)("span",{className:"flex items-center gap-2 border-l border-border pl-4",children:[(0,t.jsx)("span",{className:"relative h-1 w-20 overflow-hidden rounded-full bg-border",children:(0,t.jsx)("span",{className:"absolute inset-y-0 left-0 rounded-full bg-teal",style:{width:`${l/r.length*100}%`}})}),(0,t.jsxs)("span",{children:[(0,t.jsxs)("span",{className:"tabular-nums text-txt",children:[l,"/",r.length]})," tasks"]})]})]})}function ea({drift:e,onSelect:s,onApply:a}){return(0,t.jsxs)("details",{className:"group relative",children:[(0,t.jsxs)("summary",{className:"flex h-8 cursor-pointer list-none items-center gap-1.5 rounded-md border border-amber/40 bg-amber/10 px-2.5 text-xs font-medium text-txt hover:bg-amber/15 [&::-webkit-details-marker]:hidden",children:[(0,t.jsx)(r.AlertTriangle,{className:"h-3.5 w-3.5 text-amber"})," ",e.length," need attention"]}),(0,t.jsx)("ul",{className:"absolute right-0 top-full z-30 mt-1.5 max-h-72 w-80 overflow-y-auto rounded-lg border border-border bg-surface text-xs shadow-xl",children:e.map(e=>(0,t.jsxs)("li",{className:"flex items-start gap-2 border-b border-border px-3 py-2.5 last:border-0",children:[(0,t.jsx)("span",{className:"mt-1 h-1.5 w-1.5 shrink-0 rounded-full bg-amber"}),(0,t.jsx)("button",{type:"button",onClick:()=>s(e.id),className:"flex-1 text-left leading-relaxed text-muted hover:text-txt",children:e.message}),e.suggestedStatus&&(0,t.jsxs)("button",{type:"button",onClick:()=>a(e),className:"shrink-0 rounded-sm border border-border px-1.5 py-0.5 font-mono text-[10px] text-txt hover:border-accent hover:text-accent",title:`Set status to ${e.suggestedStatus}`,children:["→ ",e.suggestedStatus]})]},`${e.id}-${e.kind}`))})]})}e.s(["default",0,function(){return(0,t.jsx)("div",{className:"flex flex-col h-[calc(100svh-3rem)]",children:(0,t.jsx)(s.Suspense,{children:(0,t.jsx)(et,{})})})}],298367)}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,475850,e=>{"use strict";var t=e.i(83790);let a={name:"message-square",size:24,node:[["path",{d:"M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z",key:"18887p"}]]};a.node;let s=(0,t.default)(a);e.s(["MessageSquare",0,s],475850)},424991,e=>{"use strict";var t=e.i(83790);let a={name:"pencil",size:24,node:[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}],["path",{d:"m15 5 4 4",key:"1mk7zo"}]]};a.node;let s=(0,t.default)(a);e.s(["Pencil",0,s],424991)},885600,e=>{"use strict";var t=e.i(83790);let a={name:"sparkles",size:24,node:[["path",{d:"M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z",key:"1s2grr"}],["path",{d:"M20 2v4",key:"1rf3ol"}],["path",{d:"M22 4h-4",key:"gwowj6"}],["circle",{cx:"4",cy:"20",r:"2",key:"6kqj1y"}]],aliases:["stars"]};a.node;let s=(0,t.default)(a);e.s(["Sparkles",0,s],885600)},496385,e=>{"use strict";var t=e.i(83790);let a={name:"triangle-alert",size:24,node:[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]],aliases:["alert-triangle"]};a.node;let s=(0,t.default)(a);e.s(["AlertTriangle",0,s],496385)},723528,e=>{"use strict";var t=e.i(72345),a=e.i(479432),s=e.i(240595),n=e.i(975157),r=e.i(244267);let l={running:"Agent working","needs-answer":"Agent needs you",review:"Plan to review"};e.s(["AgentDot",0,function({attach:e}){let a=(0,r.useItemAgent)(e);if(!a)return null;let i=l[a.status];return(0,t.jsx)("span",{title:i,"aria-label":i,role:"img",className:"inline-flex shrink-0",children:"running"===a.status?(0,t.jsx)(s.Loader2,{className:"size-3 animate-spin text-accent"}):(0,t.jsx)("span",{className:(0,n.cn)("size-1.5 rounded-full animate-pulse-dot","needs-answer"===a.status?"bg-amber":"bg-accent")})})},"AgentMark",0,function({attach:e,className:i}){let c=(0,r.useItemAgent)(e),{show:o}=(0,r.useChats)();if(!c)return null;let d=l[c.status];return(0,t.jsxs)("button",{type:"button",onClick:e=>{e.stopPropagation(),o(c.chatId)},title:`${d} \xb7 open chat`,"aria-label":`${d}, open chat`,className:(0,n.cn)("nodrag inline-flex shrink-0 items-center gap-1 rounded-full border px-1.5 py-px font-mono text-[10px] leading-4 animate-fade-in transition-colors duration-(--duration-fast)","running"===c.status&&"border-accent/50 text-accent hover:bg-accent/10","needs-answer"===c.status&&"border-amber/50 text-amber hover:bg-amber/10","review"===c.status&&"border-accent/50 bg-accent/10 text-accent hover:bg-accent/20",i),children:["running"===c.status?(0,t.jsx)(s.Loader2,{className:"size-3 animate-spin"}):(0,t.jsx)(a.Bot,{className:"size-3"}),d]})}])},635743,e=>{"use strict";var t=e.i(72345),a=e.i(975157);e.s(["EmptyState",0,function({icon:e,message:s,subMessage:n,bordered:r}){return(0,t.jsxs)("div",{className:(0,a.cn)("text-center py-16 text-muted text-sm",r&&"border border-dashed border-border rounded-xl"),children:[(0,t.jsx)("p",{className:"text-3xl mb-3",children:e}),(0,t.jsx)("p",{children:s}),n&&(0,t.jsx)("p",{className:"text-xs mt-1",children:n})]})}])}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,270379,956537,773286,239528,388101,650229,e=>{"use strict";var t=e.i(83790);let n={name:"arrow-up",size:24,node:[["path",{d:"m5 12 7-7 7 7",key:"hav0vg"}],["path",{d:"M12 19V5",key:"x0mq9r"}]]};n.node;let r=(0,t.default)(n);e.s(["ArrowUp",0,r],270379);let a={name:"arrow-up-right",size:24,node:[["path",{d:"M7 7h10v10",key:"1tivn9"}],["path",{d:"M7 17 17 7",key:"1vkiza"}]]};a.node;let s=(0,t.default)(a);e.s(["ArrowUpRight",0,s],956537);let o={name:"maximize-2",size:24,node:[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"m21 3-7 7",key:"1l2asr"}],["path",{d:"m3 21 7-7",key:"tjx5ai"}],["path",{d:"M9 21H3v-6",key:"wtvkvv"}]]};o.node;let i=(0,t.default)(o);e.s(["Maximize2",0,i],773286);let l={name:"square",size:24,node:[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}]]};l.node;let c=(0,t.default)(l);e.s(["Square",0,c],239528);var d=e.i(72345),u=e.i(180338),p=e.i(763371),h=e.i(975157);e.s(["ProposalCard",0,function({proposal:e,onResolve:t}){let{rootParam:n,openDoc:r}=(0,p.useApp)(),[a,s]=(0,u.useState)(null),[o,i]=(0,u.useState)(null),[l,c]=(0,u.useState)(!1);(0,u.useEffect)(()=>{fetch(`/api/docs${n}&read=${encodeURIComponent(e.path)}`).then(e=>e.ok?e.json():null).then(t=>s(t?.path===e.path.replace(/^\.\//,"")&&"string"==typeof t.content?t.content:"")).catch(()=>s(""))},[e.path,n]);let x=(0,u.useMemo)(()=>null===a?null:function(e,t){let n=e;for(let[e,r]of t.entries()){if("string"!=typeof r?.old_string||"string"!=typeof r?.new_string)return{error:`Edit ${e+1}: old_string and new_string must be strings`};if(""===r.old_string){if(""!==n)return{error:`Edit ${e+1}: empty old_string is only allowed for a new, empty doc`};n=r.new_string;continue}let t=n.indexOf(r.old_string);if(-1===t)return{error:`Edit ${e+1}: old_string not found in the doc`};if(-1!==n.indexOf(r.old_string,t+1))return{error:`Edit ${e+1}: old_string matches more than once; include more surrounding text`};n=n.slice(0,t)+r.new_string+n.slice(t+r.old_string.length)}return{content:n}}(a,e.edits),[a,e.edits]),m=null!==x&&"error"in x?x.error:null,f=(0,u.useMemo)(()=>{var e;let t,n;return null===a||!x||"error"in x?[]:(t=(e=function(e,t){let n=e.split("\n"),r=t.split("\n"),a=0;for(;a<n.length&&a<r.length&&n[a]===r[a];)a++;let s=n.length,o=r.length;for(;s>a&&o>a&&n[s-1]===r[o-1];)s--,o--;let i=n.slice(a,s),l=r.slice(a,o),c=Array.from({length:i.length+1},()=>Array(l.length+1).fill(0));for(let e=i.length-1;e>=0;e--)for(let t=l.length-1;t>=0;t--)c[e][t]=i[e]===l[t]?c[e+1][t+1]+1:Math.max(c[e+1][t],c[e][t+1]);let d=[],u=0,p=0;for(;u<i.length||p<l.length;)u<i.length&&p<l.length&&i[u]===l[p]?(d.push({op:" ",text:i[u]}),u++,p++):u<i.length&&(p===l.length||c[u+1][p]>=c[u][p+1])?(d.push({op:"-",text:i[u]}),u++):(d.push({op:"+",text:l[p]}),p++);return[...n.slice(0,a).map(e=>({op:" ",text:e})),...d,...n.slice(s).map(e=>({op:" ",text:e}))]}(a,x.content)).map(()=>!1),e.forEach((n,r)=>{if(" "!==n.op)for(let n=Math.max(0,r-2);n<=Math.min(e.length-1,r+2);n++)t[n]=!0}),n=[],e.forEach((e,r)=>{t[r]?n.push(e):"number"==typeof n[n.length-1]?n[n.length-1]=n[n.length-1]+1:n.push(1)}),n)},[a,x]),g=f.filter(e=>"number"!=typeof e&&"+"===e.op).length,b=f.filter(e=>"number"!=typeof e&&"-"===e.op).length;async function y(){c(!0),i(null);try{let r=await fetch(`/api/docs${n}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:e.path,edits:e.edits,actor:"ai"})});if(!r.ok)throw Error((await r.json().catch(()=>null))?.error??"Save failed");t("accepted")}catch(e){i(e.message)}finally{c(!1)}}return(0,d.jsxs)("div",{className:"my-2 rounded-md border border-border overflow-hidden",children:[(0,d.jsxs)("div",{className:"flex items-center gap-2 px-2 py-1.5 bg-surface2 border-b border-border",children:[(0,d.jsx)("button",{onClick:()=>r(e.path),className:"text-xs font-mono text-accent truncate hover:underline",title:e.path,children:e.path}),(0,d.jsxs)("span",{className:"text-[10px] font-mono text-teal-400",children:["+",g]}),(0,d.jsxs)("span",{className:"text-[10px] font-mono text-red-400",children:["-",b]})]}),e.summary&&(0,d.jsx)("div",{className:"px-2 py-1 text-xs text-muted border-b border-border",children:e.summary}),(0,d.jsxs)("div",{className:"max-h-72 overflow-auto text-[11px] font-mono leading-5",children:[null===a&&(0,d.jsx)("div",{className:"px-2 py-1 text-muted",children:"Loading diff…"}),m&&(0,d.jsxs)("div",{className:"px-2 py-1 text-red-400",children:["Doc changed since this proposal (",m,"). Ask the agent to propose again."]}),null!==a&&!m&&0===f.length&&(0,d.jsx)("div",{className:"px-2 py-1 text-muted",children:"No changes"}),f.map((e,t)=>"number"==typeof e?(0,d.jsxs)("div",{className:"px-2 text-muted bg-surface2/50",children:["⋯ ",e," unchanged line",e>1?"s":""]},t):(0,d.jsxs)("div",{className:(0,h.cn)("px-2 whitespace-pre-wrap break-words","+"===e.op&&"bg-teal-500/10 text-teal-300","-"===e.op&&"bg-red-500/10 text-red-300 line-through decoration-red-400/40"),children:[e.op," ",e.text||" "]},t))]}),(0,d.jsxs)("div",{className:"flex items-center gap-2 px-2 py-1.5 border-t border-border",children:["pending"===e.status?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)("button",{onClick:y,disabled:l||null===a||!!m,className:"text-xs px-2 py-0.5 rounded-sm bg-accent/20 text-accent hover:bg-accent/30 disabled:opacity-50",children:l?"Applying…":"Accept"}),(0,d.jsx)("button",{onClick:()=>t("rejected"),disabled:l,className:"text-xs px-2 py-0.5 rounded-sm text-muted hover:text-txt",children:"Reject"})]}):(0,d.jsx)("span",{className:(0,h.cn)("text-xs","accepted"===e.status?"text-teal-400":"text-muted"),children:"accepted"===e.status?"✓ Applied":"Rejected"}),o&&(0,d.jsx)("span",{className:"text-xs text-red-400 truncate",children:o})]})]})}],388101);var x=e.i(998822);function m({rowKey:e,title:t,meta:n,body:r,indent:a,checked:s,disabled:o,onToggle:i,open:l,onOpen:c}){return(0,d.jsxs)("li",{"data-plan-row":e,className:"border-b border-border last:border-b-0",children:[(0,d.jsxs)("div",{className:(0,h.cn)("flex items-start gap-2 px-2 py-1.5",a&&"pl-6"),children:[(0,d.jsx)("input",{type:"checkbox","aria-label":`Include ${t}`,checked:s,disabled:o,onChange:i,className:"mt-0.5 accent-accent"}),(0,d.jsxs)("button",{onClick:c,className:"flex-1 min-w-0 text-left",children:[(0,d.jsxs)("div",{className:(0,h.cn)("text-xs text-txt",!s&&"line-through text-muted"),children:[(0,d.jsx)("span",{className:"font-mono text-muted mr-1",children:e}),t]}),n&&(0,d.jsx)("div",{className:"text-[10px] font-mono text-muted truncate",children:n})]})]}),l&&r&&(0,d.jsx)("div",{className:"px-3 pb-2 border-t border-border bg-surface2/40",children:(0,d.jsx)(x.MarkdownRenderer,{content:r,className:"text-xs"})})]})}e.s(["PlanCard",0,function({proposal:e,onResolve:t}){let{rootParam:n,openDoc:r}=(0,p.useApp)(),a=e.plan,s="breakdown"===a.kind?a.tasks:[],o="roadmap"===a.kind?a.horizons??[]:[],i="roadmap"===a.kind?a.epics??[]:[],l="breakdown"===a.kind?(a.epic??"").trim().toUpperCase():"",c="breakdown"===a.kind?a.newEpic:void 0,[h,x]=(0,u.useState)(new Map),[f,g]=(0,u.useState)(new Set),[b,y]=(0,u.useState)(null),[j,v]=(0,u.useState)(null),[N,w]=(0,u.useState)(!1);(0,u.useEffect)(()=>{fetch(`/api/roadmap${n}`).then(e=>e.ok?e.json():null).then(e=>x(new Map((e?.items??[]).map(e=>[e.id,e.title])))).catch(()=>x(new Map))},[n]);let k=("breakdown"===a.kind?s.map(e=>e.key):[...o,...i].map(e=>e.key)).filter(e=>!f.has(e)),C="pending"===e.status,S=new Set(o.map(e=>e.key)),E=(e,t,n,r,a=!1)=>(0,d.jsx)(m,{rowKey:e,title:t,meta:n,body:r,indent:a,checked:!f.has(e),disabled:!C||N,onToggle:()=>{v(null),g(t=>{let n=new Set(t),r=n.has(e);for(let t of S.has(e)?[e,...i.filter(t=>t.parent.trim()===e).map(e=>e.key)]:[e])r?n.delete(t):n.add(t);let a=i.find(t=>t.key===e)?.parent.trim();return r&&a&&S.has(a)&&n.delete(a),n})},open:b===e,onOpen:()=>y(b===e?null:e)},e),_=e=>e.trim().split("\n")[0]??"",P=[...new Set(i.map(e=>e.parent.trim()).filter(e=>!S.has(e)))];async function A(){w(!0),v(null);try{let e=await fetch(`/api/plan/apply${n}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({plan:a,selected:k})}),r=await e.json().catch(()=>null);if(!e.ok)throw Error(r?.error??`Apply failed (${e.status})`);t("accepted",r?.created??[],[...f])}catch(e){v(e.message)}finally{w(!1)}}return(0,d.jsxs)("div",{className:"my-2 rounded-md border border-border overflow-hidden",children:[(0,d.jsxs)("div",{className:"flex items-center gap-2 px-2 py-1.5 bg-surface2 border-b border-border",children:[(0,d.jsx)("span",{className:"text-[10px] font-mono uppercase tracking-widest text-muted",children:"Plan"}),"breakdown"===a.kind?(0,d.jsxs)(d.Fragment,{children:[l?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)("span",{className:"text-xs font-mono text-accent",children:l}),(0,d.jsx)("span",{className:"text-xs text-txt truncate",children:h.get(l)??""})]}):c?(0,d.jsxs)("span",{className:"text-xs text-txt truncate",children:["New epic: ",c.title,(0,d.jsxs)("span",{className:"text-muted",children:[" (under ",c.parent.trim().toUpperCase()," ",h.get(c.parent.trim().toUpperCase())??"",")"]})]}):(0,d.jsx)("span",{className:"text-xs text-muted",children:"No epic"}),(0,d.jsxs)("span",{className:"ml-auto text-[10px] font-mono text-muted",children:[s.length," tasks"]})]}):(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)("span",{className:"text-xs text-txt",children:"Roadmap"}),(0,d.jsxs)("span",{className:"ml-auto text-[10px] font-mono text-muted",children:[o.length?`${o.length} horizons \xb7 `:"",i.length," epics"]})]})]}),(0,d.jsxs)("ul",{className:"max-h-80 overflow-auto",children:[s.map(e=>E(e.key,e.title,[e.size,e.dependsOn?.length?`after ${e.dependsOn.join(", ")}`:null,e.due?`due ${e.due}`:null].filter(Boolean).join(" · "),e.body)),o.map(e=>[E(e.key,e.title,"new horizon",e.body),...i.filter(t=>t.parent.trim()===e.key).map(e=>E(e.key,e.title,_(e.body),e.body,!0))]),P.map(e=>[(0,d.jsxs)("li",{className:"px-2 py-1.5 border-b border-border text-xs text-muted",children:[(0,d.jsx)("span",{className:"font-mono text-accent mr-1",children:e.toUpperCase()}),h.get(e.toUpperCase())??""]},`parent-${e}`),...i.filter(t=>t.parent.trim()===e).map(e=>E(e.key,e.title,_(e.body),e.body,!0))])]}),j&&(0,d.jsx)("div",{className:"px-2 py-1 text-xs text-red-400 whitespace-pre-wrap border-t border-border",children:j}),(0,d.jsx)("div",{className:"flex items-center gap-2 px-2 py-1.5 border-t border-border",children:C?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)("button",{onClick:A,disabled:N||0===k.length,className:"text-xs px-2 py-0.5 rounded-sm bg-accent/20 text-accent hover:bg-accent/30 disabled:opacity-50",children:N?"Creating…":`Accept (${k.length})`}),(0,d.jsx)("button",{onClick:()=>t("rejected",[],[]),disabled:N,className:"text-xs px-2 py-0.5 rounded-sm text-muted hover:text-txt",children:"Reject"})]}):"accepted"===e.status?(0,d.jsxs)("span",{className:"text-xs text-teal-400",children:["✓ Created"," ",(e.created??[]).map((e,t)=>(0,d.jsxs)("span",{children:[t>0&&", ",(0,d.jsx)("button",{onClick:()=>r(e.file),className:"font-mono hover:underline",children:e.id})]},e.id))]}):(0,d.jsx)("span",{className:"text-xs text-muted",children:"Rejected"})})]})}],650229)},138324,(e,t,n)=>{"use strict";e.i(583225),Object.defineProperty(n,"__esModule",{value:!0});var r={default:function(){return g},useLinkStatus:function(){return y}};for(var a in r)Object.defineProperty(n,a,{enumerable:!0,get:r[a]});let s=e.r(56421),o=e.r(72345),i=s._(e.r(180338)),l=e.r(626167),c=e.r(757336),d=e.r(863555),u=e.r(549757),p=e.r(671412),h=e.r(235871),x=e.r(716851),m=e.r(658853),f=e.r(571921);function g(t){var n;let r,a,s,[g,y]=(0,i.useOptimistic)(x.IDLE_LINK_STATUS),j=(0,i.useRef)(null),{href:v,as:N,children:w,prefetch:k=null,passHref:C,replace:S,shallow:E,scroll:_,onClick:P,onMouseEnter:A,onTouchStart:O,legacyBehavior:$=!1,onNavigate:T,transitionTypes:M,ref:R,unstable_dynamicOnHover:z,...U}=t;r=w,$&&("string"==typeof r||"number"==typeof r)&&(r=(0,o.jsx)("a",{children:r}));let L=i.default.useContext(c.AppRouterContext),I=!1!==k,D=!1===k?"none":!0===k?"full":"auto",F="none"!==D?"auto"===D?f.FetchStrategy.PPR:f.FetchStrategy.Full:f.FetchStrategy.PPR,B="string"==typeof(n=N||v)?n:(0,l.formatUrl)(n);if($){if(r?.$$typeof===Symbol.for("react.lazy"))throw Object.defineProperty(Error("`<Link legacyBehavior>` received a direct child that is either a Server Component, or JSX that was loaded with React.lazy(). This is not supported. Either remove legacyBehavior, or make the direct child a Client Component that renders the Link's `<a>` tag."),"__NEXT_ERROR_CODE",{value:"E863",enumerable:!1,configurable:!0});a=i.default.Children.only(r)}let q=$?a&&"object"==typeof a&&a.ref:R,K,V=i.default.useCallback(e=>(null!==L&&(j.current=(0,x.mountLinkInstance)(e,B,L,F,I,y,K)),()=>{j.current&&((0,x.unmountLinkForCurrentNavigation)(j.current),j.current=null),(0,x.unmountPrefetchableInstance)(e)}),[I,B,L,F,y,K]),H={ref:(0,d.useMergedRef)(V,q),onClick(t){$||"function"!=typeof P||P(t),$&&a.props&&"function"==typeof a.props.onClick&&a.props.onClick(t),!L||t.defaultPrevented||function(t,n,r,a,s,o,l,c="none"){if("u">typeof window){let d,{nodeName:u}=t.currentTarget;if("A"===u.toUpperCase()&&((d=t.currentTarget.getAttribute("target"))&&"_self"!==d||t.metaKey||t.ctrlKey||t.shiftKey||t.altKey||t.nativeEvent&&2===t.nativeEvent.which)||t.currentTarget.hasAttribute("download"))return;if(!(0,m.isLocalURL)(n)){a&&(t.preventDefault(),location.replace(n));return}if(t.preventDefault(),o){let e=!1;if(o({preventDefault:()=>{e=!0}}),e)return}let{dispatchNavigateAction:p}=e.r(187250);i.default.startTransition(()=>{p(n,a?"replace":"push",!1===s?h.ScrollBehavior.NoScroll:h.ScrollBehavior.Default,r.current,l,c)})}}(t,B,j,S,_,T,M,D)},onMouseEnter(e){$||"function"!=typeof A||A(e),$&&a.props&&"function"==typeof a.props.onMouseEnter&&a.props.onMouseEnter(e),L&&I&&(0,x.onNavigationIntent)(e.currentTarget,!0===z)},onTouchStart:function(e){$||"function"!=typeof O||O(e),$&&a.props&&"function"==typeof a.props.onTouchStart&&a.props.onTouchStart(e),L&&I&&(0,x.onNavigationIntent)(e.currentTarget,!0===z)}};return(0,u.isAbsoluteUrl)(B)?H.href=B:$&&!C&&("a"!==a.type||"href"in a.props)||(H.href=(0,p.addBasePath)(B)),s=$?i.default.cloneElement(a,H):(0,o.jsx)("a",{...U,...H,children:r}),(0,o.jsx)(b.Provider,{value:g,children:s})}let b=(0,i.createContext)(x.IDLE_LINK_STATUS),y=()=>(0,i.useContext)(b);("function"==typeof n.default||"object"==typeof n.default&&null!==n.default)&&void 0===n.default.__esModule&&(Object.defineProperty(n.default,"__esModule",{value:!0}),Object.assign(n.default,n),t.exports=n.default)},863555,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"useMergedRef",{enumerable:!0,get:function(){return a}});let r=e.r(180338);function a(e,t){let n=(0,r.useRef)(null),a=(0,r.useRef)(null);return(0,r.useCallback)(r=>{if(null===r){let e=n.current;e&&(n.current=null,e());let t=a.current;t&&(a.current=null,t())}else e&&(n.current=s(e,r)),t&&(a.current=s(t,r))},[e,t])}function s(e,t){if("function"!=typeof e)return e.current=t,()=>{e.current=null};{let n=e(t);return"function"==typeof n?n:()=>e(null)}}("function"==typeof n.default||"object"==typeof n.default&&null!==n.default)&&void 0===n.default.__esModule&&(Object.defineProperty(n.default,"__esModule",{value:!0}),Object.assign(n.default,n),t.exports=n.default)},549757,(e,t,n)=>{"use strict";e.i(583225),Object.defineProperty(n,"__esModule",{value:!0});var r={DecodeError:function(){return g},MiddlewareNotFoundError:function(){return v},MissingStaticPage:function(){return j},NormalizeError:function(){return b},PageNotFoundError:function(){return y},SP:function(){return m},ST:function(){return f},WEB_VITALS:function(){return s},execOnce:function(){return o},getDisplayName:function(){return u},getLocationOrigin:function(){return c},getURL:function(){return d},isAbsoluteUrl:function(){return l},isResSent:function(){return p},loadGetInitialProps:function(){return x},normalizeRepeatedSlashes:function(){return h},stringifyError:function(){return N}};for(var a in r)Object.defineProperty(n,a,{enumerable:!0,get:r[a]});let s=["CLS","FCP","FID","INP","LCP","TTFB"];function o(e){let t,n=!1;return(...r)=>(n||(n=!0,t=e(...r)),t)}let i=/^[a-zA-Z][a-zA-Z\d+\-.]*?:/,l=e=>{let t=e.charCodeAt(0);return!!(t>=65&&t<=90||t>=97&&t<=122)&&i.test(e)};function c(){let{protocol:e,hostname:t,port:n}=window.location;return`${e}//${t}${n?":"+n:""}`}function d(){let{href:e}=window.location,t=c();return e.substring(t.length)}function u(e){return"string"==typeof e?e:e.displayName||e.name||"Unknown"}function p(e){return e.finished||e.headersSent}function h(e){let t=e.split("?");return t[0].replace(/\\/g,"/").replace(/\/\/+/g,"/")+(t[1]?`?${t.slice(1).join("?")}`:"")}async function x(e,t){let n=t.res||t.ctx&&t.ctx.res;if(!e.getInitialProps)return t.ctx&&t.Component?{pageProps:await x(t.Component,t.ctx)}:{};let r=await e.getInitialProps(t);if(n&&p(n))return r;if(!r)throw Object.defineProperty(Error(`"${u(e)}.getInitialProps()" should resolve to an object. But found "${r}" instead.`),"__NEXT_ERROR_CODE",{value:"E1025",enumerable:!1,configurable:!0});return r}let m="u">typeof performance,f=m&&["mark","measure","getEntriesByName"].every(e=>"function"==typeof performance[e]);class g extends Error{}class b extends Error{}class y extends Error{constructor(e){super(),this.code="ENOENT",this.name="PageNotFoundError",this.message=`Cannot find module for page: ${e}`}}class j extends Error{constructor(e,t){super(),this.message=`Failed to load static file for page: ${e} ${t}`}}class v extends Error{constructor(){super(),this.code="ENOENT",this.message="Cannot find the middleware module"}}function N(e){return JSON.stringify({message:e.message,stack:e.stack})}},658853,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"isLocalURL",{enumerable:!0,get:function(){return s}});let r=e.r(549757),a=e.r(144654);function s(e){if(!(0,r.isAbsoluteUrl)(e))return!0;try{let t=(0,r.getLocationOrigin)(),n=new URL(e,t);return n.origin===t&&(0,a.hasBasePath)(n.pathname)}catch(e){return!1}}},818732,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0});var r={assign:function(){return l},searchParamsToUrlQuery:function(){return s},urlQueryToSearchParams:function(){return i}};for(var a in r)Object.defineProperty(n,a,{enumerable:!0,get:r[a]});function s(e){let t={};for(let[n,r]of e.entries()){let e=t[n];void 0===e?t[n]=r:Array.isArray(e)?e.push(r):t[n]=[e,r]}return t}function o(e){return"string"==typeof e?e:("number"!=typeof e||isNaN(e))&&"boolean"!=typeof e?"":String(e)}function i(e){let t=new URLSearchParams;for(let[n,r]of Object.entries(e))if(Array.isArray(r))for(let e of r)t.append(n,o(e));else t.set(n,o(r));return t}function l(e,...t){for(let n of t){for(let t of n.keys())e.delete(t);for(let[t,r]of n.entries())e.append(t,r)}return e}},626167,(e,t,n)=>{"use strict";e.i(583225),Object.defineProperty(n,"__esModule",{value:!0});var r={formatUrl:function(){return i},formatWithValidation:function(){return c},urlObjectKeys:function(){return l}};for(var a in r)Object.defineProperty(n,a,{enumerable:!0,get:r[a]});let s=e.r(56421)._(e.r(818732)),o=/https?|ftp|gopher|file/;function i(e){let{auth:t,hostname:n}=e,r=e.protocol||"",a=e.pathname||"",i=e.hash||"",l=e.query||"",c=!1;t=t?encodeURIComponent(t).replace(/%3A/i,":")+"@":"",e.host?c=t+e.host:n&&(c=t+(~n.indexOf(":")?`[${n}]`:n),e.port&&(c+=":"+e.port)),l&&"object"==typeof l&&(l=String(s.urlQueryToSearchParams(l)));let d=e.search||l&&`?${l}`||"";return r&&!r.endsWith(":")&&(r+=":"),e.slashes||(!r||o.test(r))&&!1!==c?(c="//"+(c||""),a&&"/"!==a[0]&&(a="/"+a)):c||(c=""),i&&"#"!==i[0]&&(i="#"+i),d&&"?"!==d[0]&&(d="?"+d),a=a.replace(/[?#]/g,encodeURIComponent),d=d.replace("#","%23"),`${r}${c}${a}${d}${i}`}let l=["auth","hash","host","hostname","href","path","pathname","port","protocol","query","search","slashes"];function c(e){return i(e)}},782630,e=>{"use strict";var t=e.i(72345),n=e.i(180338),r=e.i(910172),a=e.i(270379),s=e.i(956537),o=e.i(773286),i=e.i(239528),l=e.i(458055),c=e.i(763371),d=e.i(244267),u=e.i(998822),p=e.i(975157),h=e.i(481523),x=e.i(388101),m=e.i(650229),f=e.i(702197),g=e.i(844081);let b="grid size-8 shrink-0 place-items-center rounded-md text-muted transition-colors duration-(--duration-fast) hover:bg-surface2 hover:text-txt";function y({chat:e,hidden:r,wide:a}){let{send:s,resolveProposal:o,resolvePlan:i,answerQuestions:l}=(0,d.useChats)(),c=(0,n.useRef)(null),u=e.messages;return(0,n.useEffect)(()=>{let e=c.current;e&&!r&&(e.scrollTop=e.scrollHeight)},[u,r]),(0,t.jsx)("div",{ref:c,hidden:r,role:"log","aria-live":"polite",className:"min-h-0 flex-1 overflow-y-auto",children:(0,t.jsxs)("div",{className:(0,p.cn)("mx-auto flex flex-col gap-5 px-5 py-6 text-sm",a?"max-w-3xl":"max-w-none"),children:[0===u.length&&(0,t.jsx)(N,{chat:e,onPick:t=>s(e.id,t)}),u.map((n,r)=>(0,t.jsx)(j,{m:n,thinking:e.busy&&r===u.length-1,busy:e.busy,onProposal:(t,n,r)=>o(e.id,t,n,r),onPlan:(t,n,r,a)=>i(e.id,t,n,r,a),onAnswers:(t,n)=>l(e.id,t,n)},r))]})})}function j({m:e,thinking:n,busy:r,onProposal:a,onPlan:s,onAnswers:o}){return"user"===e.role?(0,t.jsx)("div",{className:"flex justify-end animate-fade-in",children:(0,t.jsx)("div",{className:"max-w-[85%] whitespace-pre-wrap rounded-2xl rounded-br-md border border-accent/20 bg-accent/10 px-3.5 py-2 text-txt",children:e.text})}):(0,t.jsxs)("div",{className:"flex gap-3 animate-fade-in",children:[(0,t.jsx)("div",{className:"mt-0.5 grid size-6 shrink-0 place-items-center rounded-md bg-linear-to-br from-accent to-teal text-[10px] text-white","aria-hidden":!0,children:"⬡"}),(0,t.jsxs)("div",{className:"min-w-0 flex-1 space-y-2",children:[e.tools.length>0&&(0,t.jsx)("div",{className:"flex flex-wrap gap-1",children:e.tools.map((e,n)=>(0,t.jsx)("span",{className:"rounded-sm border border-border bg-surface2 px-1.5 py-0.5 font-mono text-[10px] text-muted animate-slide-in",children:e},n))}),e.proposals.map(e=>(0,t.jsx)(x.ProposalCard,{proposal:e,onResolve:t=>a(e.id,e.path,t)},e.id)),e.plans.map(e=>(0,t.jsx)(m.PlanCard,{proposal:e,onResolve:(t,n,r)=>s(e,t,n,r)},e.id)),e.questions.map(e=>(0,t.jsx)(f.QuestionCard,{set:e,disabled:r,onSubmit:t=>o(e,t)},e.id)),e.text&&(0,t.jsx)(u.MarkdownRenderer,{content:e.text,className:"text-sm"}),n&&!e.text&&!e.error&&(0,t.jsx)(v,{}),e.error&&(0,t.jsx)("p",{className:"whitespace-pre-wrap text-xs text-danger",children:e.error})]})]})}function v(){return(0,t.jsxs)("span",{className:"inline-flex items-center gap-2 text-xs text-muted",children:[(0,t.jsx)("span",{className:"inline-flex gap-1","aria-hidden":!0,children:[0,150,300].map(e=>(0,t.jsx)("span",{className:"size-1.5 rounded-full bg-accent animate-pulse-dot",style:{animationDelay:`${e}ms`}},e))}),"Thinking…"]})}function N({chat:e,onPick:n}){let r=e.attach;return(0,t.jsxs)("div",{className:"flex flex-col items-start gap-4 py-6 animate-fade-in",children:[(0,t.jsx)("div",{className:"grid size-9 place-items-center rounded-lg bg-linear-to-br from-accent to-teal text-sm text-white","aria-hidden":!0,children:"⬡"}),(0,t.jsxs)("div",{children:[(0,t.jsx)("h3",{className:"text-lg font-semibold text-txt",children:r?`Ask about ${r.id}`:"Ask the agent"}),(0,t.jsx)("p",{className:"mt-1 max-w-md text-sm text-muted",children:r?`The agent reads ${"epic"===r.kind?"the epic and its tasks":"the task"} first. It proposes changes; nothing is written until you accept.`:"It reads your docs, tasks and roadmap and proposes edits you review. Runs on your local Claude Code login."})]}),(0,t.jsx)("div",{className:"flex flex-col gap-1.5",children:(0,h.suggestions)(r).map((e,r)=>(0,t.jsxs)("button",{type:"button",onClick:()=>n(e),style:{animationDelay:`${60*r}ms`},className:"group flex items-center gap-2 rounded-lg border border-border px-3 py-2 text-left text-sm text-txt/90 transition-colors duration-(--duration-fast) animate-slide-in [animation-fill-mode:both] hover:border-accent/50 hover:bg-accent/5",children:[(0,t.jsx)(s.ArrowUpRight,{className:"size-3.5 text-muted transition-transform duration-(--duration-fast) group-hover:-translate-y-px group-hover:translate-x-px group-hover:text-accent"}),e]},e))})]})}function w({chat:e,wide:s}){let{send:o,stop:l}=(0,d.useChats)(),{selectedDoc:u}=(0,c.useApp)(),h=(0,r.usePathname)(),[x,m]=(0,n.useState)(""),f="/docs"===h?u?.path:void 0,g=e.messages[e.messages.length-1],b=!!g?.questions.some(e=>!e.answers),y=Math.min(8,Math.max(1,x.split("\n").length));function j(){x.trim()&&!e.busy&&(o(e.id,x),m(""))}return(0,t.jsx)("div",{className:"shrink-0 px-5 pb-4 pt-1",children:(0,t.jsxs)("div",{className:(0,p.cn)("mx-auto rounded-xl border border-border bg-surface2 transition-[border-color,box-shadow] duration-(--duration-base) focus-within:border-accent/60 focus-within:shadow-[0_0_0_3px_rgb(var(--rgb-accent)/0.12)]",s?"max-w-3xl":"max-w-none"),children:[(0,t.jsx)("textarea",{autoFocus:!0,value:x,onChange:e=>m(e.target.value),onKeyDown:e=>{"Enter"!==e.key||e.shiftKey||e.nativeEvent.isComposing||(e.preventDefault(),j())},rows:y,placeholder:e.busy?"Agent is working…":b?"Answer the questions above…":"Ask the agent… (Enter to send)",className:"block w-full resize-none bg-transparent px-3.5 pt-3 text-sm text-txt placeholder:text-muted focus:outline-hidden"}),(0,t.jsxs)("div",{className:"flex items-center gap-2 px-2.5 pb-2 pt-1",children:[(0,t.jsx)("span",{className:"min-w-0 flex-1 truncate font-mono text-[10px] text-muted",children:f?`@ ${f}`:"Shift+Enter for a new line"}),e.busy?(0,t.jsxs)("button",{type:"button",onClick:()=>l(e.id),title:"Stop the agent",className:"grid size-7 place-items-center rounded-full border border-border text-muted transition-colors hover:text-txt",children:[(0,t.jsx)(i.Square,{className:"size-3 fill-current"}),(0,t.jsx)("span",{className:"sr-only",children:"Stop"})]}):(0,t.jsxs)("button",{type:"button",onClick:j,disabled:!x.trim(),title:"Send (Enter)",className:"grid size-7 place-items-center rounded-full bg-accent text-white transition-[opacity,transform] duration-(--duration-fast) enabled:hover:scale-105 disabled:opacity-30",children:[(0,t.jsx)(a.ArrowUp,{className:"size-3.5"}),(0,t.jsx)("span",{className:"sr-only",children:"Send"})]})]})]})})}e.s(["ChatView",0,function({chatId:e,variant:a,onExpand:s,onNavigate:c}){let{chats:u,stop:x,remove:m,notice:f,dismissNotice:j}=(0,d.useChats)(),v=(0,r.useRouter)(),N=u.find(t=>t.id===e),[k,C]=(0,n.useState)([e]);if(k.includes(e)||C([...k,e]),!N)return(0,t.jsx)("div",{className:"grid h-full place-items-center p-8 text-sm text-muted",children:"This chat was closed."});let S=(0,h.chatStatus)(N);return(0,t.jsxs)("section",{"aria-label":`Chat: ${N.title}`,className:"flex h-full min-h-0 flex-col",children:[(0,t.jsxs)("header",{className:(0,p.cn)("flex h-14 shrink-0 items-center gap-3 border-b border-border px-5","modal"===a&&"pr-14"),children:[(0,t.jsx)(g.StatusMarker,{status:S,showIdle:!0}),(0,t.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,t.jsx)("h2",{className:"truncate text-sm font-medium text-txt",children:N.title}),(0,t.jsx)("p",{className:"font-mono text-[10px] text-muted",children:h.STATUS_LABEL[S]})]}),N.attach&&(0,t.jsx)("button",{type:"button",onClick:()=>{var e;return N.attach&&(e=(0,g.attachHref)(N.attach),void(c?.(),v.push(e)))},title:`Open ${N.attach.id} in the ${"epic"===N.attach.kind?"roadmap":"board"}`,className:"rounded-full border border-border px-2 py-1 text-muted transition-colors duration-(--duration-fast) hover:border-accent/50 hover:text-accent",children:(0,t.jsx)(g.AttachLabel,{attach:N.attach})}),N.busy&&(0,t.jsxs)("button",{type:"button",onClick:()=>x(N.id),title:"Stop the agent",className:b,children:[(0,t.jsx)(i.Square,{className:"size-3.5 fill-current"}),(0,t.jsx)("span",{className:"sr-only",children:"Stop"})]}),"modal"===a&&s&&(0,t.jsxs)("button",{type:"button",onClick:s,title:"Open as page",className:b,children:[(0,t.jsx)(o.Maximize2,{className:"size-3.5"}),(0,t.jsx)("span",{className:"sr-only",children:"Open as page"})]}),"page"===a&&(0,t.jsx)("button",{type:"button",onClick:()=>m(N.id),"aria-label":`Delete ${N.title}`,title:"Delete chat",className:(0,p.cn)(b,"hover:text-danger"),children:(0,t.jsx)(l.Trash2,{className:"size-3.5"})})]}),k.map(n=>{let r=u.find(e=>e.id===n);return r?(0,t.jsx)(y,{chat:r,hidden:n!==e,wide:"page"===a},n):null}),f&&(0,t.jsxs)("div",{role:"status",className:"mx-5 mb-2 flex items-start gap-2 rounded-md border border-amber/30 bg-amber/10 px-3 py-2 text-xs text-amber animate-fade-in",children:[(0,t.jsx)("span",{className:"flex-1",children:f}),(0,t.jsx)("button",{onClick:j,"aria-label":"Dismiss",className:"leading-none text-muted hover:text-txt",children:"×"})]}),(0,t.jsx)(w,{chat:N,wide:"page"===a},N.id)]})}])},844081,192871,e=>{"use strict";var t=e.i(72345),n=e.i(240595),r=e.i(83790);let a={name:"map",size:24,node:[["path",{d:"M14.106 5.553a2 2 0 0 0 1.788 0l3.659-1.83A1 1 0 0 1 21 4.619v12.764a1 1 0 0 1-.553.894l-4.553 2.277a2 2 0 0 1-1.788 0l-4.212-2.106a2 2 0 0 0-1.788 0l-3.659 1.83A1 1 0 0 1 3 19.381V6.618a1 1 0 0 1 .553-.894l4.553-2.277a2 2 0 0 1 1.788 0z",key:"169xi5"}],["path",{d:"M15 5.764v15",key:"1pn4in"}],["path",{d:"M9 3.236v15",key:"1uimfh"}]]};a.node;let s=(0,r.default)(a);e.s(["Map",0,s],192871);let o={name:"square-check",size:24,node:[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"m16 9-5.5 5.5L8 12",key:"xofnsj"}]],aliases:["check-square-2"]};o.node;let i=(0,r.default)(o);var l=e.i(975157),c=e.i(481523);e.s(["AttachLabel",0,function({attach:e,className:n}){let r="epic"===e.kind?s:i;return(0,t.jsxs)("span",{className:(0,l.cn)("inline-flex items-center gap-1 font-mono text-[10px] leading-none",n),children:[(0,t.jsx)(r,{className:"size-3"}),e.id]})},"StatusMarker",0,function({status:e,showIdle:r=!1,className:a}){return"idle"!==e||r?(0,t.jsx)("span",{title:c.STATUS_LABEL[e],className:(0,l.cn)("inline-flex size-3 shrink-0 items-center justify-center",a),children:"running"===e?(0,t.jsx)(n.Loader2,{className:"size-3 animate-spin text-accent"}):(0,t.jsx)("span",{className:(0,l.cn)("size-1.5 rounded-full","needs-answer"===e&&"bg-amber animate-pulse-dot","review"===e&&"bg-accent animate-pulse-dot","error"===e&&"bg-danger","idle"===e&&"border border-muted/60")})}):null},"attachHref",0,function(e){return"epic"===e.kind?`/roadmap?item=${e.id}`:`/board?task=${e.id}`}],844081)}]);
|