vibedoc 1.6.0 → 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.
Files changed (302) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-path-routes-manifest.json +2 -0
  3. package/.next/build-manifest.json +3 -3
  4. package/.next/prerender-manifest.json +39 -11
  5. package/.next/routes-manifest.json +12 -0
  6. package/.next/server/app/(app)/activity/page.js.nft.json +1 -1
  7. package/.next/server/app/(app)/activity/page_client-reference-manifest.js +1 -1
  8. package/.next/server/app/(app)/board/page.js.nft.json +1 -1
  9. package/.next/server/app/(app)/board/page_client-reference-manifest.js +1 -1
  10. package/.next/server/app/(app)/chat/page/app-paths-manifest.json +3 -0
  11. package/.next/server/app/(app)/chat/page/build-manifest.json +20 -0
  12. package/.next/server/app/(app)/chat/page/next-font-manifest.json +11 -0
  13. package/.next/server/app/(app)/chat/page/react-loadable-manifest.json +1 -0
  14. package/.next/server/app/(app)/chat/page/server-reference-manifest.json +4 -0
  15. package/.next/server/app/(app)/chat/page.js +15 -0
  16. package/.next/server/app/(app)/chat/page.js.map +5 -0
  17. package/.next/server/app/(app)/chat/page.js.nft.json +1 -0
  18. package/.next/server/app/(app)/chat/page_client-reference-manifest.js +3 -0
  19. package/.next/server/app/(app)/docs/page.js.nft.json +1 -1
  20. package/.next/server/app/(app)/docs/page_client-reference-manifest.js +1 -1
  21. package/.next/server/app/(app)/explorer/page.js.nft.json +1 -1
  22. package/.next/server/app/(app)/explorer/page_client-reference-manifest.js +1 -1
  23. package/.next/server/app/(app)/memory/page.js.nft.json +1 -1
  24. package/.next/server/app/(app)/memory/page_client-reference-manifest.js +1 -1
  25. package/.next/server/app/(app)/roadmap/page.js.nft.json +1 -1
  26. package/.next/server/app/(app)/roadmap/page_client-reference-manifest.js +1 -1
  27. package/.next/server/app/(app)/settings/page.js.nft.json +1 -1
  28. package/.next/server/app/(app)/settings/page_client-reference-manifest.js +1 -1
  29. package/.next/server/app/(app)/setup/page.js.nft.json +1 -1
  30. package/.next/server/app/(app)/setup/page_client-reference-manifest.js +1 -1
  31. package/.next/server/app/_global-error.html +1 -1
  32. package/.next/server/app/_global-error.rsc +1 -1
  33. package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  34. package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  35. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  36. package/.next/server/app/_not-found/page.js.nft.json +1 -1
  37. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  38. package/.next/server/app/_not-found.html +1 -1
  39. package/.next/server/app/_not-found.rsc +2 -2
  40. package/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
  41. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
  42. package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  43. package/.next/server/app/activity.html +1 -1
  44. package/.next/server/app/activity.rsc +22 -23
  45. package/.next/server/app/activity.segments/!KGFwcCk/activity/__PAGE__.segment.rsc +9 -10
  46. package/.next/server/app/activity.segments/_full.segment.rsc +22 -23
  47. package/.next/server/app/activity.segments/_tree.segment.rsc +2 -2
  48. package/.next/server/app/api/activity/route.js.nft.json +1 -1
  49. package/.next/server/app/api/backlinks/route.js.nft.json +1 -1
  50. package/.next/server/app/api/chat/route.js.nft.json +1 -1
  51. package/.next/server/app/api/context/route.js.nft.json +1 -1
  52. package/.next/server/app/api/conversations/route/app-paths-manifest.json +3 -0
  53. package/.next/server/app/api/conversations/route/build-manifest.json +12 -0
  54. package/.next/server/app/api/conversations/route/server-reference-manifest.json +4 -0
  55. package/.next/server/app/api/conversations/route.js +9 -0
  56. package/.next/server/app/api/conversations/route.js.map +5 -0
  57. package/.next/server/app/api/conversations/route.js.nft.json +1 -0
  58. package/.next/server/app/api/conversations/route_client-reference-manifest.js +3 -0
  59. package/.next/server/app/api/decisions/route.js.nft.json +1 -1
  60. package/.next/server/app/api/docs/route.js.nft.json +1 -1
  61. package/.next/server/app/api/explorer/route.js.nft.json +1 -1
  62. package/.next/server/app/api/mcp/route.js.nft.json +1 -1
  63. package/.next/server/app/api/memory/route.js.nft.json +1 -1
  64. package/.next/server/app/api/plan/apply/route.js.nft.json +1 -1
  65. package/.next/server/app/api/projects/route.js.nft.json +1 -1
  66. package/.next/server/app/api/registry/route.js.nft.json +1 -1
  67. package/.next/server/app/api/roadmap/create/route.js.nft.json +1 -1
  68. package/.next/server/app/api/roadmap/delete/route.js.nft.json +1 -1
  69. package/.next/server/app/api/roadmap/generate/route.js.nft.json +1 -1
  70. package/.next/server/app/api/roadmap/layout/route.js.nft.json +1 -1
  71. package/.next/server/app/api/roadmap/route.js.nft.json +1 -1
  72. package/.next/server/app/api/roadmap/update/route.js.nft.json +1 -1
  73. package/.next/server/app/api/sessions/route.js.nft.json +1 -1
  74. package/.next/server/app/api/settings/route.js.nft.json +1 -1
  75. package/.next/server/app/api/setup/generate/route.js.nft.json +1 -1
  76. package/.next/server/app/api/setup/write/route.js.nft.json +1 -1
  77. package/.next/server/app/api/summary/route.js.nft.json +1 -1
  78. package/.next/server/app/api/tasks/create/route.js.nft.json +1 -1
  79. package/.next/server/app/api/tasks/route.js.nft.json +1 -1
  80. package/.next/server/app/board.html +1 -1
  81. package/.next/server/app/board.rsc +22 -23
  82. package/.next/server/app/board.segments/!KGFwcCk/board/__PAGE__.segment.rsc +9 -10
  83. package/.next/server/app/board.segments/_full.segment.rsc +22 -23
  84. package/.next/server/app/board.segments/_tree.segment.rsc +2 -2
  85. package/.next/server/app/chat.html +1 -0
  86. package/.next/server/app/chat.meta +31 -0
  87. package/.next/server/app/chat.rsc +29 -0
  88. package/.next/server/app/chat.segments/!KGFwcCk/chat/__PAGE__.segment.rsc +31 -0
  89. package/.next/server/app/chat.segments/_full.segment.rsc +29 -0
  90. package/.next/server/app/chat.segments/_tree.segment.rsc +4 -0
  91. package/.next/server/app/docs.html +1 -1
  92. package/.next/server/app/docs.rsc +22 -27
  93. package/.next/server/app/docs.segments/!KGFwcCk/docs/__PAGE__.segment.rsc +6 -6
  94. package/.next/server/app/docs.segments/_full.segment.rsc +22 -27
  95. package/.next/server/app/docs.segments/_tree.segment.rsc +2 -2
  96. package/.next/server/app/explorer.html +1 -1
  97. package/.next/server/app/explorer.rsc +22 -23
  98. package/.next/server/app/explorer.segments/!KGFwcCk/explorer/__PAGE__.segment.rsc +9 -10
  99. package/.next/server/app/explorer.segments/_full.segment.rsc +22 -23
  100. package/.next/server/app/explorer.segments/_tree.segment.rsc +2 -2
  101. package/.next/server/app/index.html +1 -1
  102. package/.next/server/app/index.rsc +2 -2
  103. package/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  104. package/.next/server/app/index.segments/_full.segment.rsc +2 -2
  105. package/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  106. package/.next/server/app/memory.html +1 -1
  107. package/.next/server/app/memory.rsc +22 -23
  108. package/.next/server/app/memory.segments/!KGFwcCk/memory/__PAGE__.segment.rsc +9 -10
  109. package/.next/server/app/memory.segments/_full.segment.rsc +22 -23
  110. package/.next/server/app/memory.segments/_tree.segment.rsc +2 -2
  111. package/.next/server/app/page.js.nft.json +1 -1
  112. package/.next/server/app/page_client-reference-manifest.js +1 -1
  113. package/.next/server/app/roadmap.html +1 -1
  114. package/.next/server/app/roadmap.rsc +22 -26
  115. package/.next/server/app/roadmap.segments/!KGFwcCk/roadmap/__PAGE__.segment.rsc +9 -11
  116. package/.next/server/app/roadmap.segments/_full.segment.rsc +22 -26
  117. package/.next/server/app/roadmap.segments/_tree.segment.rsc +2 -2
  118. package/.next/server/app/settings.html +1 -1
  119. package/.next/server/app/settings.rsc +22 -23
  120. package/.next/server/app/settings.segments/!KGFwcCk/settings/__PAGE__.segment.rsc +9 -10
  121. package/.next/server/app/settings.segments/_full.segment.rsc +22 -23
  122. package/.next/server/app/settings.segments/_tree.segment.rsc +2 -2
  123. package/.next/server/app/setup.html +1 -1
  124. package/.next/server/app/setup.rsc +22 -23
  125. package/.next/server/app/setup.segments/!KGFwcCk/setup/__PAGE__.segment.rsc +9 -10
  126. package/.next/server/app/setup.segments/_full.segment.rsc +22 -23
  127. package/.next/server/app/setup.segments/_tree.segment.rsc +2 -2
  128. package/.next/server/app-paths-manifest.json +2 -0
  129. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1htgzmb._.js +3 -0
  130. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1htgzmb._.js.map +1 -0
  131. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_0d2_lq6._.js +3 -0
  132. package/.next/server/chunks/[root-of-the-server]__1613hjb._.js +4 -4
  133. package/.next/server/chunks/[root-of-the-server]__1613hjb._.js.map +1 -1
  134. package/.next/server/chunks/[root-of-the-server]__1jxu2x9._.js +3 -0
  135. package/.next/server/chunks/[root-of-the-server]__1jxu2x9._.js.map +1 -0
  136. package/.next/server/chunks/_1b5fqxy._.js +1 -1
  137. package/.next/server/chunks/_1b5fqxy._.js.map +1 -1
  138. package/.next/server/chunks/_next-internal_server_app_api_conversations_route_actions_1-pu7gs.js +3 -0
  139. package/.next/server/chunks/ssr/{0_nd_mermaid_dist_mermaid_core_mjs_10jvzv6._.js → 0_nd_mermaid_dist_mermaid_core_mjs_0vv_0i3._.js} +2 -2
  140. package/.next/server/chunks/ssr/{1u84_katex_dist_katex_mjs_05prlqa._.js → 1u84_katex_dist_katex_mjs_1z0p1bs._.js} +1 -1
  141. package/.next/server/chunks/ssr/1x05_lucide-react_dist_esm_icons_0cvmffy._.js +3 -0
  142. package/.next/server/chunks/ssr/1x05_lucide-react_dist_esm_icons_0cvmffy._.js.map +1 -0
  143. package/.next/server/chunks/ssr/1x05_lucide-react_dist_esm_icons_0u3jxas._.js +3 -0
  144. package/.next/server/chunks/ssr/1x05_lucide-react_dist_esm_icons_0u3jxas._.js.map +1 -0
  145. package/.next/server/chunks/ssr/[root-of-the-server]__0xt_0w2._.js.map +1 -1
  146. package/.next/server/chunks/ssr/[root-of-the-server]__11lfnu0._.js +3 -0
  147. package/.next/server/chunks/ssr/[root-of-the-server]__11lfnu0._.js.map +1 -0
  148. package/.next/server/chunks/ssr/_059qmur._.js +3 -0
  149. package/.next/server/chunks/ssr/_059qmur._.js.map +1 -0
  150. package/.next/server/chunks/ssr/_081irea._.js +3 -0
  151. package/.next/server/chunks/ssr/_081irea._.js.map +1 -0
  152. package/.next/server/chunks/ssr/_0d8t8l4._.js +3 -0
  153. package/.next/server/chunks/ssr/_0d8t8l4._.js.map +1 -0
  154. package/.next/server/chunks/ssr/_0dyvcdg._.js +3 -0
  155. package/.next/server/chunks/ssr/_0dyvcdg._.js.map +1 -0
  156. package/.next/server/chunks/ssr/_1-ghqy4._.js +3 -0
  157. package/.next/server/chunks/ssr/_1-ghqy4._.js.map +1 -0
  158. package/.next/server/chunks/ssr/_17jy5db._.js +3 -0
  159. package/.next/server/chunks/ssr/_17jy5db._.js.map +1 -0
  160. package/.next/server/chunks/ssr/_1c95ems._.js +1 -1
  161. package/.next/server/chunks/ssr/_1c95ems._.js.map +1 -1
  162. package/.next/server/chunks/ssr/_1dllfz5._.js +4 -0
  163. package/.next/server/chunks/ssr/_1dllfz5._.js.map +1 -0
  164. package/.next/server/chunks/ssr/_next-internal_server_app_(app)_chat_page_actions_0g4tbzt.js +3 -0
  165. package/.next/server/chunks/ssr/node_modules__pnpm_006_c8z._.js +3 -0
  166. package/.next/server/chunks/ssr/node_modules__pnpm_006_c8z._.js.map +1 -0
  167. package/.next/server/chunks/ssr/{node_modules__pnpm_1kngagu._.js → node_modules__pnpm_0286-tg._.js} +1 -1
  168. package/.next/server/chunks/ssr/{node_modules__pnpm_1ad2q27._.js → node_modules__pnpm_04khl_s._.js} +1 -1
  169. package/.next/server/chunks/ssr/{node_modules__pnpm_0ns_6dd._.js → node_modules__pnpm_07t_e8c._.js} +1 -1
  170. package/.next/server/chunks/ssr/{node_modules__pnpm_0baie09._.js → node_modules__pnpm_08sqeu2._.js} +1 -1
  171. package/.next/server/chunks/ssr/{node_modules__pnpm_1jfqun_._.js → node_modules__pnpm_09_i2jk._.js} +1 -1
  172. package/.next/server/chunks/ssr/node_modules__pnpm_09_i2jk._.js.map +1 -0
  173. package/.next/server/chunks/ssr/{node_modules__pnpm_1o3_0-n._.js → node_modules__pnpm_0a9b2ei._.js} +1 -1
  174. package/.next/server/chunks/ssr/{node_modules__pnpm_0e15nhj._.js → node_modules__pnpm_0ah02mu._.js} +1 -1
  175. package/.next/server/chunks/ssr/{node_modules__pnpm_20tdqv_._.js → node_modules__pnpm_0cj8ryj._.js} +1 -1
  176. package/.next/server/chunks/ssr/{node_modules__pnpm_0wnlgm-._.js → node_modules__pnpm_0dwi7mu._.js} +2 -2
  177. package/.next/server/chunks/ssr/node_modules__pnpm_0dwi7mu._.js.map +1 -0
  178. package/.next/server/chunks/ssr/{node_modules__pnpm_1h890n6._.js → node_modules__pnpm_0f77_ng._.js} +1 -1
  179. package/.next/server/chunks/ssr/{node_modules__pnpm_1u8p2h3._.js → node_modules__pnpm_0fd3pr1._.js} +2 -2
  180. package/.next/server/chunks/ssr/{node_modules__pnpm_1zu-9we._.js → node_modules__pnpm_0gifu-u._.js} +2 -2
  181. package/.next/server/chunks/ssr/{node_modules__pnpm_1_o0jyk._.js → node_modules__pnpm_0jpv2b6._.js} +2 -2
  182. package/.next/server/chunks/ssr/{node_modules__pnpm_1f3lm9p._.js → node_modules__pnpm_0og06fy._.js} +1 -1
  183. package/.next/server/chunks/ssr/{node_modules__pnpm_12s6q4d._.js → node_modules__pnpm_0qc3gsk._.js} +1 -1
  184. package/.next/server/chunks/ssr/{node_modules__pnpm_0e3u5g-._.js → node_modules__pnpm_0ts89ne._.js} +1 -1
  185. package/.next/server/chunks/ssr/{node_modules__pnpm_1moe8b6._.js → node_modules__pnpm_0ttvopp._.js} +1 -1
  186. package/.next/server/chunks/ssr/{node_modules__pnpm_1ly58kw._.js → node_modules__pnpm_0u3u82f._.js} +1 -1
  187. package/.next/server/chunks/ssr/{node_modules__pnpm_1hw4h9e._.js → node_modules__pnpm_0y35hs4._.js} +1 -1
  188. package/.next/server/chunks/ssr/{node_modules__pnpm_0jhh7p5._.js → node_modules__pnpm_104pzhc._.js} +2 -2
  189. package/.next/server/chunks/ssr/{node_modules__pnpm_1gqkoe3._.js → node_modules__pnpm_195j8p_._.js} +1 -1
  190. package/.next/server/chunks/ssr/node_modules__pnpm_1kcnkjs._.js +3 -0
  191. package/.next/server/chunks/ssr/node_modules__pnpm_1kcnkjs._.js.map +1 -0
  192. package/.next/server/chunks/ssr/{node_modules__pnpm_0i0uccx._.js → node_modules__pnpm_1l8k8w1._.js} +1 -1
  193. package/.next/server/chunks/ssr/{node_modules__pnpm_0rd-a9g._.js → node_modules__pnpm_1w0f1m5._.js} +1 -1
  194. package/.next/server/chunks/ssr/{node_modules__pnpm_1gtgu48._.js → node_modules__pnpm_1woddr6._.js} +2 -2
  195. package/.next/server/chunks/ssr/{node_modules__pnpm_0_z3_bl._.js → node_modules__pnpm_1x0t5_z._.js} +1 -1
  196. package/.next/server/chunks/ssr/{node_modules__pnpm_07_kgbe._.js → node_modules__pnpm_1xzf8g_._.js} +1 -1
  197. package/.next/server/chunks/ssr/{node_modules__pnpm_08em703._.js → node_modules__pnpm_1yq90z7._.js} +1 -1
  198. package/.next/server/chunks/ssr/node_modules__pnpm_1yq90z7._.js.map +1 -0
  199. package/.next/server/chunks/ssr/src_app_(app)_chat_page_tsx_0c3e4l4._.js +3 -0
  200. package/.next/server/chunks/ssr/src_app_(app)_chat_page_tsx_0c3e4l4._.js.map +1 -0
  201. package/.next/server/chunks/ssr/src_app_(app)_layout_tsx_1yu5hom._.js +3 -0
  202. package/.next/server/chunks/ssr/src_app_(app)_layout_tsx_1yu5hom._.js.map +1 -0
  203. package/.next/server/chunks/ssr/src_app_(app)_roadmap_page_tsx_0vcq3jr._.js +5 -0
  204. package/.next/server/chunks/ssr/src_app_(app)_roadmap_page_tsx_0vcq3jr._.js.map +1 -0
  205. package/.next/server/chunks/ssr/src_app_(app)_settings_page_tsx_0zevtee._.js +2 -2
  206. package/.next/server/chunks/ssr/src_app_(app)_settings_page_tsx_0zevtee._.js.map +1 -1
  207. package/.next/server/chunks/ssr/src_context_ChatContext_tsx_0lowp8p._.js +5 -0
  208. package/.next/server/chunks/ssr/src_context_ChatContext_tsx_0lowp8p._.js.map +1 -0
  209. package/.next/server/chunks/ssr/{_1wf14_u._.js → src_lib_templates_index_ts_1s61uk7._.js} +2 -2
  210. package/.next/server/chunks/ssr/{_1wf14_u._.js.map → src_lib_templates_index_ts_1s61uk7._.js.map} +1 -1
  211. package/.next/server/middleware-build-manifest.js +3 -3
  212. package/.next/server/next-font-manifest.js +1 -1
  213. package/.next/server/next-font-manifest.json +4 -0
  214. package/.next/server/pages/404.html +1 -1
  215. package/.next/server/pages/500.html +1 -1
  216. package/.next/server/prefetch-hints.json +19 -0
  217. package/.next/server/server-reference-manifest.js +1 -1
  218. package/.next/server/server-reference-manifest.json +1 -1
  219. package/.next/static/chunks/050mq8l4e1ubn.js +1 -0
  220. package/.next/static/chunks/098le48845_fg.js +3 -0
  221. package/.next/static/chunks/0cw4-ebkoufdc.js +1 -0
  222. package/.next/static/chunks/0feo-go1w5nct.js +1 -0
  223. package/.next/static/chunks/14sefb904pl64.js +21 -0
  224. package/.next/static/chunks/1fer-wulyrjrs.js +3 -0
  225. package/.next/static/chunks/1o7b1x4umy8a6.js +1 -0
  226. package/.next/static/chunks/1q_io1j58aukw.js +1 -0
  227. package/.next/static/chunks/1t-cgh4477hfo.js +1 -0
  228. package/.next/static/chunks/1u-1po1qesc9f.js +1 -0
  229. package/.next/static/chunks/1u5kegkgm0xoz.js +1 -0
  230. package/.next/static/chunks/24ygzsgd-moqy.js +1 -0
  231. package/.next/static/chunks/26folxgplfa9t.js +68 -0
  232. package/.next/static/chunks/2ocixvjhv34_3.js +1 -0
  233. package/.next/static/chunks/3_lsdgxa-h7ma.css +10 -0
  234. package/.next/static/chunks/3rmv-sb9w9i3e.js +1 -0
  235. package/.next/static/chunks/3ttzomivj48jh.js +2 -0
  236. package/README.md +1 -1
  237. package/package.json +1 -1
  238. package/.next/server/chunks/ssr/1x05_lucide-react_dist_esm_icons_08ca0b4._.js +0 -3
  239. package/.next/server/chunks/ssr/1x05_lucide-react_dist_esm_icons_08ca0b4._.js.map +0 -1
  240. package/.next/server/chunks/ssr/1x05_lucide-react_dist_esm_icons_0c1k9is._.js +0 -3
  241. package/.next/server/chunks/ssr/1x05_lucide-react_dist_esm_icons_0c1k9is._.js.map +0 -1
  242. package/.next/server/chunks/ssr/_01suk2m._.js +0 -3
  243. package/.next/server/chunks/ssr/_01suk2m._.js.map +0 -1
  244. package/.next/server/chunks/ssr/_0qyglif._.js +0 -5
  245. package/.next/server/chunks/ssr/_0qyglif._.js.map +0 -1
  246. package/.next/server/chunks/ssr/_0skuoxv._.js +0 -6
  247. package/.next/server/chunks/ssr/_0skuoxv._.js.map +0 -1
  248. package/.next/server/chunks/ssr/_14i_6yb._.js +0 -3
  249. package/.next/server/chunks/ssr/_14i_6yb._.js.map +0 -1
  250. package/.next/server/chunks/ssr/_1cbhuz4._.js +0 -3
  251. package/.next/server/chunks/ssr/_1cbhuz4._.js.map +0 -1
  252. package/.next/server/chunks/ssr/_1ewk_mn._.js +0 -3
  253. package/.next/server/chunks/ssr/_1ewk_mn._.js.map +0 -1
  254. package/.next/server/chunks/ssr/node_modules__pnpm_1dcmsrg._.js +0 -3
  255. package/.next/server/chunks/ssr/node_modules__pnpm_1dcmsrg._.js.map +0 -1
  256. package/.next/server/chunks/ssr/src_components_008q3v8._.js +0 -3
  257. package/.next/server/chunks/ssr/src_components_008q3v8._.js.map +0 -1
  258. package/.next/static/chunks/02sab26ica2x3.js +0 -1
  259. package/.next/static/chunks/0eggcu0ovk8sd.js +0 -68
  260. package/.next/static/chunks/0iva6rdtfqpbz.js +0 -1
  261. package/.next/static/chunks/0qm101bdsxdyh.css +0 -10
  262. package/.next/static/chunks/0wg9n5zb8mo2p.js +0 -1
  263. package/.next/static/chunks/0wjw1laqwg-cr.js +0 -21
  264. package/.next/static/chunks/0z_y7el6m76yk.js +0 -1
  265. package/.next/static/chunks/1-ekntoveuxzd.js +0 -4
  266. package/.next/static/chunks/1g6fxjtlpv6p5.js +0 -1
  267. package/.next/static/chunks/1ytqu-ra-fylk.js +0 -3
  268. package/.next/static/chunks/3dlnlsyyysw5m.js +0 -1
  269. package/.next/static/chunks/3kkg030rcpz7l.js +0 -1
  270. package/.next/static/chunks/3pf_4ye6ju8gt.js +0 -1
  271. /package/.next/server/chunks/{ssr/0_nd_mermaid_dist_mermaid_core_mjs_10jvzv6._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_0d2_lq6._.js.map} +0 -0
  272. /package/.next/server/chunks/{ssr/1u84_katex_dist_katex_mjs_05prlqa._.js.map → _next-internal_server_app_api_conversations_route_actions_1-pu7gs.js.map} +0 -0
  273. /package/.next/server/chunks/ssr/{node_modules__pnpm_08em703._.js.map → 0_nd_mermaid_dist_mermaid_core_mjs_0vv_0i3._.js.map} +0 -0
  274. /package/.next/server/chunks/ssr/{node_modules__pnpm_0wnlgm-._.js.map → 1u84_katex_dist_katex_mjs_1z0p1bs._.js.map} +0 -0
  275. /package/.next/server/chunks/ssr/{node_modules__pnpm_1jfqun_._.js.map → _next-internal_server_app_(app)_chat_page_actions_0g4tbzt.js.map} +0 -0
  276. /package/.next/server/chunks/ssr/{node_modules__pnpm_1kngagu._.js.map → node_modules__pnpm_0286-tg._.js.map} +0 -0
  277. /package/.next/server/chunks/ssr/{node_modules__pnpm_1ad2q27._.js.map → node_modules__pnpm_04khl_s._.js.map} +0 -0
  278. /package/.next/server/chunks/ssr/{node_modules__pnpm_0ns_6dd._.js.map → node_modules__pnpm_07t_e8c._.js.map} +0 -0
  279. /package/.next/server/chunks/ssr/{node_modules__pnpm_0baie09._.js.map → node_modules__pnpm_08sqeu2._.js.map} +0 -0
  280. /package/.next/server/chunks/ssr/{node_modules__pnpm_1o3_0-n._.js.map → node_modules__pnpm_0a9b2ei._.js.map} +0 -0
  281. /package/.next/server/chunks/ssr/{node_modules__pnpm_0e15nhj._.js.map → node_modules__pnpm_0ah02mu._.js.map} +0 -0
  282. /package/.next/server/chunks/ssr/{node_modules__pnpm_20tdqv_._.js.map → node_modules__pnpm_0cj8ryj._.js.map} +0 -0
  283. /package/.next/server/chunks/ssr/{node_modules__pnpm_1h890n6._.js.map → node_modules__pnpm_0f77_ng._.js.map} +0 -0
  284. /package/.next/server/chunks/ssr/{node_modules__pnpm_1u8p2h3._.js.map → node_modules__pnpm_0fd3pr1._.js.map} +0 -0
  285. /package/.next/server/chunks/ssr/{node_modules__pnpm_1zu-9we._.js.map → node_modules__pnpm_0gifu-u._.js.map} +0 -0
  286. /package/.next/server/chunks/ssr/{node_modules__pnpm_1_o0jyk._.js.map → node_modules__pnpm_0jpv2b6._.js.map} +0 -0
  287. /package/.next/server/chunks/ssr/{node_modules__pnpm_1f3lm9p._.js.map → node_modules__pnpm_0og06fy._.js.map} +0 -0
  288. /package/.next/server/chunks/ssr/{node_modules__pnpm_12s6q4d._.js.map → node_modules__pnpm_0qc3gsk._.js.map} +0 -0
  289. /package/.next/server/chunks/ssr/{node_modules__pnpm_0e3u5g-._.js.map → node_modules__pnpm_0ts89ne._.js.map} +0 -0
  290. /package/.next/server/chunks/ssr/{node_modules__pnpm_1moe8b6._.js.map → node_modules__pnpm_0ttvopp._.js.map} +0 -0
  291. /package/.next/server/chunks/ssr/{node_modules__pnpm_1ly58kw._.js.map → node_modules__pnpm_0u3u82f._.js.map} +0 -0
  292. /package/.next/server/chunks/ssr/{node_modules__pnpm_1hw4h9e._.js.map → node_modules__pnpm_0y35hs4._.js.map} +0 -0
  293. /package/.next/server/chunks/ssr/{node_modules__pnpm_0jhh7p5._.js.map → node_modules__pnpm_104pzhc._.js.map} +0 -0
  294. /package/.next/server/chunks/ssr/{node_modules__pnpm_1gqkoe3._.js.map → node_modules__pnpm_195j8p_._.js.map} +0 -0
  295. /package/.next/server/chunks/ssr/{node_modules__pnpm_0i0uccx._.js.map → node_modules__pnpm_1l8k8w1._.js.map} +0 -0
  296. /package/.next/server/chunks/ssr/{node_modules__pnpm_0rd-a9g._.js.map → node_modules__pnpm_1w0f1m5._.js.map} +0 -0
  297. /package/.next/server/chunks/ssr/{node_modules__pnpm_1gtgu48._.js.map → node_modules__pnpm_1woddr6._.js.map} +0 -0
  298. /package/.next/server/chunks/ssr/{node_modules__pnpm_0_z3_bl._.js.map → node_modules__pnpm_1x0t5_z._.js.map} +0 -0
  299. /package/.next/server/chunks/ssr/{node_modules__pnpm_07_kgbe._.js.map → node_modules__pnpm_1xzf8g_._.js.map} +0 -0
  300. /package/.next/static/{ICaoXcRMmgrIFWk8C_Z6D → uJ5RYxgFnE5svAvnuLDXN}/_buildManifest.js +0 -0
  301. /package/.next/static/{ICaoXcRMmgrIFWk8C_Z6D → uJ5RYxgFnE5svAvnuLDXN}/_clientMiddlewareManifest.js +0 -0
  302. /package/.next/static/{ICaoXcRMmgrIFWk8C_Z6D → uJ5RYxgFnE5svAvnuLDXN}/_ssgManifest.js +0 -0
@@ -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)}]);
@@ -0,0 +1 @@
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,588537,e=>{"use strict";var t=e.i(72345),a=e.i(180338),r=e.i(910172),s=e.i(763371),n=e.i(573009),i=e.i(243668);function l(){let{rootParam:e,refresh:t,setEditorSettings:r,setAutoRefreshSeconds:l,autoRefreshSeconds:o}=(0,s.useApp)(),d=(0,a.useRef)(null);return(0,a.useEffect)(()=>{if(!e)return;let t=!1;return fetch(`/api/settings${e}&type=settings`).then(e=>e.ok?e.json():i.DEFAULT_SETTINGS).then(e=>{t||((0,n.applyTheme)(e.theme),(0,n.applyAccent)(e.accentColor),(0,n.applyFontSize)(e.fontSize),(0,n.applyFonts)(e),r(e.editor),l(e.project?.autoRefresh??0))}).catch(()=>{}),()=>{t=!0}},[e]),(0,a.useEffect)(()=>(d.current&&clearInterval(d.current),o>0&&(d.current=setInterval(t,1e3*o)),()=>{d.current&&(clearInterval(d.current),d.current=null)}),[o,t]),null}function o(){return(0,t.jsx)("div",{className:"min-h-screen flex items-center justify-center",children:(0,t.jsxs)("div",{className:"text-center",children:[(0,t.jsx)("div",{className:"flex gap-1.5 justify-center mb-4",children:[0,1,2].map(e=>(0,t.jsx)("div",{className:"w-2 h-2 rounded-full bg-accent animate-pulse-dot",style:{animationDelay:`${.15*e}s`}},e))}),(0,t.jsx)("p",{className:"text-muted text-sm font-mono",children:"Loading project..."})]})})}var d=e.i(244267),c=e.i(755146);function u({projects:e,activeProject:a,currentName:r,onSelect:s}){return(0,t.jsxs)(c.DropdownMenu,{children:[(0,t.jsx)(c.DropdownMenuTrigger,{asChild:!0,children:(0,t.jsxs)("button",{className:"flex items-center gap-1.5 px-3 py-1.5 rounded-md bg-surface2 border border-border text-sm hover:border-border2 transition-colors",children:[(0,t.jsx)("span",{className:"text-txt font-medium truncate max-w-[200px]",children:r||"Select project"}),(0,t.jsx)("span",{className:"text-muted text-xs",children:"▾"})]})}),(0,t.jsx)(c.DropdownMenuContent,{className:"w-64 bg-surface border-border2 text-txt",align:"start",children:0===e.length?(0,t.jsx)("div",{className:"px-3 py-2 text-sm text-muted",children:"No projects found"}):e.map(e=>(0,t.jsx)(c.DropdownMenuItem,{onClick:()=>s(e.root),className:`cursor-pointer hover:bg-surface2 focus:bg-surface2 ${e.root===a?"text-accent":""}`,children:(0,t.jsxs)("div",{children:[(0,t.jsx)("div",{className:"font-medium",children:e.name}),(0,t.jsx)("div",{className:"text-xs text-muted truncate font-mono",children:e.root})]})},e.root))})]})}var h=e.i(487486);function p({board:e}){return(0,t.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,t.jsxs)(h.Badge,{variant:"secondary",className:"gap-1 text-xs font-mono text-amber",children:["🔨 ",e["in-progress"]||0]}),(0,t.jsxs)(h.Badge,{variant:"secondary",className:"gap-1 text-xs font-mono text-muted",children:["📋 ",e.todo||0]}),(0,t.jsxs)(h.Badge,{variant:"secondary",className:"gap-1 text-xs font-mono text-teal",children:["✅ ",e.done||0]})]})}var x=e.i(975157);function m({active:e}){return(0,t.jsxs)("div",{className:"flex items-center gap-1.5 text-xs font-mono text-muted",children:[(0,t.jsx)("div",{className:(0,x.cn)("w-1.5 h-1.5 rounded-full transition-colors duration-500",e?"bg-teal shadow-[0_0_6px_#4fd8b4]":"bg-border2")}),(0,t.jsx)("span",{children:e?"live update":"connected"})]})}var f=e.i(617739),b=e.i(294237),g=e.i(83790);let v={name:"panel-left",size:24,node:[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M9 3v18",key:"fh3hqa"}]],aliases:["sidebar"]};v.node;let j=(0,g.default)(v);var y=e.i(519455),w=e.i(793479),N=e.i(772436),k=e.i(980376);function S({className:e,...a}){return(0,t.jsx)("div",{className:(0,x.cn)("animate-pulse rounded-md bg-surface2",e),...a})}var C=e.i(746798);let M=a.createContext(null);function D(){let e=a.useContext(M);if(!e)throw Error("useSidebar must be used within a SidebarProvider.");return e}let z=a.forwardRef(({defaultOpen:e=!0,open:r,onOpenChange:s,className:n,style:i,children:l,...o},d)=>{let c=function(){let[e,t]=a.useState(void 0);return a.useEffect(()=>{let e=window.matchMedia("(max-width: 767px)"),a=()=>{t(window.innerWidth<768)};return e.addEventListener("change",a),t(window.innerWidth<768),()=>e.removeEventListener("change",a)},[]),!!e}(),[u,h]=a.useState(!1),[p,m]=a.useState(e),f=r??p,b=a.useCallback(e=>{let t="function"==typeof e?e(f):e;s?s(t):m(t),document.cookie=`sidebar_state=${t}; path=/; max-age=604800`},[s,f]),g=a.useCallback(()=>c?h(e=>!e):b(e=>!e),[c,b,h]);a.useEffect(()=>{let e=e=>{"b"===e.key&&(e.metaKey||e.ctrlKey)&&(e.preventDefault(),g())};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[g]);let v=f?"expanded":"collapsed",j=a.useMemo(()=>({state:v,open:f,setOpen:b,isMobile:c,openMobile:u,setOpenMobile:h,toggleSidebar:g}),[v,f,b,c,u,h,g]);return(0,t.jsx)(M.Provider,{value:j,children:(0,t.jsx)(C.TooltipProvider,{delayDuration:0,children:(0,t.jsx)("div",{style:{"--sidebar-width":"16rem","--sidebar-width-icon":"3rem",...i},className:(0,x.cn)("group/sidebar-wrapper flex min-h-svh w-full has-data-[variant=inset]:bg-sidebar",n),ref:d,...o,children:l})})})});z.displayName="SidebarProvider";let A=a.forwardRef(({side:e="left",variant:a="sidebar",collapsible:r="offcanvas",className:s,children:n,...i},l)=>{let{isMobile:o,state:d,openMobile:c,setOpenMobile:u}=D();return"none"===r?(0,t.jsx)("div",{className:(0,x.cn)("flex h-full w-(--sidebar-width) flex-col bg-sidebar text-sidebar-foreground",s),ref:l,...i,children:n}):o?(0,t.jsx)(k.Sheet,{open:c,onOpenChange:u,...i,children:(0,t.jsxs)(k.SheetContent,{"data-sidebar":"sidebar","data-mobile":"true",className:"w-(--sidebar-width) bg-sidebar p-0 text-sidebar-foreground [&>button]:hidden",style:{"--sidebar-width":"18rem"},side:e,children:[(0,t.jsxs)(k.SheetHeader,{className:"sr-only",children:[(0,t.jsx)(k.SheetTitle,{children:"Sidebar"}),(0,t.jsx)(k.SheetDescription,{children:"Displays the mobile sidebar."})]}),(0,t.jsx)("div",{className:"flex h-full w-full flex-col",children:n})]})}):(0,t.jsxs)("div",{ref:l,className:"group peer hidden text-sidebar-foreground md:block","data-state":d,"data-collapsible":"collapsed"===d?r:"","data-variant":a,"data-side":e,children:[(0,t.jsx)("div",{className:(0,x.cn)("relative w-(--sidebar-width) bg-transparent transition-[width] duration-200 ease-linear","group-data-[collapsible=offcanvas]:w-0","group-data-[side=right]:rotate-180","floating"===a||"inset"===a?"group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]":"group-data-[collapsible=icon]:w-(--sidebar-width-icon)")}),(0,t.jsx)("div",{className:(0,x.cn)("fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear md:flex","left"===e?"left-0 group-data-[collapsible=offcanvas]:-left-(--sidebar-width)":"right-0 group-data-[collapsible=offcanvas]:-right-(--sidebar-width)","floating"===a||"inset"===a?"p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]":"group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l",s),...i,children:(0,t.jsx)("div",{"data-sidebar":"sidebar",className:"flex h-full w-full flex-col bg-sidebar group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:border-sidebar-border group-data-[variant=floating]:shadow-sm",children:n})})]})});A.displayName="Sidebar";let R=a.forwardRef(({className:e,onClick:a,...r},s)=>{let{toggleSidebar:n}=D();return(0,t.jsxs)(y.Button,{ref:s,"data-sidebar":"trigger",variant:"ghost",size:"icon",className:(0,x.cn)("h-7 w-7",e),onClick:e=>{a?.(e),n()},...r,children:[(0,t.jsx)(j,{}),(0,t.jsx)("span",{className:"sr-only",children:"Toggle Sidebar"})]})});R.displayName="SidebarTrigger",a.forwardRef(({className:e,...a},r)=>{let{toggleSidebar:s}=D();return(0,t.jsx)("button",{ref:r,"data-sidebar":"rail","aria-label":"Toggle Sidebar",tabIndex:-1,onClick:s,title:"Toggle Sidebar",className:(0,x.cn)("absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-[translate,background-color] ease-linear after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] hover:after:bg-sidebar-border group-data-[side=left]:-right-4 group-data-[side=right]:left-0 sm:flex","in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize","[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize","group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full hover:group-data-[collapsible=offcanvas]:bg-sidebar","[[data-side=left][data-collapsible=offcanvas]_&]:-right-2","[[data-side=right][data-collapsible=offcanvas]_&]:-left-2",e),...a})}).displayName="SidebarRail";let T=a.forwardRef(({className:e,...a},r)=>(0,t.jsx)("main",{ref:r,className:(0,x.cn)("relative flex w-full flex-1 flex-col bg-bg","md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm",e),...a}));T.displayName="SidebarInset",a.forwardRef(({className:e,...a},r)=>(0,t.jsx)(w.Input,{ref:r,"data-sidebar":"input",className:(0,x.cn)("h-8 w-full bg-bg shadow-none focus-visible:ring-2 focus-visible:ring-sidebar-ring",e),...a})).displayName="SidebarInput";let E=a.forwardRef(({className:e,...a},r)=>(0,t.jsx)("div",{ref:r,"data-sidebar":"header",className:(0,x.cn)("flex flex-col gap-2 p-2",e),...a}));E.displayName="SidebarHeader",a.forwardRef(({className:e,...a},r)=>(0,t.jsx)("div",{ref:r,"data-sidebar":"footer",className:(0,x.cn)("flex flex-col gap-2 p-2",e),...a})).displayName="SidebarFooter";let I=a.forwardRef(({className:e,...a},r)=>(0,t.jsx)(N.Separator,{ref:r,"data-sidebar":"separator",className:(0,x.cn)("mx-2 w-auto bg-sidebar-border",e),...a}));I.displayName="SidebarSeparator";let P=a.forwardRef(({className:e,...a},r)=>(0,t.jsx)("div",{ref:r,"data-sidebar":"content",className:(0,x.cn)("flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden",e),...a}));P.displayName="SidebarContent";let O=a.forwardRef(({className:e,...a},r)=>(0,t.jsx)("div",{ref:r,"data-sidebar":"group",className:(0,x.cn)("relative flex w-full min-w-0 flex-col p-2",e),...a}));O.displayName="SidebarGroup";let _=a.forwardRef(({className:e,asChild:a=!1,...r},s)=>{let n=a?f.Slot:"div";return(0,t.jsx)(n,{ref:s,"data-sidebar":"group-label",className:(0,x.cn)("flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium text-sidebar-foreground/70 outline-hidden ring-sidebar-ring transition-[margin,opacity] duration-200 ease-linear focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0","group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0",e),...r})});_.displayName="SidebarGroupLabel";let B=a.forwardRef(({className:e,asChild:a=!1,...r},s)=>{let n=a?f.Slot:"button";return(0,t.jsx)(n,{ref:s,"data-sidebar":"group-action",className:(0,x.cn)("absolute right-3 top-3.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-hidden ring-sidebar-ring transition-transform hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0","after:absolute after:-inset-2 md:after:hidden","group-data-[collapsible=icon]:hidden",e),...r})});B.displayName="SidebarGroupAction";let G=a.forwardRef(({className:e,...a},r)=>(0,t.jsx)("div",{ref:r,"data-sidebar":"group-content",className:(0,x.cn)("w-full text-sm",e),...a}));G.displayName="SidebarGroupContent";let $=a.forwardRef(({className:e,...a},r)=>(0,t.jsx)("ul",{ref:r,"data-sidebar":"menu",className:(0,x.cn)("flex w-full min-w-0 flex-col gap-1",e),...a}));$.displayName="SidebarMenu";let K=a.forwardRef(({className:e,...a},r)=>(0,t.jsx)("li",{ref:r,"data-sidebar":"menu-item",className:(0,x.cn)("group/menu-item relative",e),...a}));K.displayName="SidebarMenuItem";let L=(0,b.cva)("peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm outline-hidden ring-sidebar-ring transition-[width,height,padding] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 group-has-data-[sidebar=menu-action]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0",{variants:{variant:{default:"hover:bg-sidebar-accent hover:text-sidebar-accent-foreground",outline:"bg-bg shadow-[0_0_0_1px_rgb(var(--rgb-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_rgb(var(--rgb-surface2))]"},size:{default:"h-8 text-sm",sm:"h-7 text-xs",lg:"h-12 text-sm group-data-[collapsible=icon]:p-0!"}},defaultVariants:{variant:"default",size:"default"}}),q=a.forwardRef(({asChild:e=!1,isActive:a=!1,variant:r="default",size:s="default",tooltip:n,className:i,...l},o)=>{let d=e?f.Slot:"button",{isMobile:c,state:u}=D(),h=(0,t.jsx)(d,{ref:o,"data-sidebar":"menu-button","data-size":s,"data-active":a,className:(0,x.cn)(L({variant:r,size:s}),i),...l});return n?("string"==typeof n&&(n={children:n}),(0,t.jsxs)(C.Tooltip,{children:[(0,t.jsx)(C.TooltipTrigger,{asChild:!0,children:h}),(0,t.jsx)(C.TooltipContent,{side:"right",align:"center",hidden:"collapsed"!==u||c,...n})]})):h});q.displayName="SidebarMenuButton",a.forwardRef(({className:e,asChild:a=!1,showOnHover:r=!1,...s},n)=>{let i=a?f.Slot:"button";return(0,t.jsx)(i,{ref:n,"data-sidebar":"menu-action",className:(0,x.cn)("absolute right-1 top-1.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-hidden ring-sidebar-ring transition-transform hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 peer-hover/menu-button:text-sidebar-accent-foreground [&>svg]:size-4 [&>svg]:shrink-0","after:absolute after:-inset-2 md:after:hidden","peer-data-[size=sm]/menu-button:top-1","peer-data-[size=default]/menu-button:top-1.5","peer-data-[size=lg]/menu-button:top-2.5","group-data-[collapsible=icon]:hidden",r&&"group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 peer-data-[active=true]/menu-button:text-sidebar-accent-foreground md:opacity-0",e),...s})}).displayName="SidebarMenuAction",a.forwardRef(({className:e,...a},r)=>(0,t.jsx)("div",{ref:r,"data-sidebar":"menu-badge",className:(0,x.cn)("pointer-events-none absolute right-1 flex h-5 min-w-5 select-none items-center justify-center rounded-md px-1 text-xs font-medium tabular-nums text-sidebar-foreground","peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground","peer-data-[size=sm]/menu-button:top-1","peer-data-[size=default]/menu-button:top-1.5","peer-data-[size=lg]/menu-button:top-2.5","group-data-[collapsible=icon]:hidden",e),...a})).displayName="SidebarMenuBadge",a.forwardRef(({className:e,showIcon:r=!1,...s},n)=>{let i=a.useMemo(()=>`${Math.floor(40*Math.random())+50}%`,[]);return(0,t.jsxs)("div",{ref:n,"data-sidebar":"menu-skeleton",className:(0,x.cn)("flex h-8 items-center gap-2 rounded-md px-2",e),...s,children:[r&&(0,t.jsx)(S,{className:"size-4 rounded-md","data-sidebar":"menu-skeleton-icon"}),(0,t.jsx)(S,{className:"h-4 max-w-(--skeleton-width) flex-1","data-sidebar":"menu-skeleton-text",style:{"--skeleton-width":i}})]})}).displayName="SidebarMenuSkeleton",a.forwardRef(({className:e,...a},r)=>(0,t.jsx)("ul",{ref:r,"data-sidebar":"menu-sub",className:(0,x.cn)("mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l border-sidebar-border px-2.5 py-0.5","group-data-[collapsible=icon]:hidden",e),...a})).displayName="SidebarMenuSub",a.forwardRef(({...e},a)=>(0,t.jsx)("li",{ref:a,...e})).displayName="SidebarMenuSubItem",a.forwardRef(({asChild:e=!1,size:a="md",isActive:r,className:s,...n},i)=>{let l=e?f.Slot:"a";return(0,t.jsx)(l,{ref:i,"data-sidebar":"menu-sub-button","data-size":a,"data-active":r,className:(0,x.cn)("flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 text-sidebar-foreground outline-hidden ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:text-sidebar-accent-foreground","data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground","sm"===a&&"text-xs","md"===a&&"text-sm","group-data-[collapsible=icon]:hidden",s),...n})}).displayName="SidebarMenuSubButton";var V=e.i(476785);function F({summary:e,projects:a,activeProject:r,liveIndicator:s,onProjectChange:n,onToggleChat:i}){let l=(0,V.useOrigin)().replace(/^https?:\/\//,""),o=(0,d.useChats)().waitingCount;return(0,t.jsxs)("header",{className:"h-12 border-b border-border flex items-center px-4 gap-4 shrink-0 bg-surface/80 backdrop-blur-xs sticky top-0 z-50",children:[(0,t.jsx)(R,{className:"-ml-1"}),(0,t.jsx)(N.Separator,{orientation:"vertical",className:"mr-2 h-4"}),(0,t.jsxs)("div",{className:"flex items-center gap-2 shrink-0",children:[(0,t.jsx)("div",{className:"w-6 h-6 rounded-md bg-linear-to-br from-accent to-teal flex items-center justify-center text-xs",children:"⬡"}),(0,t.jsx)("span",{className:"font-mono text-xs text-muted tracking-widest uppercase",children:"VibeDoc"})]}),(0,t.jsx)(u,{projects:a,activeProject:r,currentName:e?.name||"",onSelect:n}),e&&(0,t.jsx)(p,{board:e.tasks.board}),(0,t.jsx)("div",{className:"flex-1"}),(0,t.jsx)(m,{active:s}),(0,t.jsxs)("button",{onClick:i,title:o?`Agent chat (c) \xb7 ${o} waiting for you`:"Agent chat (c)",className:"relative px-2 py-1 rounded-sm border border-border bg-surface2 text-xs font-mono text-muted hover:text-txt",children:["Agent",o>0&&(0,t.jsx)("span",{"aria-label":`${o} waiting for you`,className:"absolute -right-1.5 -top-1.5 min-w-4 h-4 px-1 rounded-full bg-amber text-bg text-[10px] leading-4 font-semibold text-center",children:o})]}),(0,t.jsxs)("div",{className:"hidden md:flex items-center gap-1.5 px-2 py-1 rounded-sm bg-surface2 border border-border",children:[(0,t.jsx)("span",{className:"text-xs font-mono text-muted",children:"MCP"}),(0,t.jsxs)("code",{className:"text-xs font-mono text-accent",children:[l,"/api/mcp"]})]})]})}let U={name:"layout-dashboard",size:24,node:[["rect",{width:"7",height:"9",x:"3",y:"3",rx:"1",key:"10lvy0"}],["rect",{width:"7",height:"5",x:"14",y:"3",rx:"1",key:"16une8"}],["rect",{width:"7",height:"9",x:"14",y:"12",rx:"1",key:"1hutg5"}],["rect",{width:"7",height:"5",x:"3",y:"16",rx:"1",key:"ldoo1y"}]]};U.node;let H=(0,g.default)(U);var W=e.i(732460),Z=e.i(788293);let X={name:"brain",size:24,node:[["path",{d:"M12 18V5",key:"adv99a"}],["path",{d:"M15 13a4.17 4.17 0 0 1-3-4 4.17 4.17 0 0 1-3 4",key:"1e3is1"}],["path",{d:"M17.598 6.5A3 3 0 1 0 12 5a3 3 0 1 0-5.598 1.5",key:"1gqd8o"}],["path",{d:"M17.997 5.125a4 4 0 0 1 2.526 5.77",key:"iwvgf7"}],["path",{d:"M18 18a4 4 0 0 0 2-7.464",key:"efp6ie"}],["path",{d:"M19.967 17.483A4 4 0 1 1 12 18a4 4 0 1 1-7.967-.517",key:"1gq6am"}],["path",{d:"M6 18a4 4 0 0 1-2-7.464",key:"k1g0md"}],["path",{d:"M6.003 5.125a4 4 0 0 0-2.526 5.77",key:"q97ue3"}]]};X.node;let Y=(0,g.default)(X),J={name:"circle-dot",size:24,node:[["circle",{cx:"12",cy:"12",r:"1",key:"41hilf"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]};J.node;let Q=(0,g.default)(J),ee={name:"ban",size:24,node:[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M4.929 4.929 19.07 19.071",key:"196cmz"}]]};ee.node;let et=(0,g.default)(ee),ea={name:"clipboard-list",size:24,node:[["rect",{width:"8",height:"4",x:"8",y:"2",rx:"1",ry:"1",key:"tgr4d6"}],["path",{d:"M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2",key:"116196"}],["path",{d:"M12 11h4",key:"1jrz19"}],["path",{d:"M12 16h4",key:"n85exb"}],["path",{d:"M8 11h.01",key:"1dfujw"}],["path",{d:"M8 16h.01",key:"18s6g9"}]]};ea.node;let er=(0,g.default)(ea),es={name:"circle-check",size:24,node:[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m16 9-5.5 5.5L8 12",key:"xofnsj"}]],aliases:["check-circle-2"]};es.node;let en=(0,g.default)(es);var ei=e.i(463464);let el={name:"folder-tree",size:24,node:[["path",{d:"M20 10a1 1 0 0 0 1-1V6a1 1 0 0 0-1-1h-2.5a1 1 0 0 1-.8-.4l-.9-1.2A1 1 0 0 0 15 3h-2a1 1 0 0 0-1 1v5a1 1 0 0 0 1 1Z",key:"hod4my"}],["path",{d:"M20 21a1 1 0 0 0 1-1v-3a1 1 0 0 0-1-1h-2.9a1 1 0 0 1-.88-.55l-.42-.85a1 1 0 0 0-.92-.6H13a1 1 0 0 0-1 1v5a1 1 0 0 0 1 1Z",key:"w4yl2u"}],["path",{d:"M3 5a2 2 0 0 0 2 2h3",key:"f2jnh7"}],["path",{d:"M3 3v13a2 2 0 0 0 2 2h3",key:"k8epm1"}]]};el.node;let eo=(0,g.default)(el);var ed=e.i(192871),ec=e.i(138324),eu=e.i(479432);let eh={name:"messages-square",size:24,node:[["path",{d:"M16 10a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 14.286V4a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2z",key:"1n2ejm"}],["path",{d:"M20 9a2 2 0 0 1 2 2v10.286a.71.71 0 0 1-1.212.502l-2.202-2.202A2 2 0 0 0 17.172 19H10a2 2 0 0 1-2-2v-1",key:"1qfcsi"}]]};eh.node;let ep=(0,g.default)(eh);var ex=e.i(155515),em=e.i(844081),ef=e.i(481523);function eb(){return(0,t.jsx)(a.Suspense,{children:(0,t.jsx)(eg,{})})}function eg(){let{chats:e,loaded:a,modalId:s,show:n,create:i,waitingCount:l,runningCount:o}=(0,d.useChats)(),c=(0,r.usePathname)(),u=(0,r.useSearchParams)().get("id"),h=(0,ef.groupChats)(e),p=[...h.needsYou,...h.running,...h.recent.slice(0,4)],m=e.length-p.length;return(0,t.jsxs)(O,{role:"group","aria-label":"Agent chats",children:[(0,t.jsxs)(_,{className:"gap-2",children:["Agents",o>0&&(0,t.jsxs)("span",{className:"font-mono text-[10px] normal-case tracking-normal text-accent",children:[o," running"]})]}),(0,t.jsxs)(B,{title:"New chat",onClick:()=>n(i()),children:[(0,t.jsx)(ex.Plus,{}),(0,t.jsx)("span",{className:"sr-only",children:"New chat"})]}),(0,t.jsx)(G,{children:(0,t.jsxs)($,{children:[(0,t.jsx)(K,{className:"hidden group-data-[collapsible=icon]:block",children:(0,t.jsx)(q,{asChild:!0,tooltip:l?`Agents \xb7 ${l} waiting for you`:"Agents",isActive:"/chat"===c,children:(0,t.jsxs)(ec.default,{href:"/chat",className:"relative",children:[(0,t.jsx)(eu.Bot,{}),(0,t.jsx)("span",{children:"Agents"}),l>0&&(0,t.jsx)("span",{className:"absolute right-1 top-1 size-1.5 rounded-full bg-amber animate-pulse-dot"})]})})}),a&&0===e.length&&(0,t.jsx)(K,{className:"group-data-[collapsible=icon]:hidden",children:(0,t.jsxs)(q,{onClick:()=>n(i()),className:"text-muted",children:[(0,t.jsx)(ep,{}),(0,t.jsx)("span",{children:"Start a chat"})]})}),p.map(e=>{let a,r=(0,ef.chatStatus)(e);return(0,t.jsx)(K,{className:"group-data-[collapsible=icon]:hidden animate-slide-in",children:(0,t.jsxs)(q,{onClick:()=>n(e.id),isActive:s===(a=e.id)||"/chat"===c&&u===a,className:(0,x.cn)("h-8","idle"===r&&"text-muted"),title:e.title,children:[(0,t.jsx)(em.StatusMarker,{status:r,showIdle:!0}),(0,t.jsx)("span",{className:"min-w-0 flex-1 truncate",children:e.title}),e.attach&&(0,t.jsx)(em.AttachLabel,{attach:e.attach,className:"shrink-0 text-muted"})]})},e.id)}),e.length>0&&(0,t.jsx)(K,{className:"group-data-[collapsible=icon]:hidden",children:(0,t.jsx)(q,{asChild:!0,isActive:"/chat"===c&&!u,className:"h-7 text-xs text-muted",children:(0,t.jsxs)(ec.default,{href:"/chat",children:[(0,t.jsx)(ep,{}),(0,t.jsx)("span",{children:m>0?`All chats \xb7 ${e.length}`:"All chats"})]})})})]})})]})}let ev=[{href:"/board",icon:H,label:"Board"},{href:"/roadmap",icon:ed.Map,label:"Roadmap"},{href:"/docs",icon:W.BookOpen,label:"Docs"},{href:"/activity",icon:Z.Zap,label:"Activity"},{href:"/memory",icon:Y,label:"Memory"},{href:"/explorer",icon:eo,label:"Explorer"},{href:"/settings",icon:ei.Settings,label:"Settings"}],ej=[{status:"in-progress",icon:Q,label:"Active"},{status:"blocked",icon:et,label:"Blocked"},{status:"todo",icon:er,label:"Todo"},{status:"done",icon:en,label:"Done"}];function ey({board:e}){let a=(0,r.usePathname)();return(0,t.jsxs)(A,{collapsible:"icon",children:[(0,t.jsx)(E,{children:(0,t.jsxs)("div",{className:"flex items-center gap-2 px-2 py-1",children:[(0,t.jsx)("div",{className:"w-6 h-6 rounded-md bg-linear-to-br from-accent to-teal flex items-center justify-center text-xs shrink-0",children:"⬡"}),(0,t.jsx)("span",{className:"font-mono text-xs text-muted tracking-widest uppercase group-data-[collapsible=icon]:hidden",children:"VibeDoc"})]})}),(0,t.jsxs)(P,{children:[(0,t.jsx)(O,{children:(0,t.jsx)(G,{children:(0,t.jsx)($,{children:ev.map(({href:e,icon:r,label:s})=>(0,t.jsx)(K,{children:(0,t.jsx)(q,{asChild:!0,isActive:a.startsWith(e),tooltip:s,children:(0,t.jsxs)(ec.default,{href:e,children:[(0,t.jsx)(r,{}),(0,t.jsx)("span",{children:s})]})})},e))})})}),(0,t.jsx)(I,{}),(0,t.jsx)(eb,{}),e&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(I,{}),(0,t.jsxs)(O,{children:[(0,t.jsx)(_,{children:"Board"}),(0,t.jsx)(G,{children:(0,t.jsx)($,{children:ej.map(({status:a,icon:r,label:s})=>{let n=e[a]?.length||0;return(0,t.jsx)(K,{children:(0,t.jsxs)(q,{tooltip:`${s}: ${n}`,children:[(0,t.jsx)(r,{}),(0,t.jsx)("span",{children:s}),(0,t.jsx)("span",{className:"ml-auto font-mono text-xs",children:n})]})},a)})})})]})]})]})]})}var ew=e.i(161863);let eN={name:"file-plus",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:"M9 15h6",key:"cctwl0"}],["path",{d:"M12 18v-6",key:"17g6i2"}]]};eN.node;let ek=(0,g.default)(eN),eS={name:"activity",size:24,node:[["path",{d:"M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2",key:"169zse"}]]};eS.node;let eC=(0,g.default)(eS);var eM=e.i(776639),eD=e.i(759684);function ez({open:e,onClose:s,onOpenDoc:n,onNewDoc:i,rootParam:l}){let o=(0,r.useRouter)(),[d,c]=(0,a.useState)(""),[u,h]=(0,a.useState)([]),[p,m]=(0,a.useState)(0),f=[{label:"New Doc",icon:ek,action:()=>{i?.(),s()}},{label:"Go to Board",icon:H,action:()=>{o.push("/board"),s()}},{label:"Go to Roadmap",icon:ed.Map,action:()=>{o.push("/roadmap"),s()}},{label:"Go to Activity",icon:eC,action:()=>{o.push("/activity"),s()}},{label:"Go to Memory",icon:Y,action:()=>{o.push("/memory"),s()}}];function b(e){n(e.path),s()}(0,a.useEffect)(()=>{e||(c(""),h([]),m(0))},[e]),(0,a.useEffect)(()=>{if(d.length<2){h([]),m(0);return}let e=setTimeout(async()=>{try{let e=await fetch(`/api/docs${l}&q=${encodeURIComponent(d)}`),t=await e.json();h(t.results?.map(e=>({path:e.file,section:e.file.split("/").slice(0,-1).join("/"),name:e.file.split("/").pop()?.replace(/\.md$/,"")??e.file}))??[]),m(0)}catch{}},300);return()=>clearTimeout(e)},[d,l]);let g=""===d;return(0,t.jsx)(eM.Dialog,{open:e,onOpenChange:e=>{e||s()},children:(0,t.jsxs)(eM.DialogContent,{className:"max-w-lg p-0 overflow-hidden bg-surface border-border gap-0",children:[(0,t.jsx)(eM.DialogTitle,{className:"sr-only",children:"Command Palette"}),(0,t.jsxs)("div",{className:"flex items-center px-4 h-12",children:[(0,t.jsx)(ew.Search,{className:"h-4 w-4 text-muted shrink-0 mr-3"}),(0,t.jsx)(w.Input,{autoFocus:!0,value:d,onChange:e=>c(e.target.value),onKeyDown:function(e){let t=u.length>0,a=t?u.length:f.length;"ArrowDown"===e.key?(e.preventDefault(),m(e=>Math.min(e+1,a-1))):"ArrowUp"===e.key?(e.preventDefault(),m(e=>Math.max(e-1,0))):"Enter"===e.key&&(t&&u[p]?b(u[p]):!t&&d.length<2&&f[p]&&f[p].action())},placeholder:"Search docs…",className:"border-0 bg-transparent h-full text-sm shadow-none focus-visible:ring-0 px-0 placeholder:text-muted"})]}),(0,t.jsx)("div",{className:"border-t border-border"}),(0,t.jsxs)(eD.ScrollArea,{className:"max-h-72",children:[g&&(0,t.jsx)("div",{className:"py-1",children:f.map((e,a)=>(0,t.jsxs)("button",{onClick:e.action,onMouseEnter:()=>m(a),className:(0,x.cn)("flex items-center gap-3 w-full px-4 py-2 text-sm text-left transition-colors",p===a?"bg-accent/10 text-txt":"text-muted hover:text-txt"),children:[(0,t.jsx)(e.icon,{className:"h-4 w-4 shrink-0"}),e.label]},e.label))}),!g&&u.length>0&&(0,t.jsx)("div",{className:"py-1",children:u.map((e,a)=>(0,t.jsxs)("button",{onClick:()=>b(e),onMouseEnter:()=>m(a),className:(0,x.cn)("flex items-center justify-between w-full px-4 py-2 text-sm text-left transition-colors",p===a?"bg-accent/10":"hover:bg-accent/5"),children:[(0,t.jsx)("span",{className:"font-medium text-txt truncate",children:e.name}),e.section&&(0,t.jsx)("span",{className:"text-xs text-muted ml-3 shrink-0 truncate max-w-[40%]",children:e.section})]},e.path))}),!g&&d.length>=2&&0===u.length&&(0,t.jsx)("div",{className:"px-4 py-6 text-center text-sm text-muted",children:"No docs found"})]})]})})}var eA=e.i(406952);let eR=/[/\-_. ]/;function eT({open:e,onClose:r,onOpenDoc:s,rootParam:n}){let[i,l]=(0,a.useState)([]),[o,d]=(0,a.useState)(""),[c,u]=(0,a.useState)(0),h=(0,a.useRef)(null),[p,m]=(0,a.useState)(e);e!==p&&(m(e),e&&(d(""),u(0))),(0,a.useEffect)(()=>{e&&fetch(`/api/docs${n}`).then(e=>e.json()).then(e=>l(Array.isArray(e)?e:[])).catch(()=>l([]))},[e,n]);let f=(0,a.useMemo)(()=>{var e;return e=e=>e.path,i.map(t=>({item:t,path:e(t),score:function(e,t){let a=e.toLowerCase().replace(/\s+/g,"");if(!a)return 0;let r=t.toLowerCase(),s=null;for(let e=r.indexOf(a[0]);-1!==e;e=r.indexOf(a[0],e+1)){let t=function(e,t,a){let r=t.lastIndexOf("/")+1,s=0,n=0,i=-2;for(let l=a;l<t.length&&n<e.length;l++)t[l]===e[n]&&(s+=1,l===i+1&&(s+=5),(0===l||eR.test(t[l-1]))&&(s+=8),l>=r&&(s+=3),i=l,n++);return n===e.length?s:null}(a,r,e);null!==t&&(null===s||t>s)&&(s=t)}return s}(o,e(t))})).filter(e=>null!==e.score).sort((e,t)=>t.score-e.score||e.path.length-t.path.length).map(e=>e.item)},[o,i]),b=f.slice(0,50);function g(e){e&&(s(e.path),r())}return(0,a.useEffect)(()=>{h.current?.querySelector(`[data-index="${c}"]`)?.scrollIntoView({block:"nearest"})},[c]),(0,t.jsx)(eM.Dialog,{open:e,onOpenChange:e=>{e||r()},children:(0,t.jsxs)(eM.DialogContent,{className:"max-w-xl p-0 overflow-hidden bg-surface border-border gap-0 top-[20%] translate-y-0",children:[(0,t.jsx)(eM.DialogTitle,{className:"sr-only",children:"Go to file"}),(0,t.jsx)(w.Input,{autoFocus:!0,value:o,onChange:e=>{d(e.target.value),u(0)},onKeyDown:function(e){"ArrowDown"===e.key||e.ctrlKey&&"n"===e.key?(e.preventDefault(),u(e=>Math.min(e+1,b.length-1))):"ArrowUp"===e.key||e.ctrlKey&&"p"===e.key?(e.preventDefault(),u(e=>Math.max(e-1,0))):"Enter"===e.key&&(e.preventDefault(),g(b[c]))},placeholder:"Go to file…",className:"h-11 rounded-none border-0 border-b border-border bg-transparent px-4 text-sm shadow-none focus-visible:ring-0 placeholder:text-muted"}),(0,t.jsxs)("div",{ref:h,className:"max-h-80 overflow-y-auto py-1",children:[b.map((e,a)=>{let r=e.path.lastIndexOf("/");return(0,t.jsxs)("button",{"data-index":a,onClick:()=>g(e),onMouseMove:()=>u(a),className:(0,x.cn)("flex items-center gap-2.5 w-full px-4 py-1.5 text-left text-sm transition-colors",c===a?"bg-accent/10 text-txt":"text-muted"),children:[(0,t.jsx)(eA.FileText,{className:"h-3.5 w-3.5 shrink-0 opacity-60"}),(0,t.jsx)("span",{className:"truncate text-txt",children:e.path.slice(r+1)}),r>0&&(0,t.jsx)("span",{className:"truncate text-xs text-muted",children:e.path.slice(0,r)})]},e.path)}),0===b.length&&(0,t.jsx)("div",{className:"px-4 py-6 text-center text-sm text-muted",children:"No matching files"}),f.length>50&&(0,t.jsxs)("div",{className:"px-4 py-1.5 text-xs text-muted",children:[f.length-50," more — keep typing to narrow"]})]})]})})}var eE=e.i(91881),eI=e.i(782630);function eP(){let{chats:e,modalId:a,closeModal:s}=(0,d.useChats)(),n=(0,r.useRouter)(),i=e.find(e=>e.id===a)?.title??"Chat";return(0,t.jsx)(eM.Dialog,{open:!!a,onOpenChange:e=>{e||s()},children:(0,t.jsxs)(eM.DialogContent,{"aria-describedby":void 0,className:"flex h-[min(82vh,780px)] w-[calc(100vw-2rem)] flex-col gap-0 overflow-hidden rounded-xl p-0 shadow-2xl sm:max-w-3xl sm:rounded-xl",children:[(0,t.jsx)(eM.DialogTitle,{className:"sr-only",children:i}),a&&(0,t.jsx)(eI.ChatView,{chatId:a,variant:"modal",onNavigate:s,onExpand:()=>{s({keep:!0}),n.push(`/chat?id=${encodeURIComponent(a)}`)}})]})})}let eO=[{key:"Cmd+K",description:"Open command palette"},{key:"Cmd+P",description:"Go to file"},{key:"b",description:"Go to Board"},{key:"d",description:"Go to Docs"},{key:"a",description:"Go to Activity"},{key:"m",description:"Go to Memory"},{key:"e",description:"Go to Explorer"},{key:"c",description:"Open agent chat"},{key:"/",description:"Focus doc search"},{key:"?",description:"Toggle this help"},{key:"Esc",description:"Close panel / modal"}];function e_({children:e}){let{loading:n,summary:i,projects:l,activeProject:c,liveIndicator:u,onProjectChange:h,board:p,openDoc:x,rootParam:m}=(0,s.useApp)(),f=(0,r.useRouter)(),b=(0,r.usePathname)(),[g,v]=(0,a.useState)(!1),[j,y]=(0,a.useState)(!1),[w,N]=(0,a.useState)(!1),[k,S]=(0,a.useState)(!1),{modalId:C,closeModal:M,showDefault:D}=(0,d.useChats)();return((0,a.useEffect)(()=>{function e(e){if((e.metaKey||e.ctrlKey)&&"k"===e.key){e.preventDefault(),y(e=>!e);return}if((e.metaKey||e.ctrlKey)&&"p"===e.key){e.preventDefault(),y(!1),N(e=>!e);return}let t=e.target?.tagName;if("INPUT"!==t&&"TEXTAREA"!==t)switch(e.key){case"b":f.push("/board");break;case"d":f.push("/docs");break;case"a":f.push("/activity");break;case"m":f.push("/memory");break;case"e":f.push("/explorer");break;case"c":e.preventDefault(),C?M():D();break;case"?":v(e=>!e);break;case"Escape":v(!1);break;case"/":e.preventDefault(),"/docs"===b?document.getElementById("doc-search")?.focus():f.push("/docs")}}return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[f,b,C,M,D]),n)?(0,t.jsx)(o,{}):(0,t.jsxs)(z,{children:[(0,t.jsx)(ey,{board:p}),(0,t.jsxs)(T,{className:"min-w-0",children:[(0,t.jsx)(F,{summary:i,projects:l,activeProject:c,liveIndicator:u,onProjectChange:h,onToggleChat:()=>C?M():D()}),(0,t.jsx)("main",{className:"flex-1 min-h-0 overflow-y-auto",children:e}),(0,t.jsx)(eP,{}),(0,t.jsx)(eT,{open:w,onClose:()=>N(!1),onOpenDoc:x,rootParam:m}),(0,t.jsx)(ez,{open:j,onClose:()=>y(!1),onOpenDoc:x,onNewDoc:()=>{y(!1),S(!0)},rootParam:m}),(0,t.jsx)(eE.NewDocModal,{open:k,onOpenChange:S,rootParam:m,onDocCreated:async e=>{await x(e)}}),(0,t.jsx)(eM.Dialog,{open:g,onOpenChange:v,children:(0,t.jsxs)(eM.DialogContent,{"aria-describedby":void 0,className:"block w-80 p-5 rounded-xl sm:rounded-xl shadow-2xl",children:[(0,t.jsx)(eM.DialogTitle,{className:"font-display text-sm font-semibold text-txt mb-4",children:"Keyboard shortcuts"}),(0,t.jsx)("table",{className:"w-full text-xs",children:(0,t.jsx)("tbody",{children:eO.map(({key:e,description:a})=>(0,t.jsxs)("tr",{className:"border-t border-border first:border-0",children:[(0,t.jsx)("td",{className:"py-1.5 pr-4",children:(0,t.jsx)("kbd",{className:"font-mono bg-surface2 border border-border rounded-sm px-1.5 py-0.5 text-accent",children:e})}),(0,t.jsx)("td",{className:"py-1.5 text-muted",children:a})]},e))})})]})})]})]})}e.s(["default",0,function({children:e}){return(0,t.jsxs)(s.AppProvider,{children:[(0,t.jsx)(l,{}),(0,t.jsx)(d.ChatProvider,{children:(0,t.jsx)(e_,{children:e})})]})}],588537)}]);
@@ -0,0 +1 @@
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,456526,e=>{e.v(t=>Promise.all(["static/chunks/0uy8t2jirrcbm.js"].map(t=>e.l(t))).then(()=>t(136507)))},915966,e=>{"use strict";var t=e.i(588395),a=e.i(986256),o=e.i(367263);let r="#e5c07b",n="#e06c75",l="#56b6c2",s="#ffffff",i="#abb2bf",c="#7d8799",d="#61afef",g="#98c379",p="#d19a66",u="#c678dd",m="#21252b",h="#2c313a",f="#282c34",b="#353a42",k="#3E4451",y="#528bff",C=t.EditorView.theme({"&":{color:i,backgroundColor:f},".cm-content":{caretColor:y},".cm-cursor, .cm-dropCursor":{borderLeftColor:y},"&.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground, .cm-selectionBackground, .cm-content ::selection":{backgroundColor:k},".cm-panels":{backgroundColor:m,color:i},".cm-panels.cm-panels-top":{borderBottom:"2px solid black"},".cm-panels.cm-panels-bottom":{borderTop:"2px solid black"},".cm-searchMatch":{backgroundColor:"#72a1ff59",outline:"1px solid #457dff"},".cm-searchMatch.cm-searchMatch-selected":{backgroundColor:"#6199ff2f"},".cm-activeLine":{backgroundColor:"#6699ff0b"},".cm-selectionMatch":{backgroundColor:"#aafe661a"},"&.cm-focused .cm-matchingBracket, &.cm-focused .cm-nonmatchingBracket":{backgroundColor:"#bad0f847"},".cm-gutters":{backgroundColor:f,color:c,border:"none"},".cm-activeLineGutter":{backgroundColor:h},".cm-foldPlaceholder":{backgroundColor:"transparent",border:"none",color:"#ddd"},".cm-tooltip":{border:"none",backgroundColor:b},".cm-tooltip .cm-tooltip-arrow:before":{borderTopColor:"transparent",borderBottomColor:"transparent"},".cm-tooltip .cm-tooltip-arrow:after":{borderTopColor:b,borderBottomColor:b},".cm-tooltip-autocomplete":{"& > ul > li[aria-selected]":{backgroundColor:h,color:i}}},{dark:!0}),v=a.HighlightStyle.define([{tag:o.tags.keyword,color:u},{tag:[o.tags.name,o.tags.deleted,o.tags.character,o.tags.propertyName,o.tags.macroName],color:n},{tag:[o.tags.function(o.tags.variableName),o.tags.labelName],color:d},{tag:[o.tags.color,o.tags.constant(o.tags.name),o.tags.standard(o.tags.name)],color:p},{tag:[o.tags.definition(o.tags.name),o.tags.separator],color:i},{tag:[o.tags.typeName,o.tags.className,o.tags.number,o.tags.changed,o.tags.annotation,o.tags.modifier,o.tags.self,o.tags.namespace],color:r},{tag:[o.tags.operator,o.tags.operatorKeyword,o.tags.url,o.tags.escape,o.tags.regexp,o.tags.link,o.tags.special(o.tags.string)],color:l},{tag:[o.tags.meta,o.tags.comment],color:c},{tag:o.tags.strong,fontWeight:"bold"},{tag:o.tags.emphasis,fontStyle:"italic"},{tag:o.tags.strikethrough,textDecoration:"line-through"},{tag:o.tags.link,color:c,textDecoration:"underline"},{tag:o.tags.heading,fontWeight:"bold",color:n},{tag:[o.tags.atom,o.tags.bool,o.tags.special(o.tags.variableName)],color:p},{tag:[o.tags.processingInstruction,o.tags.string,o.tags.inserted],color:g},{tag:o.tags.invalid,color:s}]),x=[C,(0,a.syntaxHighlighting)(v)];e.s(["color",0,{chalky:r,coral:n,cyan:l,invalid:s,ivory:i,stone:c,malibu:d,sage:g,whiskey:p,violet:u,darkBackground:m,highlightBackground:h,background:f,tooltipBackground:b,selection:k,cursor:y},"oneDark",0,x,"oneDarkHighlightStyle",0,v,"oneDarkTheme",0,C])},190905,e=>{e.v(e=>Promise.resolve().then(()=>e(915966)))},973121,e=>{e.v(e=>Promise.resolve().then(()=>e(588395)))},609617,e=>{"use strict";var t=e.i(83790);let a={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"}]]};a.node;let o=(0,t.default)(a);e.s(["Copy",0,o],609617)},875581,763305,107308,e=>{"use strict";var t=e.i(83790);let a={name:"folder",size:24,node:[["path",{d:"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z",key:"1kt360"}]]};a.node;let o=(0,t.default)(a);e.s(["Folder",0,o],875581);let r={name:"folder-open",size:24,node:[["path",{d:"m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2",key:"usdka0"}]]};r.node;let n=(0,t.default)(r);e.s(["FolderOpen",0,n],763305);var l=e.i(180338),s=e.i(543836),i=e.i(264145),c=e.i(315671),d=e.i(44532),g=e.i(166100),p=e.i(978238),u=e.i(997611),m=e.i(432567),h=e.i(72345),f=Object.defineProperty,b=(e,t)=>f(e,"name",{value:t,configurable:!0}),k="Collapsible",[y,C]=(0,i.createContextScope)(k),[v,x]=y(k),j=l.forwardRef(b(function(e,t){let{__scopeCollapsible:a,open:o,defaultOpen:r,disabled:n,onOpenChange:s,...i}=e,[d,g]=(0,c.useControllableState)({prop:o,defaultProp:r??!1,onChange:s,caller:k});return(0,h.jsx)(v,{scope:a,disabled:n,contentId:(0,m.useId)(),open:d,onOpenToggle:l.useCallback(()=>g(e=>!e),[g]),children:(0,h.jsx)(p.Primitive.div,{"data-state":T(d),"data-disabled":n?"":void 0,...i,ref:t})})},"Collapsible")),z=l.forwardRef(b(function(e,t){let{__scopeCollapsible:a,...o}=e,r=x("CollapsibleTrigger",a);return(0,h.jsx)(p.Primitive.button,{type:"button","aria-controls":r.open?r.contentId:void 0,"aria-expanded":r.open||!1,"data-state":T(r.open),"data-disabled":r.disabled?"":void 0,disabled:r.disabled,...o,ref:t,onClick:(0,s.composeEventHandlers)(e.onClick,r.onOpenToggle)})},"CollapsibleTrigger")),M="CollapsibleContent",P=l.forwardRef(b(function(e,t){let{forceMount:a,...o}=e,r=x(M,e.__scopeCollapsible);return(0,h.jsx)(u.Presence,{present:a||r.open,children:({present:e})=>(0,h.jsx)(R,{...o,ref:t,present:e})})},"CollapsibleContent")),R=l.forwardRef(b(function(e,t){let{__scopeCollapsible:a,present:o,children:r,...n}=e,s=x(M,a),[i,c]=l.useState(o),u=l.useRef(null),m=(0,g.useComposedRefs)(t,u),f=l.useRef(0),b=f.current,k=l.useRef(0),y=k.current,C=s.open||i,v=l.useRef(C),j=l.useRef(void 0);return l.useEffect(()=>{let e=requestAnimationFrame(()=>v.current=!1);return()=>cancelAnimationFrame(e)},[]),(0,d.useLayoutEffect)(()=>{let e=u.current;if(e){j.current=j.current||{transitionDuration:e.style.transitionDuration,animationName:e.style.animationName},e.style.transitionDuration="0s",e.style.animationName="none";let t=e.getBoundingClientRect();f.current=t.height,k.current=t.width,v.current||(e.style.transitionDuration=j.current.transitionDuration,e.style.animationName=j.current.animationName),c(o)}},[s.open,o]),(0,h.jsx)(p.Primitive.div,{"data-state":T(s.open),"data-disabled":s.disabled?"":void 0,id:s.contentId,hidden:!C,...n,ref:m,style:{"--radix-collapsible-content-height":b?`${b}px`:void 0,"--radix-collapsible-content-width":y?`${y}px`:void 0,...e.style},children:C&&r})},"CollapsibleContentImpl"));function T(e){return e?"open":"closed"}b(T,"getState"),e.s(["Collapsible",0,j,"CollapsibleContent",0,P,"CollapsibleTrigger",0,z],107308)},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 o=(0,t.default)(a);e.s(["Pencil",0,o],424991)},172856,798103,394512,e=>{"use strict";var t=e.i(83790);let a={name:"users",size:24,node:[["path",{d:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2",key:"1yyitq"}],["path",{d:"M16 3.128a4 4 0 0 1 0 7.744",key:"16gr8j"}],["path",{d:"M22 21v-2a4 4 0 0 0-3-3.87",key:"kshegd"}],["circle",{cx:"9",cy:"7",r:"4",key:"nufk8"}]]};a.node;let o=(0,t.default)(a);e.s(["Users",0,o],172856);let r={name:"code-xml",size:24,node:[["path",{d:"m18 16 4-4-4-4",key:"1inbqp"}],["path",{d:"m6 8-4 4 4 4",key:"15zrgr"}],["path",{d:"m14.5 4-5 16",key:"e7oirm"}]],aliases:["code-2"]};r.node;let n=(0,t.default)(r);e.s(["Code2",0,n],798103);let l={name:"list",size:24,node:[["path",{d:"M3 5h.01",key:"18ugdj"}],["path",{d:"M3 12h.01",key:"nlz23k"}],["path",{d:"M3 19h.01",key:"noohij"}],["path",{d:"M8 5h13",key:"1pao27"}],["path",{d:"M8 12h13",key:"1za7za"}],["path",{d:"M8 19h13",key:"m83p4d"}]]};l.node;let s=(0,t.default)(l);e.s(["List",0,s],394512)},169155,e=>{e.v(t=>Promise.all(["static/chunks/09_ppmd5llmj7.js","static/chunks/0ui2glzbpp23i.js"].map(t=>e.l(t))).then(()=>t(518762)))},685361,e=>{e.v(t=>Promise.all(["static/chunks/3f6_nfqj52vj9.js","static/chunks/0ui2glzbpp23i.js"].map(t=>e.l(t))).then(()=>t(304544)))},892171,e=>{e.v(t=>Promise.all(["static/chunks/15urlbk7lut04.js","static/chunks/0ui2glzbpp23i.js"].map(t=>e.l(t))).then(()=>t(714931)))}]);
@@ -0,0 +1 @@
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,543836,e=>{"use strict";var t=Object.defineProperty,r=(e,r)=>t(e,"name",{value:r,configurable:!0}),n=!!("u">typeof window&&window.document&&window.document.createElement);function o(e,t,{checkForDefaultPrevented:n=!0}={}){return r(function(r){if(e?.(r),!1===n||!r||!r.defaultPrevented)return t?.(r)},"handleEvent")}function l(e){if(!n)throw Error("Cannot access document outside of the DOM");return e?.ownerDocument??document}function i(e){return"IFRAME"===e.tagName}r(o,"composeEventHandlers"),r(function(e){if(!n)throw Error("Cannot access window outside of the DOM");return e?.ownerDocument?.defaultView??window},"getOwnerWindow"),r(l,"getOwnerDocument"),r(function e(t,r=!1){let{activeElement:n}=l(t);if(!n?.nodeName)return null;if(i(n)&&n.contentDocument)return e(n.contentDocument.body,r);if(r){let e=n.getAttribute("aria-activedescendant");if(e){let t=l(n).getElementById(e);if(t)return t}}return n},"getActiveElement"),r(i,"isFrame"),e.s(["composeEventHandlers",0,o])},899300,e=>{"use strict";e.s(["IS_DEVELOPMENT",0,!1])},264145,e=>{"use strict";var t=e.i(180338),r=e.i(72345),n=Object.defineProperty,o=(e,t)=>n(e,"name",{value:t,configurable:!0});function l(e,n=[]){let a=[];function c(n,l){let i=t.createContext(l);i.displayName=n+"Context";let c=a.length;a=[...a,l];let s=o(n=>{let{scope:o,children:l,...a}=n,s=o?.[e]?.[c]||i,u=t.useMemo(()=>a,Object.values(a));return(0,r.jsx)(s.Provider,{value:u,children:l})},"Provider");function u(r,o,a={}){let{optional:s=!1}=a,d=o?.[e]?.[c]||i,f=t.useContext(d);if(f)return f;if(void 0!==l)return l;if(!s)throw Error(`\`${r}\` must be used within \`${n}\``)}return s.displayName=n+"Provider",o(u,"useContext"),[s,u]}o(c,"createContext");let s=o(()=>{let r=a.map(e=>t.createContext(e));return o(function(n){let o=n?.[e]||r;return t.useMemo(()=>({[`__scope${e}`]:{...n,[e]:o}}),[n,o])},"useScope")},"createScope");return s.scopeName=e,[c,i(s,...n)]}function i(...e){let r=e[0];if(1===e.length)return r;let n=o(()=>{let n=e.map(e=>({useScope:e(),scopeName:e.scopeName}));return o(function(e){let o=n.reduce((t,{useScope:r,scopeName:n})=>{let o=r(e)[`__scope${n}`];return{...t,...o}},{});return t.useMemo(()=>({[`__scope${r.scopeName}`]:o}),[o])},"useComposedScopes")},"createScope");return n.scopeName=r.scopeName,n}o(function(e,n){let l=t.createContext(n);l.displayName=e+"Context";let i=o(e=>{let{children:n,...o}=e,i=t.useMemo(()=>o,Object.values(o));return(0,r.jsx)(l.Provider,{value:i,children:n})},"Provider");function a(r,o={}){let{optional:i=!1}=o,c=t.useContext(l);if(c)return c;if(void 0!==n)return n;if(!i)throw Error(`\`${r}\` must be used within \`${e}\``)}return i.displayName=e+"Provider",o(a,"useContext"),[i,a]},"createContext"),o(l,"createContextScope"),o(i,"composeContextScopes"),e.s(["createContextScope",0,l])},432567,e=>{"use strict";var t=e.i(180338),r=e.i(44532),n=Object.defineProperty,o=t[" useId ".trim().toString()]||(()=>void 0),l=0;function i(e){let[n,i]=t.useState(o());return(0,r.useLayoutEffect)(()=>{e||i(e=>e??String(l++))},[e]),e||(n?`radix-${n}`:"")}n(i,"name",{value:"useId",configurable:!0}),e.s(["useId",0,i])},997611,e=>{"use strict";var t=e.i(180338),r=e.i(44532),n=Object.defineProperty,o=(e,t)=>n(e,"name",{value:t,configurable:!0});function l(e,r){return t.useReducer((e,t)=>r[e][t]??e,e)}o(l,"useStateMachine");var i=o(e=>{let{present:r,children:n}=e,o=a(r),l="function"==typeof n?n({present:o.isPresent}):t.Children.only(n),i=s(o.ref,d(l));return"function"==typeof n||o.isPresent?t.cloneElement(l,{ref:i}):null},"Presence");function a(e){let[n,i]=t.useState(),a=t.useRef(null),c=t.useRef(e),s=t.useRef("none"),d=t.useRef(void 0),[f,p]=l(e?"mounted":"unmounted",{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return t.useEffect(()=>{"mounted"===f?(s.current=d.current??u(a.current),d.current=void 0):s.current="none"},[f]),(0,r.useLayoutEffect)(()=>{let t=a.current,r=c.current;if(r!==e){let n=s.current,o=u(t);e?(d.current=o,p("MOUNT")):"none"===o||t?.display==="none"?p("UNMOUNT"):r&&n!==o?p("ANIMATION_OUT"):p("UNMOUNT"),c.current=e}},[e,p]),(0,r.useLayoutEffect)(()=>{if(n){let e,t=n.ownerDocument.defaultView??window,r=o(r=>{let o=u(a.current).includes(CSS.escape(r.animationName));if(r.target===n&&o&&(p("ANIMATION_END"),!c.current)){let r=n.style.animationFillMode;n.style.animationFillMode="forwards",e=t.setTimeout(()=>{"forwards"===n.style.animationFillMode&&(n.style.animationFillMode=r)})}},"handleAnimationEnd"),l=o(e=>{e.target===n&&(s.current=u(a.current))},"handleAnimationStart");return n.addEventListener("animationstart",l),n.addEventListener("animationcancel",r),n.addEventListener("animationend",r),()=>{t.clearTimeout(e),n.removeEventListener("animationstart",l),n.removeEventListener("animationcancel",r),n.removeEventListener("animationend",r)}}p("ANIMATION_END")},[n,p]),{isPresent:["mounted","unmountSuspended"].includes(f),ref:t.useCallback(e=>{if(e){let t=getComputedStyle(e);a.current=t,d.current=u(t)}else a.current=null;i(e)},[])}}function c(e,t){if("function"==typeof e)return e(t);null!=e&&(e.current=t)}function s(...e){let r=t.useRef(e);return r.current=e,t.useCallback(e=>{let t=r.current,n=!1,o=t.map(t=>{let r=c(t,e);return n||"function"!=typeof r||(n=!0),r});if(n)return()=>{for(let e=0;e<o.length;e++){let r=o[e];"function"==typeof r?r():c(t[e],null)}}},[])}function u(e){return e?.animationName||"none"}function d(e){let t=Object.getOwnPropertyDescriptor(e.props,"ref")?.get,r=t&&"isReactWarning"in t&&t.isReactWarning;return r?e.ref:(r=(t=Object.getOwnPropertyDescriptor(e,"ref")?.get)&&"isReactWarning"in t&&t.isReactWarning)?e.props.ref:e.props.ref||e.ref}o(a,"usePresence"),o(c,"setRef"),o(s,"useStableComposedRefs"),o(u,"getAnimationName"),o(d,"getElementRef"),e.s(["Presence",0,i])},978238,e=>{"use strict";var t=e.i(180338),r=e.i(399531),n=e.i(617739),o=e.i(72345),l=Object.defineProperty,i=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"].reduce((e,r)=>{let l=(0,n.createSlot)(`Primitive.${r}`),i=t.forwardRef((e,t)=>{let{asChild:n,...i}=e;return"u">typeof window&&(window[Symbol.for("radix-ui")]=!0),(0,o.jsx)(n?l:r,{...i,ref:t})});return i.displayName=`Primitive.${r}`,{...e,[r]:i}},{});function a(e,t){e&&r.flushSync(()=>e.dispatchEvent(t))}l(a,"name",{value:"dispatchDiscreteCustomEvent",configurable:!0}),e.s(["Primitive",0,i,"dispatchDiscreteCustomEvent",0,a])},232253,e=>{"use strict";var t=e.i(180338);function r(e){let r=t.useRef(e);return t.useEffect(()=>{r.current=e}),t.useMemo(()=>(...e)=>r.current?.(...e),[])}(0,Object.defineProperty)(r,"name",{value:"useCallbackRef",configurable:!0}),e.s(["useCallbackRef",0,r])},315671,e=>{"use strict";var t=e.i(180338),r=e.i(899300),n=e.i(44532),o=Object.defineProperty,l=t[" useEffectEvent ".trim().toString()],i=t[" useInsertionEffect ".trim().toString()];function a(e){if("function"==typeof l)return l(e);let r=t.useRef(()=>{throw Error("Cannot call an event handler while rendering.")});return"function"==typeof i?i(()=>{r.current=e}):(0,n.useLayoutEffect)(()=>{r.current=e}),t.useMemo(()=>(...e)=>r.current?.(...e),[])}o(a,"name",{value:"useEffectEvent",configurable:!0});var c=Object.defineProperty,s=(e,t)=>c(e,"name",{value:t,configurable:!0}),u=t[" useInsertionEffect ".trim().toString()]||n.useLayoutEffect;function d({prop:e,defaultProp:n,onChange:o=s(()=>{},"onChange"),caller:l}){let[i,a,c]=f({defaultProp:n,onChange:o}),u=void 0!==e,m=u?e:i;if(r.IS_DEVELOPMENT){let r=t.useRef(void 0!==e);t.useEffect(()=>{let e=r.current;if(e!==u){let t=u?"controlled":"uncontrolled";console.warn(`${l} is changing from ${e?"controlled":"uncontrolled"} to ${t}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`)}r.current=u},[u,l])}return[m,t.useCallback(t=>{if(u){let r=p(t)?t(e):t;r!==e&&c.current?.(r)}else a(t)},[u,e,a,c])]}function f({defaultProp:e,onChange:r}){let[n,o]=t.useState(e),l=t.useRef(n),i=t.useRef(r);return u(()=>{i.current=r},[r]),t.useEffect(()=>{l.current!==n&&(i.current?.(n),l.current=n)},[n,l]),[n,o,i]}function p(e){return"function"==typeof e}s(d,"useControllableState"),s(f,"useUncontrolledState"),s(p,"isFunction");var m=Symbol("RADIX:SYNC_STATE");s(function(e,n,o,l){let{prop:i,defaultProp:c,onChange:s,caller:u}=n,d=void 0!==i,f=a(s);if(r.IS_DEVELOPMENT){let e=t.useRef(void 0!==i);t.useEffect(()=>{let t=e.current;if(t!==d){let e=d?"controlled":"uncontrolled";console.warn(`${u} is changing from ${t?"controlled":"uncontrolled"} to ${e}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`)}e.current=d},[d,u])}let p=[{...o,state:c}];l&&p.push(l);let[v,h]=t.useReducer((t,r)=>{if(r.type===m)return{...t,state:r.state};let n=e(t,r);return d&&!Object.is(n.state,t.state)&&f(n.state),n},...p),b=v.state,w=t.useRef(b);t.useEffect(()=>{w.current!==b&&(w.current=b,d||f(b))},[b,w,d]);let g=t.useMemo(()=>void 0!==i?{...v,state:i}:v,[v,i]);return t.useEffect(()=>{d&&!Object.is(i,v.state)&&h({type:m,state:i})},[i,v.state,d]),[g,h]},"useControllableStateReducer"),e.s(["useControllableState",0,d],315671)},44532,e=>{"use strict";var t=e.i(180338),r=globalThis?.document?t.useLayoutEffect:()=>{};e.s(["useLayoutEffect",0,r])},487486,e=>{"use strict";var t=e.i(72345),r=e.i(294237),n=e.i(975157);let o=(0,r.cva)("inline-flex items-center rounded-full border border-border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-hidden focus:ring-2 focus:ring-accent focus:ring-offset-2",{variants:{variant:{default:"border-transparent bg-accent text-white hover:bg-accent/80",secondary:"border-transparent bg-surface2 text-txt hover:bg-surface2/80",destructive:"border-transparent bg-danger text-white hover:bg-danger/80",outline:"text-txt"}},defaultVariants:{variant:"default"}});e.s(["Badge",0,function({className:e,variant:r,...l}){return(0,t.jsx)("div",{className:(0,n.cn)(o({variant:r}),e),...l})}])},759684,900877,e=>{"use strict";var t=e.i(72345),r=e.i(180338),n=e.i(978238),o=e.i(997611),l=e.i(264145),i=e.i(166100),a=e.i(232253),c=Object.defineProperty,s=r.createContext(void 0);function u(e){let t=r.useContext(s);return e||t||"ltr"}c(u,"name",{value:"useDirection",configurable:!0}),e.s(["useDirection",0,u],900877);var d=e.i(44532);function f(e,[t,r]){return Math.min(r,Math.max(t,e))}(0,Object.defineProperty)(f,"name",{value:"clamp",configurable:!0});var p=e.i(543836),m=Object.defineProperty,v=(e,t)=>m(e,"name",{value:t,configurable:!0});function h(e,t){return r.useReducer((e,r)=>t[e][r]??e,e)}v(h,"useStateMachine");var b="ScrollArea",[w,g]=(0,l.createContextScope)(b),[S,E]=w(b),C=r.forwardRef(v(function(e,o){let{__scopeScrollArea:l,type:a="hover",dir:c,scrollHideDelay:s=600,...d}=e,[f,p]=r.useState(null),[m,v]=r.useState(null),[h,b]=r.useState(null),[w,g]=r.useState(null),[E,C]=r.useState(null),[y,x]=r.useState(0),[R,P]=r.useState(0),[T,N]=r.useState(!1),[A,j]=r.useState(!1),O=(0,i.useComposedRefs)(o,p),D=u(c);return(0,t.jsx)(S,{scope:l,type:a,dir:D,scrollHideDelay:s,scrollArea:f,viewport:m,onViewportChange:v,content:h,onContentChange:b,scrollbarX:w,onScrollbarXChange:g,scrollbarXEnabled:T,onScrollbarXEnabledChange:N,scrollbarY:E,onScrollbarYChange:C,scrollbarYEnabled:A,onScrollbarYEnabledChange:j,onCornerWidthChange:x,onCornerHeightChange:P,children:(0,t.jsx)(n.Primitive.div,{dir:D,...d,ref:O,style:{position:"relative","--radix-scroll-area-corner-width":y+"px","--radix-scroll-area-corner-height":R+"px",...e.style}})})},"ScrollArea")),y=r.forwardRef(v(function(e,o){let{__scopeScrollArea:l,children:a,nonce:c,...s}=e,u=E("ScrollAreaViewport",l),d=r.useRef(null),f=(0,i.useComposedRefs)(o,d,u.onViewportChange);return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(x,{nonce:c}),(0,t.jsx)(n.Primitive.div,{"data-radix-scroll-area-viewport":"",...s,ref:f,style:{overflowX:u.scrollbarXEnabled?"scroll":"hidden",overflowY:u.scrollbarYEnabled?"scroll":"hidden",...e.style},children:(0,t.jsx)("div",{ref:u.onContentChange,style:{minWidth:"100%",display:"table"},children:a})})]})},"ScrollAreaViewport")),x=r.memo(v(function({nonce:e}){return(0,t.jsx)("style",{dangerouslySetInnerHTML:{__html:"[data-radix-scroll-area-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-scroll-area-viewport]::-webkit-scrollbar{display:none}"},nonce:e})},"ScrollAreaViewportStyle"),(e,t)=>e.nonce===t.nonce),R="ScrollAreaScrollbar",P=r.forwardRef(v(function(e,n){let{forceMount:o,...l}=e,i=E(R,e.__scopeScrollArea),{onScrollbarXEnabledChange:a,onScrollbarYEnabledChange:c}=i,s="horizontal"===e.orientation;return r.useEffect(()=>(s?a(!0):c(!0),()=>{s?a(!1):c(!1)}),[s,a,c]),"hover"===i.type?(0,t.jsx)(T,{...l,ref:n,forceMount:o}):"scroll"===i.type?(0,t.jsx)(N,{...l,ref:n,forceMount:o}):"auto"===i.type?(0,t.jsx)(A,{...l,ref:n,forceMount:o}):"always"===i.type?(0,t.jsx)(j,{...l,ref:n,"data-state":"visible"}):null},"ScrollAreaScrollbar")),T=r.forwardRef(v(function(e,n){let{forceMount:l,...i}=e,a=E(R,e.__scopeScrollArea),[c,s]=r.useState(!1);return r.useEffect(()=>{let e=a.scrollArea,t=0;if(e){let r=v(()=>{window.clearTimeout(t),s(!0)},"handlePointerEnter"),n=v(()=>{t=window.setTimeout(()=>s(!1),a.scrollHideDelay)},"handlePointerLeave");return e.addEventListener("pointerenter",r),e.addEventListener("pointerleave",n),()=>{window.clearTimeout(t),e.removeEventListener("pointerenter",r),e.removeEventListener("pointerleave",n)}}},[a.scrollArea,a.scrollHideDelay]),(0,t.jsx)(o.Presence,{present:l||c,children:(0,t.jsx)(A,{"data-state":c?"visible":"hidden",...i,ref:n})})},"ScrollAreaScrollbarHover")),N=r.forwardRef(v(function(e,n){let{forceMount:l,...i}=e,a=E(R,e.__scopeScrollArea),c="horizontal"===e.orientation,s=G(()=>d("SCROLL_END"),100),[u,d]=h("hidden",{hidden:{SCROLL:"scrolling"},scrolling:{SCROLL_END:"idle",POINTER_ENTER:"interacting"},interacting:{SCROLL:"interacting",POINTER_LEAVE:"idle"},idle:{HIDE:"hidden",SCROLL:"scrolling",POINTER_ENTER:"interacting"}});return r.useEffect(()=>{if("idle"===u){let e=window.setTimeout(()=>d("HIDE"),a.scrollHideDelay);return()=>window.clearTimeout(e)}},[u,a.scrollHideDelay,d]),r.useEffect(()=>{let e=a.viewport,t=c?"scrollLeft":"scrollTop";if(e){let r=e[t],n=v(()=>{let n=e[t];r!==n&&(d("SCROLL"),s()),r=n},"handleScroll");return e.addEventListener("scroll",n),()=>e.removeEventListener("scroll",n)}},[a.viewport,c,d,s]),(0,t.jsx)(o.Presence,{present:l||"hidden"!==u,children:(0,t.jsx)(j,{"data-state":"hidden"===u?"hidden":"visible",...i,ref:n,onPointerEnter:(0,p.composeEventHandlers)(e.onPointerEnter,()=>d("POINTER_ENTER")),onPointerLeave:(0,p.composeEventHandlers)(e.onPointerLeave,()=>d("POINTER_LEAVE"))})})},"ScrollAreaScrollbarScroll")),A=r.forwardRef(v(function(e,n){let l=E(R,e.__scopeScrollArea),{forceMount:i,...a}=e,[c,s]=r.useState(!1),u="horizontal"===e.orientation,d=G(()=>{if(l.viewport){let e=l.viewport.offsetWidth<l.viewport.scrollWidth,t=l.viewport.offsetHeight<l.viewport.scrollHeight;s(u?e:t)}},10);return J(l.viewport,d),J(l.content,d),(0,t.jsx)(o.Presence,{present:i||c,children:(0,t.jsx)(j,{"data-state":c?"visible":"hidden",...a,ref:n})})},"ScrollAreaScrollbarAuto")),j=r.forwardRef(v(function(e,n){let{orientation:o="vertical",...l}=e,i=E(R,e.__scopeScrollArea),a=r.useRef(null),c=r.useRef(0),[s,u]=r.useState({content:0,viewport:0,scrollbar:{size:0,paddingStart:0,paddingEnd:0}}),d=F(s.viewport,s.content),f={...l,sizes:s,onSizesChange:u,hasThumb:!!(d>0&&d<1),onThumbChange:v(e=>a.current=e,"onThumbChange"),onThumbPointerUp:v(()=>c.current=0,"onThumbPointerUp"),onThumbPointerDown:v(e=>c.current=e,"onThumbPointerDown")};function p(e,t){return X(e,c.current,s,t)}return(v(p,"getScrollPosition"),"horizontal"===o)?(0,t.jsx)(O,{...f,ref:n,onThumbPositionChange:()=>{if(i.viewport&&a.current){let e=Y(i.viewport.scrollLeft,s,i.dir);a.current.style.transform=`translate3d(${e}px, 0, 0)`}},onWheelScroll:e=>{i.viewport&&(i.viewport.scrollLeft=e)},onDragScroll:e=>{i.viewport&&(i.viewport.scrollLeft=p(e,i.dir))}}):"vertical"===o?(0,t.jsx)(D,{...f,ref:n,onThumbPositionChange:()=>{if(i.viewport&&a.current){let e=Y(i.viewport.scrollTop,s);a.current.style.transform=`translate3d(0, ${e}px, 0)`}},onWheelScroll:e=>{i.viewport&&(i.viewport.scrollTop=e)},onDragScroll:e=>{i.viewport&&(i.viewport.scrollTop=p(e))}}):null},"ScrollAreaScrollbarVisible")),O=r.forwardRef(v(function(e,n){let{sizes:o,onSizesChange:l,...a}=e,c=E(R,e.__scopeScrollArea),[s,u]=r.useState(),d=r.useRef(null),f=(0,i.useComposedRefs)(n,d,c.onScrollbarXChange);return r.useEffect(()=>{d.current&&u(getComputedStyle(d.current))},[d]),(0,t.jsx)(I,{"data-orientation":"horizontal",...a,ref:f,sizes:o,style:{bottom:0,left:"rtl"===c.dir?"var(--radix-scroll-area-corner-width)":0,right:"ltr"===c.dir?"var(--radix-scroll-area-corner-width)":0,"--radix-scroll-area-thumb-width":V(o)+"px",...e.style},onThumbPointerDown:t=>e.onThumbPointerDown(t.x),onDragScroll:t=>e.onDragScroll(t.x),onWheelScroll:(t,r)=>{if(c.viewport){let n=c.viewport.scrollLeft+t.deltaX;e.onWheelScroll(n),K(n,r)&&t.preventDefault()}},onResize:()=>{d.current&&c.viewport&&s&&l({content:c.viewport.scrollWidth,viewport:c.viewport.offsetWidth,scrollbar:{size:d.current.clientWidth,paddingStart:$(s.paddingLeft),paddingEnd:$(s.paddingRight)}})}})},"ScrollAreaScrollbarX")),D=r.forwardRef(v(function(e,n){let{sizes:o,onSizesChange:l,...a}=e,c=E(R,e.__scopeScrollArea),[s,u]=r.useState(),d=r.useRef(null),f=(0,i.useComposedRefs)(n,d,c.onScrollbarYChange);return r.useEffect(()=>{d.current&&u(getComputedStyle(d.current))},[d]),(0,t.jsx)(I,{"data-orientation":"vertical",...a,ref:f,sizes:o,style:{top:0,right:"ltr"===c.dir?0:void 0,left:"rtl"===c.dir?0:void 0,bottom:"var(--radix-scroll-area-corner-height)","--radix-scroll-area-thumb-height":V(o)+"px",...e.style},onThumbPointerDown:t=>e.onThumbPointerDown(t.y),onDragScroll:t=>e.onDragScroll(t.y),onWheelScroll:(t,r)=>{if(c.viewport){let n=c.viewport.scrollTop+t.deltaY;e.onWheelScroll(n),K(n,r)&&t.preventDefault()}},onResize:()=>{d.current&&c.viewport&&s&&l({content:c.viewport.scrollHeight,viewport:c.viewport.offsetHeight,scrollbar:{size:d.current.clientHeight,paddingStart:$(s.paddingTop),paddingEnd:$(s.paddingBottom)}})}})},"ScrollAreaScrollbarY")),[L,_]=w(R),I=r.forwardRef(v(function(e,o){let{__scopeScrollArea:l,sizes:c,hasThumb:s,onThumbChange:u,onThumbPointerUp:d,onThumbPointerDown:f,onThumbPositionChange:m,onDragScroll:h,onWheelScroll:b,onResize:w,...g}=e,S=E(R,l),[C,y]=r.useState(null),x=(0,i.useComposedRefs)(o,y),P=r.useRef(null),T=r.useRef(""),N=S.viewport,A=c.content-c.viewport,j=(0,a.useCallbackRef)(b),O=(0,a.useCallbackRef)(m),D=G(w,10);function _(e){P.current&&h({x:e.clientX-P.current.left,y:e.clientY-P.current.top})}return v(_,"handleDragScroll"),r.useEffect(()=>{let e=v(e=>{let t=e.target;C?.contains(t)&&j(e,A)},"handleWheel");return document.addEventListener("wheel",e,{passive:!1}),()=>document.removeEventListener("wheel",e,{passive:!1})},[N,C,A,j]),r.useEffect(O,[c,O]),J(C,D),J(S.content,D),(0,t.jsx)(L,{scope:l,scrollbar:C,hasThumb:s,onThumbChange:(0,a.useCallbackRef)(u),onThumbPointerUp:(0,a.useCallbackRef)(d),onThumbPositionChange:O,onThumbPointerDown:(0,a.useCallbackRef)(f),children:(0,t.jsx)(n.Primitive.div,{...g,ref:x,style:{position:"absolute",...g.style},onPointerDown:(0,p.composeEventHandlers)(e.onPointerDown,e=>{0===e.button&&(e.target.setPointerCapture(e.pointerId),P.current=C.getBoundingClientRect(),T.current=document.body.style.webkitUserSelect,document.body.style.webkitUserSelect="none",S.viewport&&(S.viewport.style.scrollBehavior="auto"),_(e))}),onPointerMove:(0,p.composeEventHandlers)(e.onPointerMove,_),onPointerUp:(0,p.composeEventHandlers)(e.onPointerUp,e=>{let t=e.target;t.hasPointerCapture(e.pointerId)&&t.releasePointerCapture(e.pointerId),document.body.style.webkitUserSelect=T.current,S.viewport&&(S.viewport.style.scrollBehavior=""),P.current=null})})})},"ScrollAreaScrollbarImpl")),M="ScrollAreaThumb",U=r.forwardRef(v(function(e,r){let{forceMount:n,...l}=e,i=_(M,e.__scopeScrollArea);return(0,t.jsx)(o.Presence,{present:n||i.hasThumb,children:(0,t.jsx)(H,{ref:r,...l})})},"ScrollAreaThumb")),H=r.forwardRef(v(function(e,o){let{__scopeScrollArea:l,style:a,...c}=e,s=E(M,l),u=_(M,l),{onThumbPositionChange:d}=u,f=(0,i.useComposedRefs)(o,u.onThumbChange),m=r.useRef(void 0),h=G(()=>{m.current&&(m.current(),m.current=void 0)},100);return r.useEffect(()=>{let e=s.viewport;if(e){let t=v(()=>{h(),m.current||(m.current=q(e,d),d())},"handleScroll");return d(),e.addEventListener("scroll",t),()=>e.removeEventListener("scroll",t)}},[s.viewport,h,d]),(0,t.jsx)(n.Primitive.div,{"data-state":u.hasThumb?"visible":"hidden",...c,ref:f,style:{width:"var(--radix-scroll-area-thumb-width)",height:"var(--radix-scroll-area-thumb-height)",...a},onPointerDownCapture:(0,p.composeEventHandlers)(e.onPointerDownCapture,e=>{let t=e.target.getBoundingClientRect(),r=e.clientX-t.left,n=e.clientY-t.top;u.onThumbPointerDown({x:r,y:n})}),onPointerUp:(0,p.composeEventHandlers)(e.onPointerUp,u.onThumbPointerUp)})},"ScrollAreaThumbImpl")),W="ScrollAreaCorner",k=r.forwardRef(v(function(e,r){let n=E(W,e.__scopeScrollArea),o=!!(n.scrollbarX&&n.scrollbarY);return"scroll"!==n.type&&o?(0,t.jsx)(z,{...e,ref:r}):null},"ScrollAreaCorner")),z=r.forwardRef(v(function(e,o){let{__scopeScrollArea:l,...i}=e,a=E(W,l),[c,s]=r.useState(0),[u,d]=r.useState(0),f=!!(c&&u),{onCornerWidthChange:p,onCornerHeightChange:m}=a;return J(a.scrollbarX,()=>{let e=a.scrollbarX?.offsetHeight||0;a.onCornerHeightChange(e),d(e)}),J(a.scrollbarY,()=>{let e=a.scrollbarY?.offsetWidth||0;a.onCornerWidthChange(e),s(e)}),r.useEffect(()=>()=>{p(0),m(0)},[p,m]),f?(0,t.jsx)(n.Primitive.div,{...i,ref:o,style:{width:c,height:u,position:"absolute",right:"ltr"===a.dir?0:void 0,left:"rtl"===a.dir?0:void 0,bottom:0,...e.style}}):null},"ScrollAreaCornerImpl"));function $(e){return e?parseInt(e,10):0}function F(e,t){let r=e/t;return isNaN(r)?0:r}function V(e){let t=F(e.viewport,e.content),r=e.scrollbar.paddingStart+e.scrollbar.paddingEnd;return Math.max((e.scrollbar.size-r)*t,18)}function X(e,t,r,n="ltr"){let o=V(r),l=t||o/2,i=r.scrollbar.paddingStart+l,a=r.scrollbar.size-r.scrollbar.paddingEnd-(o-l),c=r.content-r.viewport;return B([i,a],"ltr"===n?[0,c]:[-1*c,0])(e)}function Y(e,t,r="ltr"){let n=V(t),o=t.scrollbar.paddingStart+t.scrollbar.paddingEnd,l=t.scrollbar.size-o,i=t.content-t.viewport,a=f(e,"ltr"===r?[0,i]:[-1*i,0]);return B([0,i],[0,l-n])(a)}function B(e,t){return r=>{if(e[0]===e[1]||t[0]===t[1])return t[0];let n=(t[1]-t[0])/(e[1]-e[0]);return t[0]+n*(r-e[0])}}function K(e,t){return e>0&&e<t}v($,"toInt"),v(F,"getThumbRatio"),v(V,"getThumbSize"),v(X,"getScrollPositionFromPointer"),v(Y,"getThumbOffsetFromScroll"),v(B,"linearScale"),v(K,"isScrollingWithinScrollbarBounds");var q=v((e,t=()=>{})=>(e.scrollLeft,e.scrollTop,()=>window.cancelAnimationFrame(0)),"addUnlinkedScrollListener");function G(e,t){let n=(0,a.useCallbackRef)(e),o=r.useRef(0);return r.useEffect(()=>()=>window.clearTimeout(o.current),[]),r.useCallback(()=>{window.clearTimeout(o.current),o.current=window.setTimeout(n,t)},[n,t])}function J(e,t){let r=(0,a.useCallbackRef)(t);(0,d.useLayoutEffect)(()=>{let t=0;if(e){let n=new ResizeObserver(()=>{cancelAnimationFrame(t),t=window.requestAnimationFrame(r)});return n.observe(e),()=>{window.cancelAnimationFrame(t),n.unobserve(e)}}},[e,r])}v(G,"useDebounceCallback"),v(J,"useResizeObserver");var Q=e.i(975157);let Z=r.forwardRef(({className:e,children:r,...n},o)=>(0,t.jsxs)(C,{ref:o,className:(0,Q.cn)("relative overflow-hidden",e),...n,children:[(0,t.jsx)(y,{className:"h-full w-full rounded-[inherit]",children:r}),(0,t.jsx)(ee,{}),(0,t.jsx)(k,{})]}));Z.displayName=C.displayName;let ee=r.forwardRef(({className:e,orientation:r="vertical",...n},o)=>(0,t.jsx)(P,{ref:o,orientation:r,className:(0,Q.cn)("flex touch-none select-none transition-colors","vertical"===r&&"h-full w-2.5 border-l border-l-transparent p-px","horizontal"===r&&"h-2.5 flex-col border-t border-t-transparent p-px",e),...n,children:(0,t.jsx)(U,{className:"relative flex-1 rounded-full bg-border2"})}));ee.displayName=P.displayName,e.s(["ScrollArea",0,Z],759684)}]);
@@ -0,0 +1 @@
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,496385,e=>{"use strict";var t=e.i(83790);let s={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"]};s.node;let a=(0,t.default)(s);e.s(["AlertTriangle",0,a],496385)},960754,e=>{"use strict";var t=e.i(72345),s=e.i(180338),a=e.i(910172),n=e.i(155515),r=e.i(161863),l=e.i(765470),i=e.i(244267),d=e.i(782630),c=e.i(138324),o=e.i(956537),x=e.i(83790);let m={name:"link-2-off",size:24,node:[["path",{d:"M9 17H7A5 5 0 0 1 7 7",key:"10o201"}],["path",{d:"M15 7h2a5 5 0 0 1 4 8",key:"1d3206"}],["line",{x1:"8",x2:"12",y1:"12",y2:"12",key:"rvw6j4"}],["line",{x1:"2",x2:"22",y1:"2",y2:"22",key:"a6p6uj"}]]};m.node;let u=(0,x.default)(m);var h=e.i(763371),p=e.i(998822),f=e.i(34086),b=e.i(651581),g=e.i(975157),j=e.i(844081);let N="font-mono text-[10px] uppercase tracking-widest text-muted",v={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"};function k({attach:e}){let{board:a,rootParam:n}=(0,h.useApp)(),[r,l]=(0,s.useState)([]),[i,d]=(0,s.useState)(0);(0,s.useEffect)(()=>{let e=!1;return fetch(`/api/roadmap${n}`).then(e=>e.ok?e.json():{items:[]}).then(t=>{e||l(t.items??[])}).catch(e=>console.warn("[vibedoc] could not load roadmap for the chat rail:",e)),()=>{e=!0}},[n,i]),(0,s.useEffect)(()=>{let e=e=>{let t=e.detail?.type;("roadmap_updated"===t||"task_created"===t)&&d(e=>e+1)};return window.addEventListener("vibedoc:sse",e),()=>window.removeEventListener("vibedoc:sse",e)},[]);let c=(0,s.useMemo)(()=>Object.fromEntries((a?Object.values(a).flat():[]).map(e=>[e.id,e])),[a]);return(0,t.jsx)("div",{className:"flex h-full min-h-0 flex-col overflow-y-auto",children:(0,t.jsxs)("div",{className:"flex flex-col gap-5 p-5 animate-fade-in",children:[!e&&(0,t.jsx)(y,{}),e?.kind==="epic"&&(0,t.jsx)(w,{item:r.find(t=>t.id===e.id),id:e.id,tasksById:c}),e?.kind==="task"&&(0,t.jsx)(S,{task:c[e.id],id:e.id,items:r})]},e?`${e.kind}:${e.id}`:"none")})}function y(){return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("p",{className:N,children:"Context"}),(0,t.jsxs)("div",{className:"flex flex-col items-start gap-3 rounded-lg border border-dashed border-border2 p-4",children:[(0,t.jsx)(u,{className:"size-4 text-muted"}),(0,t.jsx)("p",{className:"text-sm text-txt",children:"Not linked to an epic or task"}),(0,t.jsx)("p",{className:"text-xs leading-relaxed text-muted",children:"Open a chat from an epic on the roadmap or a task on the board, and the agent starts with that item as context. Its status then shows on the item."})]}),(0,t.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,t.jsx)("p",{className:N,children:"The agent can"}),(0,t.jsxs)("ul",{className:"flex flex-col gap-1.5 text-xs text-muted",children:[(0,t.jsx)("li",{children:"Read docs, tasks, the roadmap and memory"}),(0,t.jsx)("li",{children:"Propose doc and task edits (you review a diff)"}),(0,t.jsx)("li",{children:"Propose epics and task breakdowns (you accept)"}),(0,t.jsx)("li",{className:"text-muted/70",children:"It can't run code or edit source files"})]})]})]})}function w({item:e,id:s,tasksById:a}){if(!e)return(0,t.jsx)(A,{kind:"Epic",id:s});let n=e.tasks.map(e=>a[e]).filter(e=>!!e),r=n.map(e=>e.status).filter(e=>"cancelled"!==e),l=r.filter(e=>"done"===e).length;return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,t.jsxs)("p",{className:N,children:["Epic · ",e.id]}),(0,t.jsx)("h3",{className:"text-base font-semibold leading-snug text-txt",children:e.title}),(0,t.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,t.jsx)(b.StatusPill,{status:e.status}),e.due&&(0,t.jsxs)("span",{className:"font-mono text-[10px] text-muted",children:["due ",e.due]})]})]}),r.length>0&&(0,t.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,t.jsxs)("div",{className:"flex items-baseline justify-between",children:[(0,t.jsx)("p",{className:N,children:"Progress"}),(0,t.jsxs)("span",{className:"font-mono text-[10px] text-muted",children:[l,"/",r.length," tasks"]})]}),(0,t.jsx)(b.SegmentedProgress,{statuses:r})]}),n.length>0&&(0,t.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,t.jsx)("p",{className:N,children:"Tasks"}),(0,t.jsx)("ul",{className:"-mx-2 flex flex-col",children:n.map(e=>(0,t.jsx)(C,{task:e},e.id))})]}),e.body.trim()&&(0,t.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,t.jsx)("p",{className:N,children:"Brief"}),(0,t.jsx)(p.MarkdownRenderer,{content:e.body,className:"prose-compact"})]}),(0,t.jsx)(T,{attach:{kind:"epic",id:e.id},label:"Open in roadmap"})]})}function C({task:e}){let{showAbout:s}=(0,i.useChats)();return(0,t.jsx)("li",{children:(0,t.jsxs)("button",{type:"button",onClick:()=>s({kind:"task",id:e.id}),title:`Chat about ${e.id}`,className:"flex w-full items-center gap-2 rounded-md px-2 py-1.5 text-left text-xs transition-colors duration-(--duration-fast) hover:bg-surface2",children:[(0,t.jsx)("span",{"aria-hidden":!0,children:f.STATUS_ICONS[e.status]}),(0,t.jsx)("span",{className:"shrink-0 font-mono text-[10px] text-muted",children:e.id}),(0,t.jsx)("span",{className:(0,g.cn)("min-w-0 flex-1 truncate","done"===e.status?"text-muted":"text-txt"),children:e.title})]})})}function S({task:e,id:s,items:a}){let{showAbout:n}=(0,i.useChats)();if(!e)return(0,t.jsx)(A,{kind:"Task",id:s});let r=e.phase.match(/^R\d+/)?.[0],l=r?a.find(e=>e.id===r):void 0,d=e.raw?.replace(/^#.*\n(\*\*[^*]+:\*\*.*\n)*/,"").trim();return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,t.jsxs)("p",{className:N,children:["Task · ",e.id]}),(0,t.jsx)("h3",{className:"text-base font-semibold leading-snug text-txt",children:e.title}),(0,t.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,t.jsxs)("span",{className:(0,g.cn)("rounded-sm border px-1.5 py-0.5 font-mono text-[10px]",v[e.status]),children:[f.STATUS_ICONS[e.status]," ",e.status]}),e.size&&(0,t.jsx)("span",{className:"font-mono text-[10px] text-muted",children:e.size}),e.due&&(0,t.jsxs)("span",{className:"font-mono text-[10px] text-muted",children:["due ",e.due]})]})]}),(0,t.jsxs)("dl",{className:"grid grid-cols-[auto_1fr] gap-x-3 gap-y-1.5 text-xs",children:[r&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("dt",{className:"text-muted",children:"Epic"}),(0,t.jsx)("dd",{className:"min-w-0",children:(0,t.jsxs)("button",{type:"button",onClick:()=>n({kind:"epic",id:r}),className:"truncate text-left text-txt hover:text-accent",title:`Chat about ${r}`,children:[(0,t.jsx)("span",{className:"font-mono text-[10px] text-muted",children:r})," ",l?.title??e.phase.replace(/^R\d+\s*—\s*/,"")]})})]}),e.dependsOn&&"—"!==e.dependsOn&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("dt",{className:"text-muted",children:"Depends on"}),(0,t.jsx)("dd",{className:"font-mono text-[11px] text-txt",children:e.dependsOn})]})]}),d&&(0,t.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,t.jsx)("p",{className:N,children:"Spec"}),(0,t.jsx)(p.MarkdownRenderer,{content:d,className:"prose-compact"})]}),(0,t.jsx)(T,{attach:{kind:"task",id:e.id},label:"Open on board"})]})}function A({kind:e,id:s}){return(0,t.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,t.jsxs)("p",{className:N,children:[e," · ",s]}),(0,t.jsxs)("p",{className:"text-sm text-muted",children:[e," ",s," isn't in this project any more."]})]})}function T({attach:e,label:s}){return(0,t.jsxs)(c.default,{href:(0,j.attachHref)(e),className:"group inline-flex w-fit items-center gap-1.5 rounded-md border border-border px-3 py-1.5 text-xs text-txt transition-colors duration-(--duration-fast) hover:border-accent/50 hover:text-accent",children:[s,(0,t.jsx)(o.ArrowUpRight,{className:"size-3.5 transition-transform duration-(--duration-fast) group-hover:-translate-y-px group-hover:translate-x-px"})]})}var z=e.i(481523);let I=e=>{let t=setInterval(e,3e4);return()=>clearInterval(t)},O=()=>6e4*Math.floor(Date.now()/6e4);function R(){let{chats:e,loaded:s,create:n,show:r,send:l}=(0,i.useChats)(),c=(0,a.useRouter)(),o=(0,a.useSearchParams)().get("id"),x=e.find(e=>e.id===o)??(o?void 0:(0,z.defaultChat)(e));function m(e){let t=n();r(t),e&&l(t,e)}return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(_,{selectedId:x?.id??null,onNew:()=>m()}),(0,t.jsx)("section",{className:"flex min-w-0 flex-1 flex-col border-r border-border bg-bg",children:x?(0,t.jsx)("div",{className:"flex min-h-0 flex-1 flex-col animate-fade-in",children:(0,t.jsx)(d.ChatView,{chatId:x.id,variant:"page"})},x.id):s?(0,t.jsx)(P,{missing:!!o,onStart:m,onBack:()=>c.replace("/chat")}):null}),(0,t.jsx)("aside",{className:"hidden w-80 shrink-0 bg-surface xl:block","aria-label":"Chat context",children:(0,t.jsx)(k,{attach:x?.attach??null})})]})}function _({selectedId:e,onNew:a}){let{chats:l}=(0,i.useChats)(),[d,c]=(0,s.useState)(""),o=d.trim().toLowerCase(),x=o?l.filter(e=>e.title.toLowerCase().includes(o)||e.attach?.id.toLowerCase().includes(o)):l,m=(0,z.groupChats)(x),u=[{label:"Needs you",items:m.needsYou,tone:"text-amber"},{label:"Running",items:m.running,tone:"text-accent"},{label:"Recent",items:m.recent,tone:"text-muted"}];return(0,t.jsxs)("aside",{className:"hidden w-72 shrink-0 flex-col border-r border-border bg-surface md:flex","aria-label":"All chats",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2 px-4 pb-3 pt-4",children:[(0,t.jsx)("h1",{className:"flex-1 text-sm font-semibold text-txt",children:"Agents"}),(0,t.jsxs)("button",{type:"button",onClick:a,className:"inline-flex items-center gap-1.5 rounded-md bg-accent px-2.5 py-1.5 text-xs font-medium text-white transition-[filter,transform] duration-(--duration-fast) hover:brightness-110 active:scale-[0.97]",children:[(0,t.jsx)(n.Plus,{className:"size-3.5"})," New chat"]})]}),l.length>3&&(0,t.jsxs)("label",{className:"mx-3 mb-2 flex items-center gap-2 rounded-md border border-border bg-bg px-2.5 py-1.5 text-xs focus-within:border-accent/50",children:[(0,t.jsx)(r.Search,{className:"size-3.5 text-muted"}),(0,t.jsx)("input",{value:d,onChange:e=>c(e.target.value),placeholder:"Filter by title or R/T id",className:"min-w-0 flex-1 bg-transparent text-txt placeholder:text-muted focus:outline-hidden"})]}),(0,t.jsxs)("div",{className:"min-h-0 flex-1 overflow-y-auto px-2 pb-4",children:[0===l.length&&(0,t.jsx)("p",{className:"px-2 py-6 text-xs text-muted",children:"No chats yet."}),u.map(s=>s.items.length>0&&(0,t.jsxs)("div",{className:"mt-3 first:mt-1",children:[(0,t.jsxs)("p",{className:(0,g.cn)("px-2 pb-1 font-mono text-[10px] uppercase tracking-widest",s.tone),children:[s.label," · ",s.items.length]}),(0,t.jsx)("ul",{className:"flex flex-col gap-px",children:s.items.map(s=>(0,t.jsx)(E,{chat:s,active:s.id===e},s.id))})]},s.label)),o&&0===x.length&&(0,t.jsxs)("p",{className:"px-2 py-6 text-xs text-muted",children:["No chat matches “",d,"”."]})]})]})}function E({chat:e,active:a}){let{show:n,remove:r}=(0,i.useChats)(),d=(0,s.useSyncExternalStore)(I,O,()=>0),c=(0,z.chatStatus)(e),o=[...e.messages].reverse().find(e=>e.text)?.text.replace(/\s+/g," ").trim();return(0,t.jsxs)("li",{className:"group relative animate-slide-in",children:[(0,t.jsxs)("button",{type:"button",onClick:()=>n(e.id),"aria-current":a?"true":void 0,className:(0,g.cn)("flex w-full flex-col gap-1 rounded-lg px-2.5 py-2 text-left transition-colors duration-(--duration-fast)",a?"bg-surface2 shadow-[inset_2px_0_0_rgb(var(--rgb-accent))]":"hover:bg-surface2/60"),children:[(0,t.jsxs)("span",{className:"flex items-center gap-2 pr-5",children:[(0,t.jsx)(j.StatusMarker,{status:c,showIdle:!0}),(0,t.jsx)("span",{className:(0,g.cn)("min-w-0 flex-1 truncate text-[13px]","idle"!==c||a?"text-txt":"text-txt/80"),children:e.title}),d>0&&(0,t.jsx)("span",{className:"shrink-0 font-mono text-[10px] text-muted group-hover:opacity-0",children:(0,z.ago)(e.updatedAt,d)})]}),(e.attach||o)&&(0,t.jsxs)("span",{className:"flex items-center gap-2 pl-5 text-[11px] text-muted",children:[e.attach&&(0,t.jsx)(j.AttachLabel,{attach:e.attach,className:"shrink-0"}),o&&(0,t.jsx)("span",{className:"min-w-0 truncate",children:o})]})]}),(0,t.jsx)("button",{type:"button",onClick:()=>r(e.id),"aria-label":`Close ${e.title}`,title:e.busy?"Stop and delete chat":"Delete chat",className:"absolute right-1.5 top-1.5 grid size-6 place-items-center rounded-md text-muted opacity-0 transition-opacity duration-(--duration-fast) hover:bg-surface hover:text-danger focus-visible:opacity-100 group-hover:opacity-100",children:(0,t.jsx)(l.X,{className:"size-3.5"})})]})}function P({missing:e,onStart:s,onBack:a}){return(0,t.jsx)("div",{className:"grid flex-1 place-items-center p-8",children:(0,t.jsxs)("div",{className:"flex max-w-md flex-col items-start gap-4 animate-fade-in",children:[(0,t.jsx)("div",{className:"grid size-10 place-items-center rounded-xl bg-linear-to-br from-accent to-teal text-white","aria-hidden":!0,children:"⬡"}),e?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("h2",{className:"text-lg font-semibold text-txt",children:"This chat was deleted"}),(0,t.jsx)("button",{type:"button",onClick:a,className:"text-sm text-accent hover:underline",children:"Back to all chats"})]}):(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("h2",{className:"text-lg font-semibold text-txt",children:"Run agents side by side"}),(0,t.jsx)("p",{className:"mt-1 text-sm text-muted",children:"Each chat is its own Claude Code session, up to 4 at once. Start one here, or from an epic on the roadmap or a task on the board."})]}),(0,t.jsx)("div",{className:"flex flex-col gap-1.5",children:(0,z.suggestions)(null).map(e=>(0,t.jsx)("button",{type:"button",onClick:()=>s(e),className:"rounded-lg border border-border px-3 py-2 text-left text-sm text-txt/90 transition-colors hover:border-accent/50 hover:bg-accent/5",children:e},e))})]})]})})}e.s(["default",0,function(){return(0,t.jsx)("div",{className:"flex h-[calc(100svh-3rem)] min-h-0",children:(0,t.jsx)(s.Suspense,{children:(0,t.jsx)(R,{})})})}],960754)},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),l=e.i(723528);let i={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"},c={todo:"📋","in-progress":"🔨",blocked:"🚫",done:"✅",cancelled:"❌"},o={todo:["in-progress"],"in-progress":["done","blocked","todo"],blocked:["in-progress","cancelled"],done:["todo"],cancelled:["todo"]};e.s(["STATUS_ICONS",0,c,"TaskCard",0,function({task:e,onMove:x,onOpen:m}){let[u,h]=(0,s.useState)(!1),p=o[e.status]||[];return(0,t.jsxs)("div",{draggable:!0,onDragStart:t=>{t.dataTransfer.setData("taskId",e.id),t.dataTransfer.effectAllowed="move",h(!0)},onDragEnd:()=>h(!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",i[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)(l.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",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)(r.Button,{variant:"ghost",size:"sm",className:"h-6 text-xs px-2",onClick:m,children:"open"}),p.map(s=>(0,t.jsxs)(r.Button,{variant:"ghost",size:"sm",className:"h-6 text-xs px-2",onClick:()=>x(e.id,s),children:[c[s]," ","in-progress"===s?"start":s]},s))]})]})}])},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 l={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 i=l[s.status];return(0,t.jsx)("span",{title:i,"aria-label":i,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:i}){let d=(0,r.useItemAgent)(e),{show:c}=(0,r.useChats)();if(!d)return null;let o=l[d.status];return(0,t.jsxs)("button",{type:"button",onClick:e=>{e.stopPropagation(),c(d.chatId)},title:`${o} \xb7 open chat`,"aria-label":`${o}, 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"===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",i),children:["running"===d.status?(0,t.jsx)(a.Loader2,{className:"size-3 animate-spin"}):(0,t.jsx)(s.Bot,{className:"size-3"}),o]})}])}]);