vibedoc 1.7.0 → 1.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (638) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-path-routes-manifest.json +9 -0
  3. package/.next/build-manifest.json +3 -3
  4. package/.next/prerender-manifest.json +42 -14
  5. package/.next/routes-manifest.json +54 -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.js.nft.json +1 -1
  11. package/.next/server/app/(app)/chat/page_client-reference-manifest.js +1 -1
  12. package/.next/server/app/(app)/docs/page.js.nft.json +1 -1
  13. package/.next/server/app/(app)/docs/page_client-reference-manifest.js +1 -1
  14. package/.next/server/app/(app)/explorer/page.js.nft.json +1 -1
  15. package/.next/server/app/(app)/explorer/page_client-reference-manifest.js +1 -1
  16. package/.next/server/app/(app)/manual-tests/page/app-paths-manifest.json +3 -0
  17. package/.next/server/app/(app)/manual-tests/page/build-manifest.json +20 -0
  18. package/.next/server/app/(app)/manual-tests/page/next-font-manifest.json +11 -0
  19. package/.next/server/app/(app)/manual-tests/page/react-loadable-manifest.json +1 -0
  20. package/.next/server/app/(app)/manual-tests/page/server-reference-manifest.json +4 -0
  21. package/.next/server/app/(app)/manual-tests/page.js +15 -0
  22. package/.next/server/app/(app)/manual-tests/page.js.map +5 -0
  23. package/.next/server/app/(app)/manual-tests/page.js.nft.json +1 -0
  24. package/.next/server/app/(app)/manual-tests/page_client-reference-manifest.js +3 -0
  25. package/.next/server/app/(app)/memory/page.js.nft.json +1 -1
  26. package/.next/server/app/(app)/memory/page_client-reference-manifest.js +1 -1
  27. package/.next/server/app/(app)/roadmap/page.js.nft.json +1 -1
  28. package/.next/server/app/(app)/roadmap/page_client-reference-manifest.js +1 -1
  29. package/.next/server/app/(app)/settings/page.js.nft.json +1 -1
  30. package/.next/server/app/(app)/settings/page_client-reference-manifest.js +1 -1
  31. package/.next/server/app/(app)/setup/page.js.nft.json +1 -1
  32. package/.next/server/app/(app)/setup/page_client-reference-manifest.js +1 -1
  33. package/.next/server/app/_global-error.html +1 -1
  34. package/.next/server/app/_global-error.rsc +1 -1
  35. package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  36. package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  37. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  38. package/.next/server/app/_not-found/page.js.nft.json +1 -1
  39. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  40. package/.next/server/app/_not-found.html +1 -1
  41. package/.next/server/app/_not-found.rsc +3 -2
  42. package/.next/server/app/_not-found.segments/_full.segment.rsc +3 -2
  43. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +3 -2
  44. package/.next/server/app/_not-found.segments/_tree.segment.rsc +3 -2
  45. package/.next/server/app/activity.html +1 -1
  46. package/.next/server/app/activity.rsc +20 -18
  47. package/.next/server/app/activity.segments/!KGFwcCk/activity/__PAGE__.segment.rsc +7 -6
  48. package/.next/server/app/activity.segments/_full.segment.rsc +20 -18
  49. package/.next/server/app/activity.segments/_tree.segment.rsc +3 -2
  50. package/.next/server/app/api/activity/route.js +2 -2
  51. package/.next/server/app/api/activity/route.js.nft.json +1 -1
  52. package/.next/server/app/api/backlinks/route.js +2 -2
  53. package/.next/server/app/api/backlinks/route.js.nft.json +1 -1
  54. package/.next/server/app/api/chat/route.js +1 -1
  55. package/.next/server/app/api/chat/route.js.nft.json +1 -1
  56. package/.next/server/app/api/context/route.js +2 -2
  57. package/.next/server/app/api/context/route.js.nft.json +1 -1
  58. package/.next/server/app/api/conversations/route.js +2 -2
  59. package/.next/server/app/api/conversations/route.js.nft.json +1 -1
  60. package/.next/server/app/api/decisions/route.js +2 -2
  61. package/.next/server/app/api/decisions/route.js.nft.json +1 -1
  62. package/.next/server/app/api/docs/route.js +1 -1
  63. package/.next/server/app/api/docs/route.js.nft.json +1 -1
  64. package/.next/server/app/api/explorer/route.js +2 -2
  65. package/.next/server/app/api/explorer/route.js.nft.json +1 -1
  66. package/.next/server/app/api/mcp/route.js +1 -1
  67. package/.next/server/app/api/mcp/route.js.nft.json +1 -1
  68. package/.next/server/app/api/memory/route.js +2 -2
  69. package/.next/server/app/api/memory/route.js.nft.json +1 -1
  70. package/.next/server/app/api/plan/apply/route.js +3 -3
  71. package/.next/server/app/api/plan/apply/route.js.nft.json +1 -1
  72. package/.next/server/app/api/projects/route.js +2 -2
  73. package/.next/server/app/api/projects/route.js.nft.json +1 -1
  74. package/.next/server/app/api/registry/route.js +2 -2
  75. package/.next/server/app/api/registry/route.js.nft.json +1 -1
  76. package/.next/server/app/api/roadmap/create/route.js +3 -3
  77. package/.next/server/app/api/roadmap/create/route.js.nft.json +1 -1
  78. package/.next/server/app/api/roadmap/delete/route.js +3 -3
  79. package/.next/server/app/api/roadmap/delete/route.js.nft.json +1 -1
  80. package/.next/server/app/api/roadmap/generate/route.js +3 -3
  81. package/.next/server/app/api/roadmap/generate/route.js.nft.json +1 -1
  82. package/.next/server/app/api/roadmap/layout/route.js +3 -3
  83. package/.next/server/app/api/roadmap/layout/route.js.nft.json +1 -1
  84. package/.next/server/app/api/roadmap/restore/route/app-paths-manifest.json +3 -0
  85. package/.next/server/app/api/roadmap/restore/route/build-manifest.json +12 -0
  86. package/.next/server/app/api/roadmap/restore/route/server-reference-manifest.json +4 -0
  87. package/.next/server/app/api/roadmap/restore/route.js +9 -0
  88. package/.next/server/app/api/roadmap/restore/route.js.map +5 -0
  89. package/.next/server/app/api/roadmap/restore/route.js.nft.json +1 -0
  90. package/.next/server/app/api/roadmap/restore/route_client-reference-manifest.js +3 -0
  91. package/.next/server/app/api/roadmap/route.js +3 -3
  92. package/.next/server/app/api/roadmap/route.js.nft.json +1 -1
  93. package/.next/server/app/api/roadmap/update/route.js +3 -3
  94. package/.next/server/app/api/roadmap/update/route.js.nft.json +1 -1
  95. package/.next/server/app/api/sessions/route.js +2 -2
  96. package/.next/server/app/api/sessions/route.js.nft.json +1 -1
  97. package/.next/server/app/api/settings/route.js +3 -3
  98. package/.next/server/app/api/settings/route.js.nft.json +1 -1
  99. package/.next/server/app/api/setup/generate/route.js +1 -1
  100. package/.next/server/app/api/setup/generate/route.js.nft.json +1 -1
  101. package/.next/server/app/api/setup/write/route.js +2 -2
  102. package/.next/server/app/api/setup/write/route.js.nft.json +1 -1
  103. package/.next/server/app/api/summary/route.js +2 -2
  104. package/.next/server/app/api/summary/route.js.nft.json +1 -1
  105. package/.next/server/app/api/tasks/bulk/route/app-paths-manifest.json +3 -0
  106. package/.next/server/app/api/tasks/bulk/route/build-manifest.json +12 -0
  107. package/.next/server/app/api/tasks/bulk/route/server-reference-manifest.json +4 -0
  108. package/.next/server/app/api/tasks/bulk/route.js +9 -0
  109. package/.next/server/app/api/tasks/bulk/route.js.map +5 -0
  110. package/.next/server/app/api/tasks/bulk/route.js.nft.json +1 -0
  111. package/.next/server/app/api/tasks/bulk/route_client-reference-manifest.js +3 -0
  112. package/.next/server/app/api/tasks/create/route.js +2 -2
  113. package/.next/server/app/api/tasks/create/route.js.nft.json +1 -1
  114. package/.next/server/app/api/tasks/delete/route/app-paths-manifest.json +3 -0
  115. package/.next/server/app/api/tasks/delete/route/build-manifest.json +12 -0
  116. package/.next/server/app/api/tasks/delete/route/server-reference-manifest.json +4 -0
  117. package/.next/server/app/api/tasks/delete/route.js +9 -0
  118. package/.next/server/app/api/tasks/delete/route.js.map +5 -0
  119. package/.next/server/app/api/tasks/delete/route.js.nft.json +1 -0
  120. package/.next/server/app/api/tasks/delete/route_client-reference-manifest.js +3 -0
  121. package/.next/server/app/api/tasks/manual-tests/route/app-paths-manifest.json +3 -0
  122. package/.next/server/app/api/tasks/manual-tests/route/build-manifest.json +12 -0
  123. package/.next/server/app/api/tasks/manual-tests/route/server-reference-manifest.json +4 -0
  124. package/.next/server/app/api/tasks/manual-tests/route.js +8 -0
  125. package/.next/server/app/api/tasks/manual-tests/route.js.map +5 -0
  126. package/.next/server/app/api/tasks/manual-tests/route.js.nft.json +1 -0
  127. package/.next/server/app/api/tasks/manual-tests/route_client-reference-manifest.js +3 -0
  128. package/.next/server/app/api/tasks/restore/route/app-paths-manifest.json +3 -0
  129. package/.next/server/app/api/tasks/restore/route/build-manifest.json +12 -0
  130. package/.next/server/app/api/tasks/restore/route/server-reference-manifest.json +4 -0
  131. package/.next/server/app/api/tasks/restore/route.js +9 -0
  132. package/.next/server/app/api/tasks/restore/route.js.map +5 -0
  133. package/.next/server/app/api/tasks/restore/route.js.nft.json +1 -0
  134. package/.next/server/app/api/tasks/restore/route_client-reference-manifest.js +3 -0
  135. package/.next/server/app/api/tasks/review/route/app-paths-manifest.json +3 -0
  136. package/.next/server/app/api/tasks/review/route/build-manifest.json +12 -0
  137. package/.next/server/app/api/tasks/review/route/server-reference-manifest.json +4 -0
  138. package/.next/server/app/api/tasks/review/route.js +9 -0
  139. package/.next/server/app/api/tasks/review/route.js.map +5 -0
  140. package/.next/server/app/api/tasks/review/route.js.nft.json +1 -0
  141. package/.next/server/app/api/tasks/review/route_client-reference-manifest.js +3 -0
  142. package/.next/server/app/api/tasks/route.js +2 -2
  143. package/.next/server/app/api/tasks/route.js.nft.json +1 -1
  144. package/.next/server/app/api/tasks/update/route/app-paths-manifest.json +3 -0
  145. package/.next/server/app/api/tasks/update/route/build-manifest.json +12 -0
  146. package/.next/server/app/api/tasks/update/route/server-reference-manifest.json +4 -0
  147. package/.next/server/app/api/tasks/update/route.js +9 -0
  148. package/.next/server/app/api/tasks/update/route.js.map +5 -0
  149. package/.next/server/app/api/tasks/update/route.js.nft.json +1 -0
  150. package/.next/server/app/api/tasks/update/route_client-reference-manifest.js +3 -0
  151. package/.next/server/app/api/views/route/app-paths-manifest.json +3 -0
  152. package/.next/server/app/api/views/route/build-manifest.json +12 -0
  153. package/.next/server/app/api/views/route/server-reference-manifest.json +4 -0
  154. package/.next/server/app/api/views/route.js +9 -0
  155. package/.next/server/app/api/views/route.js.map +5 -0
  156. package/.next/server/app/api/views/route.js.nft.json +1 -0
  157. package/.next/server/app/api/views/route_client-reference-manifest.js +3 -0
  158. package/.next/server/app/board.html +1 -1
  159. package/.next/server/app/board.rsc +20 -18
  160. package/.next/server/app/board.segments/!KGFwcCk/board/__PAGE__.segment.rsc +7 -6
  161. package/.next/server/app/board.segments/_full.segment.rsc +20 -18
  162. package/.next/server/app/board.segments/_tree.segment.rsc +3 -2
  163. package/.next/server/app/chat.html +1 -1
  164. package/.next/server/app/chat.rsc +20 -18
  165. package/.next/server/app/chat.segments/!KGFwcCk/chat/__PAGE__.segment.rsc +12 -9
  166. package/.next/server/app/chat.segments/_full.segment.rsc +20 -18
  167. package/.next/server/app/chat.segments/_tree.segment.rsc +3 -2
  168. package/.next/server/app/docs.html +1 -1
  169. package/.next/server/app/docs.rsc +20 -18
  170. package/.next/server/app/docs.segments/!KGFwcCk/docs/__PAGE__.segment.rsc +6 -5
  171. package/.next/server/app/docs.segments/_full.segment.rsc +20 -18
  172. package/.next/server/app/docs.segments/_tree.segment.rsc +3 -2
  173. package/.next/server/app/explorer.html +1 -1
  174. package/.next/server/app/explorer.rsc +20 -18
  175. package/.next/server/app/explorer.segments/!KGFwcCk/explorer/__PAGE__.segment.rsc +11 -9
  176. package/.next/server/app/explorer.segments/_full.segment.rsc +20 -18
  177. package/.next/server/app/explorer.segments/_tree.segment.rsc +3 -2
  178. package/.next/server/app/index.html +1 -1
  179. package/.next/server/app/index.rsc +3 -2
  180. package/.next/server/app/index.segments/__PAGE__.segment.rsc +3 -2
  181. package/.next/server/app/index.segments/_full.segment.rsc +3 -2
  182. package/.next/server/app/index.segments/_tree.segment.rsc +3 -2
  183. package/.next/server/app/manual-tests.html +1 -0
  184. package/.next/server/app/manual-tests.meta +31 -0
  185. package/.next/server/app/manual-tests.rsc +31 -0
  186. package/.next/server/app/manual-tests.segments/!KGFwcCk/manual-tests/__PAGE__.segment.rsc +33 -0
  187. package/.next/server/app/manual-tests.segments/_full.segment.rsc +31 -0
  188. package/.next/server/app/manual-tests.segments/_tree.segment.rsc +5 -0
  189. package/.next/server/app/memory.html +1 -1
  190. package/.next/server/app/memory.rsc +20 -18
  191. package/.next/server/app/memory.segments/!KGFwcCk/memory/__PAGE__.segment.rsc +11 -9
  192. package/.next/server/app/memory.segments/_full.segment.rsc +20 -18
  193. package/.next/server/app/memory.segments/_tree.segment.rsc +3 -2
  194. package/.next/server/app/page.js.nft.json +1 -1
  195. package/.next/server/app/page_client-reference-manifest.js +1 -1
  196. package/.next/server/app/roadmap.html +1 -1
  197. package/.next/server/app/roadmap.rsc +20 -18
  198. package/.next/server/app/roadmap.segments/!KGFwcCk/roadmap/__PAGE__.segment.rsc +6 -5
  199. package/.next/server/app/roadmap.segments/_full.segment.rsc +20 -18
  200. package/.next/server/app/roadmap.segments/_tree.segment.rsc +3 -2
  201. package/.next/server/app/settings.html +1 -1
  202. package/.next/server/app/settings.rsc +20 -18
  203. package/.next/server/app/settings.segments/!KGFwcCk/settings/__PAGE__.segment.rsc +7 -6
  204. package/.next/server/app/settings.segments/_full.segment.rsc +20 -18
  205. package/.next/server/app/settings.segments/_tree.segment.rsc +3 -2
  206. package/.next/server/app/setup.html +1 -1
  207. package/.next/server/app/setup.rsc +20 -18
  208. package/.next/server/app/setup.segments/!KGFwcCk/setup/__PAGE__.segment.rsc +11 -9
  209. package/.next/server/app/setup.segments/_full.segment.rsc +20 -18
  210. package/.next/server/app/setup.segments/_tree.segment.rsc +3 -2
  211. package/.next/server/app-paths-manifest.json +9 -0
  212. package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0-5bkpj._.js → 11mp_@anthropic-ai_sdk_00p3fu1._.js} +1 -1
  213. package/.next/server/chunks/{11mp_@anthropic-ai_sdk_01l5h3i._.js → 11mp_@anthropic-ai_sdk_01amtux._.js} +1 -1
  214. package/.next/server/chunks/{11mp_@anthropic-ai_sdk_00psb_y._.js → 11mp_@anthropic-ai_sdk_01jjl08._.js} +1 -1
  215. package/.next/server/chunks/{11mp_@anthropic-ai_sdk_072r2bd._.js → 11mp_@anthropic-ai_sdk_071zfm8._.js} +1 -1
  216. package/.next/server/chunks/11mp_@anthropic-ai_sdk_07v3boe._.js +3 -0
  217. package/.next/server/chunks/11mp_@anthropic-ai_sdk_09iva72._.js +3 -0
  218. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0bom1b1._.js +3 -0
  219. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0dvji7p._.js +3 -0
  220. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0dzo8jn._.js +3 -0
  221. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0hvqsqq._.js +3 -0
  222. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0i7i-jw._.js +3 -0
  223. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0k0iop5._.js +3 -0
  224. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0l3-6aq._.js +3 -0
  225. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0oegm3y._.js +3 -0
  226. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0p5cyes._.js +3 -0
  227. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0qw8i6_._.js +3 -0
  228. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0yk-a7v._.js +3 -0
  229. package/.next/server/chunks/11mp_@anthropic-ai_sdk_11fsqvb._.js +3 -0
  230. package/.next/server/chunks/11mp_@anthropic-ai_sdk_143_7ez._.js +3 -0
  231. package/.next/server/chunks/11mp_@anthropic-ai_sdk_14a4-64._.js +3 -0
  232. package/.next/server/chunks/11mp_@anthropic-ai_sdk_17d_oma._.js +3 -0
  233. package/.next/server/chunks/11mp_@anthropic-ai_sdk_18qwuyb._.js +3 -0
  234. package/.next/server/chunks/11mp_@anthropic-ai_sdk_19au8y6._.js +3 -0
  235. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1ak_hy5._.js +3 -0
  236. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1cqa0nq._.js +3 -0
  237. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1i-x_q0._.js +3 -0
  238. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1jmtliz._.js +3 -0
  239. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1jmtliz._.js.map +1 -0
  240. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1jouwlj._.js +3 -0
  241. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1jouwlj._.js.map +1 -0
  242. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1r_q5um._.js +3 -0
  243. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1r_q5um._.js.map +1 -0
  244. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1t959xd._.js +3 -0
  245. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1t959xd._.js.map +1 -0
  246. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1vkprw9._.js +3 -0
  247. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1vkprw9._.js.map +1 -0
  248. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1y95ax9._.js +3 -0
  249. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1y95ax9._.js.map +1 -0
  250. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1y9misr._.js +3 -0
  251. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1y9misr._.js.map +1 -0
  252. package/.next/server/chunks/11mp_@anthropic-ai_sdk_21b8wwy._.js +3 -0
  253. package/.next/server/chunks/11mp_@anthropic-ai_sdk_21b8wwy._.js.map +1 -0
  254. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_08ecfgc._.js +3 -0
  255. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_09--sd6._.js +3 -0
  256. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_0e3mwc6._.js +3 -0
  257. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_0go4301._.js +3 -0
  258. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_0iq9dmt._.js +3 -0
  259. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_0n9ijke._.js +3 -0
  260. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_0szcyrx._.js +3 -0
  261. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_0xy2s3x._.js +3 -0
  262. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_0yaujn7._.js +3 -0
  263. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_0z9ly74._.js +3 -0
  264. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1hmq3al._.js +3 -0
  265. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1tqk4bp._.js +3 -0
  266. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1x-hr6f._.js +3 -0
  267. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1zsdhg0._.js +3 -0
  268. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_20t__fe._.js +3 -0
  269. package/.next/server/chunks/{[root-of-the-server]__1u_q61h._.js → [root-of-the-server]__0-pmfg2._.js} +2 -2
  270. package/.next/server/chunks/[root-of-the-server]__02co2yq._.js +3 -0
  271. package/.next/server/chunks/[root-of-the-server]__02co2yq._.js.map +1 -0
  272. package/.next/server/chunks/{[root-of-the-server]__1y3u5ud._.js → [root-of-the-server]__04tibmn._.js} +2 -2
  273. package/.next/server/chunks/{[root-of-the-server]__17xb02p._.js → [root-of-the-server]__05g5cgo._.js} +2 -2
  274. package/.next/server/chunks/{[root-of-the-server]__0aynzrb._.js → [root-of-the-server]__0b5pwze._.js} +2 -2
  275. package/.next/server/chunks/{[root-of-the-server]__142icjb._.js → [root-of-the-server]__0druay_._.js} +2 -2
  276. package/.next/server/chunks/{[root-of-the-server]__106gpvh._.js → [root-of-the-server]__0p6ja6l._.js} +2 -2
  277. package/.next/server/chunks/[root-of-the-server]__0q3-t8a._.js +3 -0
  278. package/.next/server/chunks/[root-of-the-server]__0q3-t8a._.js.map +1 -0
  279. package/.next/server/chunks/[root-of-the-server]__0vcsqzd._.js +3 -0
  280. package/.next/server/chunks/[root-of-the-server]__0vcsqzd._.js.map +1 -0
  281. package/.next/server/chunks/{[root-of-the-server]__0nfvvy9._.js → [root-of-the-server]__1-e3i_5._.js} +2 -2
  282. package/.next/server/chunks/[root-of-the-server]__1-ic3af._.js +3 -0
  283. package/.next/server/chunks/[root-of-the-server]__1-ic3af._.js.map +1 -0
  284. package/.next/server/chunks/[root-of-the-server]__11a4ptn._.js +3 -0
  285. package/.next/server/chunks/[root-of-the-server]__11a4ptn._.js.map +1 -0
  286. package/.next/server/chunks/{[root-of-the-server]__0e59y5j._.js → [root-of-the-server]__11c8641._.js} +2 -2
  287. package/.next/server/chunks/[root-of-the-server]__12nzy_6._.js +3 -0
  288. package/.next/server/chunks/[root-of-the-server]__12nzy_6._.js.map +1 -0
  289. package/.next/server/chunks/[root-of-the-server]__15ck1wv._.js +3 -0
  290. package/.next/server/chunks/[root-of-the-server]__15ck1wv._.js.map +1 -0
  291. package/.next/server/chunks/[root-of-the-server]__1613hjb._.js +30 -19
  292. package/.next/server/chunks/[root-of-the-server]__1613hjb._.js.map +1 -1
  293. package/.next/server/chunks/{[root-of-the-server]__06zf_sh._.js → [root-of-the-server]__197vw9g._.js} +2 -2
  294. package/.next/server/chunks/{[root-of-the-server]__1j0rrps._.js → [root-of-the-server]__19k8t87._.js} +2 -2
  295. package/.next/server/chunks/{[root-of-the-server]__0eqd-tw._.js → [root-of-the-server]__1ezzeji._.js} +2 -2
  296. package/.next/server/chunks/[root-of-the-server]__1mrmaf9._.js +3 -0
  297. package/.next/server/chunks/{[root-of-the-server]__17p0rkn._.js → [root-of-the-server]__1n68akx._.js} +2 -2
  298. package/.next/server/chunks/[root-of-the-server]__1n68akx._.js.map +1 -0
  299. package/.next/server/chunks/{[root-of-the-server]__11s76m8._.js → [root-of-the-server]__1npya5q._.js} +2 -2
  300. package/.next/server/chunks/[root-of-the-server]__1npya5q._.js.map +1 -0
  301. package/.next/server/chunks/[root-of-the-server]__1qusy4g._.js +3 -0
  302. package/.next/server/chunks/[root-of-the-server]__1qusy4g._.js.map +1 -0
  303. package/.next/server/chunks/{[root-of-the-server]__1q4ahvz._.js → [root-of-the-server]__1umrorf._.js} +2 -2
  304. package/.next/server/chunks/{[root-of-the-server]__093hlkh._.js → [root-of-the-server]__1vh9g2o._.js} +2 -2
  305. package/.next/server/chunks/{[root-of-the-server]__1y-tt29._.js → [root-of-the-server]__1vq38ov._.js} +2 -2
  306. package/.next/server/chunks/[root-of-the-server]__1xb0fmp._.js +1 -1
  307. package/.next/server/chunks/[root-of-the-server]__1xb0fmp._.js.map +1 -1
  308. package/.next/server/chunks/_04byth9._.js +24 -19
  309. package/.next/server/chunks/_04byth9._.js.map +1 -1
  310. package/.next/server/chunks/_1au4syj._.js +1 -1
  311. package/.next/server/chunks/_1au4syj._.js.map +1 -1
  312. package/.next/server/chunks/_1b5fqxy._.js.map +1 -1
  313. package/.next/server/chunks/_1ivswa9._.js +3 -0
  314. package/.next/server/chunks/_1ivswa9._.js.map +1 -0
  315. package/.next/server/chunks/_next-internal_server_app_api_roadmap_restore_route_actions_0skshp1.js +3 -0
  316. package/.next/server/chunks/_next-internal_server_app_api_roadmap_restore_route_actions_0skshp1.js.map +1 -0
  317. package/.next/server/chunks/_next-internal_server_app_api_tasks_bulk_route_actions_1k75mlb.js +3 -0
  318. package/.next/server/chunks/_next-internal_server_app_api_tasks_bulk_route_actions_1k75mlb.js.map +1 -0
  319. package/.next/server/chunks/_next-internal_server_app_api_tasks_delete_route_actions_1k1g6mw.js +3 -0
  320. package/.next/server/chunks/_next-internal_server_app_api_tasks_delete_route_actions_1k1g6mw.js.map +1 -0
  321. package/.next/server/chunks/_next-internal_server_app_api_tasks_manual-tests_route_actions_1rpog0y.js +3 -0
  322. package/.next/server/chunks/_next-internal_server_app_api_tasks_manual-tests_route_actions_1rpog0y.js.map +1 -0
  323. package/.next/server/chunks/_next-internal_server_app_api_tasks_restore_route_actions_1ecsti8.js +3 -0
  324. package/.next/server/chunks/_next-internal_server_app_api_tasks_restore_route_actions_1ecsti8.js.map +1 -0
  325. package/.next/server/chunks/_next-internal_server_app_api_tasks_review_route_actions_1dly07f.js +3 -0
  326. package/.next/server/chunks/_next-internal_server_app_api_tasks_review_route_actions_1dly07f.js.map +1 -0
  327. package/.next/server/chunks/_next-internal_server_app_api_tasks_update_route_actions_0z-ho6g.js +3 -0
  328. package/.next/server/chunks/_next-internal_server_app_api_tasks_update_route_actions_0z-ho6g.js.map +1 -0
  329. package/.next/server/chunks/_next-internal_server_app_api_views_route_actions_10-2c0e.js +3 -0
  330. package/.next/server/chunks/_next-internal_server_app_api_views_route_actions_10-2c0e.js.map +1 -0
  331. package/.next/server/chunks/ssr/0_g__next_dist_000c5_m._.js +3 -0
  332. package/.next/server/chunks/ssr/0_g__next_dist_000c5_m._.js.map +1 -0
  333. package/.next/server/chunks/ssr/{0_nd_mermaid_dist_mermaid_core_mjs_0vv_0i3._.js → 0_nd_mermaid_dist_mermaid_core_mjs_027n2yl._.js} +2 -2
  334. package/.next/server/chunks/ssr/0_nd_mermaid_dist_mermaid_core_mjs_027n2yl._.js.map +1 -0
  335. package/.next/server/chunks/ssr/{1u84_katex_dist_katex_mjs_1z0p1bs._.js → 1u84_katex_dist_katex_mjs_1kb5xea._.js} +1 -1
  336. package/.next/server/chunks/ssr/1u84_katex_dist_katex_mjs_1kb5xea._.js.map +1 -0
  337. package/.next/server/chunks/ssr/1x05_lucide-react_dist_esm_icons_05ggp3i._.js +1 -1
  338. package/.next/server/chunks/ssr/1x05_lucide-react_dist_esm_icons_05ggp3i._.js.map +1 -1
  339. package/.next/server/chunks/ssr/1x05_lucide-react_dist_esm_icons_0wurouw._.js +3 -0
  340. package/.next/server/chunks/ssr/1x05_lucide-react_dist_esm_icons_0wurouw._.js.map +1 -0
  341. package/.next/server/chunks/ssr/1x05_lucide-react_dist_esm_icons_14hl50o._.js +3 -0
  342. package/.next/server/chunks/ssr/1x05_lucide-react_dist_esm_icons_14hl50o._.js.map +1 -0
  343. package/.next/server/chunks/ssr/1x05_lucide-react_dist_esm_icons_folder-open_mjs_117ipzw._.js +3 -0
  344. package/.next/server/chunks/ssr/1x05_lucide-react_dist_esm_icons_folder-open_mjs_117ipzw._.js.map +1 -0
  345. package/.next/server/chunks/ssr/1x05_lucide-react_dist_esm_icons_triangle-alert_mjs_0ei-mpz._.js +3 -0
  346. package/.next/server/chunks/ssr/1x05_lucide-react_dist_esm_icons_triangle-alert_mjs_0ei-mpz._.js.map +1 -0
  347. package/.next/server/chunks/ssr/[root-of-the-server]__0hcextx._.js +3 -0
  348. package/.next/server/chunks/ssr/[root-of-the-server]__0hcextx._.js.map +1 -0
  349. package/.next/server/chunks/ssr/[root-of-the-server]__0xt_0w2._.js.map +1 -1
  350. package/.next/server/chunks/ssr/_04xff_2._.js +1 -1
  351. package/.next/server/chunks/ssr/_04xff_2._.js.map +1 -1
  352. package/.next/server/chunks/ssr/_071j6mr._.js +4 -0
  353. package/.next/server/chunks/ssr/_071j6mr._.js.map +1 -0
  354. package/.next/server/chunks/ssr/_09b02z-._.js +3 -0
  355. package/.next/server/chunks/ssr/_09b02z-._.js.map +1 -0
  356. package/.next/server/chunks/ssr/_0d0f1s1._.js +3 -0
  357. package/.next/server/chunks/ssr/_0d0f1s1._.js.map +1 -0
  358. package/.next/server/chunks/ssr/_0idb-vo._.js +151 -0
  359. package/.next/server/chunks/ssr/_0idb-vo._.js.map +1 -0
  360. package/.next/server/chunks/ssr/_0lnt_va._.js +4 -0
  361. package/.next/server/chunks/ssr/_0lnt_va._.js.map +1 -0
  362. package/.next/server/chunks/ssr/_0qlymco._.js +3 -0
  363. package/.next/server/chunks/ssr/_0qlymco._.js.map +1 -0
  364. package/.next/server/chunks/ssr/_0qp3gu7._.js +3 -0
  365. package/.next/server/chunks/ssr/_0qp3gu7._.js.map +1 -0
  366. package/.next/server/chunks/ssr/_0sg1oeq._.js +3 -0
  367. package/.next/server/chunks/ssr/_0sg1oeq._.js.map +1 -0
  368. package/.next/server/chunks/ssr/_14emfpq._.js +3 -0
  369. package/.next/server/chunks/ssr/_14emfpq._.js.map +1 -0
  370. package/.next/server/chunks/ssr/_1ftruw6._.js +4 -0
  371. package/.next/server/chunks/ssr/_1ftruw6._.js.map +1 -0
  372. package/.next/server/chunks/ssr/_1gxjjvh._.js +1 -1
  373. package/.next/server/chunks/ssr/_1gxjjvh._.js.map +1 -1
  374. package/.next/server/chunks/ssr/_1ncdakv._.js +4 -0
  375. package/.next/server/chunks/ssr/_1ncdakv._.js.map +1 -0
  376. package/.next/server/chunks/ssr/_1t76zdx._.js +3 -0
  377. package/.next/server/chunks/ssr/_1t76zdx._.js.map +1 -0
  378. package/.next/server/chunks/ssr/_1x7ggg5._.js +4 -0
  379. package/.next/server/chunks/ssr/_1x7ggg5._.js.map +1 -0
  380. package/.next/server/chunks/ssr/_next-internal_server_app_(app)_manual-tests_page_actions_1g5zjb7.js +3 -0
  381. package/.next/server/chunks/ssr/_next-internal_server_app_(app)_manual-tests_page_actions_1g5zjb7.js.map +1 -0
  382. package/.next/server/chunks/ssr/{node_modules__pnpm_04khl_s._.js → node_modules__pnpm_01bjcv9._.js} +1 -1
  383. package/.next/server/chunks/ssr/{node_modules__pnpm_08sqeu2._.js → node_modules__pnpm_03qrzdb._.js} +1 -1
  384. package/.next/server/chunks/ssr/{node_modules__pnpm_104pzhc._.js → node_modules__pnpm_06d-fdo._.js} +2 -2
  385. package/.next/server/chunks/ssr/{node_modules__pnpm_1xzf8g_._.js → node_modules__pnpm_0ctisl0._.js} +1 -1
  386. package/.next/server/chunks/ssr/{node_modules__pnpm_0og06fy._.js → node_modules__pnpm_0fwp8jm._.js} +1 -1
  387. package/.next/server/chunks/ssr/{node_modules__pnpm_0a9b2ei._.js → node_modules__pnpm_0kpu0-2._.js} +1 -1
  388. package/.next/server/chunks/ssr/{node_modules__pnpm_0jpv2b6._.js → node_modules__pnpm_0vry74x._.js} +2 -2
  389. package/.next/server/chunks/ssr/{node_modules__pnpm_0fd3pr1._.js → node_modules__pnpm_0ycbjbd._.js} +2 -2
  390. package/.next/server/chunks/ssr/{node_modules__pnpm_1l8k8w1._.js → node_modules__pnpm_1-76qxg._.js} +1 -1
  391. package/.next/server/chunks/ssr/{node_modules__pnpm_0ah02mu._.js → node_modules__pnpm_1-r94f7._.js} +1 -1
  392. package/.next/server/chunks/ssr/{node_modules__pnpm_1yq90z7._.js → node_modules__pnpm_14piqi4._.js} +1 -1
  393. package/.next/server/chunks/ssr/node_modules__pnpm_14piqi4._.js.map +1 -0
  394. package/.next/server/chunks/ssr/{node_modules__pnpm_0dwi7mu._.js → node_modules__pnpm_16u1vfb._.js} +2 -2
  395. package/.next/server/chunks/ssr/node_modules__pnpm_16u1vfb._.js.map +1 -0
  396. package/.next/server/chunks/ssr/{node_modules__pnpm_0f77_ng._.js → node_modules__pnpm_17i6z2d._.js} +1 -1
  397. package/.next/server/chunks/ssr/{node_modules__pnpm_09_i2jk._.js → node_modules__pnpm_189m48n._.js} +1 -1
  398. package/.next/server/chunks/ssr/node_modules__pnpm_189m48n._.js.map +1 -0
  399. package/.next/server/chunks/ssr/{node_modules__pnpm_0ttvopp._.js → node_modules__pnpm_192f222._.js} +1 -1
  400. package/.next/server/chunks/ssr/{node_modules__pnpm_07t_e8c._.js → node_modules__pnpm_1a48_nl._.js} +1 -1
  401. package/.next/server/chunks/ssr/{node_modules__pnpm_195j8p_._.js → node_modules__pnpm_1aa37e1._.js} +1 -1
  402. package/.next/server/chunks/ssr/{node_modules__pnpm_0cj8ryj._.js → node_modules__pnpm_1f440kx._.js} +1 -1
  403. package/.next/server/chunks/ssr/{node_modules__pnpm_0u3u82f._.js → node_modules__pnpm_1fn3ejy._.js} +1 -1
  404. package/.next/server/chunks/ssr/{node_modules__pnpm_0ts89ne._.js → node_modules__pnpm_1min2jl._.js} +1 -1
  405. package/.next/server/chunks/ssr/node_modules__pnpm_1q89l7p._.js +3 -0
  406. package/.next/server/chunks/ssr/node_modules__pnpm_1q89l7p._.js.map +1 -0
  407. package/.next/server/chunks/ssr/{node_modules__pnpm_1woddr6._.js → node_modules__pnpm_1q_hhr3._.js} +2 -2
  408. package/.next/server/chunks/ssr/{node_modules__pnpm_1x0t5_z._.js → node_modules__pnpm_1qmkxyo._.js} +1 -1
  409. package/.next/server/chunks/ssr/{node_modules__pnpm_0gifu-u._.js → node_modules__pnpm_1qp_jvj._.js} +2 -2
  410. package/.next/server/chunks/ssr/{node_modules__pnpm_0y35hs4._.js → node_modules__pnpm_1ssjj4u._.js} +1 -1
  411. package/.next/server/chunks/ssr/{node_modules__pnpm_0qc3gsk._.js → node_modules__pnpm_1txccoj._.js} +1 -1
  412. package/.next/server/chunks/ssr/{node_modules__pnpm_1w0f1m5._.js → node_modules__pnpm_1uwkcin._.js} +1 -1
  413. package/.next/server/chunks/ssr/node_modules__pnpm_1xeothw._.js +3 -0
  414. package/.next/server/chunks/ssr/node_modules__pnpm_1xeothw._.js.map +1 -0
  415. package/.next/server/chunks/ssr/{node_modules__pnpm_0286-tg._.js → node_modules__pnpm_1ygal0c._.js} +1 -1
  416. package/.next/server/chunks/ssr/src_app_(app)_activity_page_tsx_13jd6bn._.js +1 -1
  417. package/.next/server/chunks/ssr/src_app_(app)_activity_page_tsx_13jd6bn._.js.map +1 -1
  418. package/.next/server/chunks/ssr/src_app_(app)_board_page_tsx_0gpfc77._.js +3 -0
  419. package/.next/server/chunks/ssr/src_app_(app)_board_page_tsx_0gpfc77._.js.map +1 -0
  420. package/.next/server/chunks/ssr/src_app_(app)_chat_page_tsx_0c3e4l4._.js +1 -1
  421. package/.next/server/chunks/ssr/src_app_(app)_chat_page_tsx_0c3e4l4._.js.map +1 -1
  422. package/.next/server/chunks/ssr/src_app_(app)_layout_tsx_1yu5hom._.js +1 -1
  423. package/.next/server/chunks/ssr/src_app_(app)_layout_tsx_1yu5hom._.js.map +1 -1
  424. package/.next/server/chunks/ssr/src_app_(app)_manual-tests_page_tsx_01tnunf._.js +3 -0
  425. package/.next/server/chunks/ssr/src_app_(app)_manual-tests_page_tsx_01tnunf._.js.map +1 -0
  426. package/.next/server/chunks/ssr/src_app_(app)_roadmap_page_tsx_0vcq3jr._.js +2 -2
  427. package/.next/server/chunks/ssr/src_app_(app)_roadmap_page_tsx_0vcq3jr._.js.map +1 -1
  428. package/.next/server/chunks/ssr/src_app_(app)_settings_page_tsx_0zevtee._.js +2 -2
  429. package/.next/server/chunks/ssr/src_app_(app)_settings_page_tsx_0zevtee._.js.map +1 -1
  430. package/.next/server/chunks/ssr/src_app_(app)_setup_page_tsx_1yids_n._.js +1 -1
  431. package/.next/server/chunks/ssr/src_app_(app)_setup_page_tsx_1yids_n._.js.map +1 -1
  432. package/.next/server/chunks/ssr/src_components_chat_ChatView_tsx_0h5j-e2._.js +3 -0
  433. package/.next/server/chunks/ssr/src_components_chat_ChatView_tsx_0h5j-e2._.js.map +1 -0
  434. package/.next/server/chunks/ssr/src_context_ChatContext_tsx_0lowp8p._.js +2 -2
  435. package/.next/server/chunks/ssr/src_context_ChatContext_tsx_0lowp8p._.js.map +1 -1
  436. package/.next/server/middleware-build-manifest.js +3 -3
  437. package/.next/server/next-font-manifest.js +1 -1
  438. package/.next/server/next-font-manifest.json +4 -0
  439. package/.next/server/pages/404.html +1 -1
  440. package/.next/server/pages/500.html +1 -1
  441. package/.next/server/prefetch-hints.json +19 -0
  442. package/.next/server/server-reference-manifest.js +1 -1
  443. package/.next/server/server-reference-manifest.json +1 -1
  444. package/.next/static/chunks/02cj5_i9np4sg.js +3 -0
  445. package/.next/static/chunks/02i5hsdat1nuq.css +9 -0
  446. package/.next/static/chunks/0mgifb98wbesa.js +1 -0
  447. package/.next/static/chunks/0p1-hkgnm2ll2.js +1 -0
  448. package/.next/static/chunks/0pgu5q5vodev6.js +1 -0
  449. package/.next/static/chunks/0rqzvayflendx.js +2 -0
  450. package/.next/static/chunks/0vcfs7dii85tw.js +21 -0
  451. package/.next/static/chunks/13l4l-boqg8fx.js +1 -0
  452. package/.next/static/chunks/14hxe1qiaram9.js +1 -0
  453. package/.next/static/chunks/150y5rwg6gwvx.css +1 -0
  454. package/.next/static/chunks/16k196zyl-n9q.js +1 -0
  455. package/.next/static/chunks/18b5l8p0vd9f8.js +1 -0
  456. package/.next/static/chunks/1c_8t2kecjnua.js +1 -0
  457. package/.next/static/chunks/1fd43t9y42wd3.js +1 -0
  458. package/.next/static/chunks/1q50zh5z-fq2k.js +2 -0
  459. package/.next/static/chunks/1tu8lforstp1o.js +1 -0
  460. package/.next/static/chunks/23-xknrz6o748.js +1 -0
  461. package/.next/static/chunks/2_xpm7qhr69n8.js +2 -0
  462. package/.next/static/chunks/2ls_yp4-qgb42.js +1 -0
  463. package/.next/static/chunks/2zz0ip2l_29c3.js +3 -0
  464. package/.next/static/chunks/3ly7b47esdb7j.js +1 -0
  465. package/.next/static/chunks/3ruw8lu2_re-h.js +1 -0
  466. package/.next/static/chunks/3vf5nnd4xjo5_.js +1 -0
  467. package/.next/static/chunks/40jaenrnspnlh.js +68 -0
  468. package/.next/static/chunks/41oxcdcw-pcwt.js +1 -0
  469. package/README.md +2 -1
  470. package/package.json +1 -1
  471. package/skills/work-epic/SKILL.md +22 -3
  472. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0am8bw2._.js +0 -3
  473. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0enefn6._.js +0 -3
  474. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0k3n_5f._.js +0 -3
  475. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0lcfjm4._.js +0 -3
  476. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0lfx9av._.js +0 -3
  477. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0qau3qw._.js +0 -3
  478. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0r1pmvm._.js +0 -3
  479. package/.next/server/chunks/11mp_@anthropic-ai_sdk_11t-z2t._.js +0 -3
  480. package/.next/server/chunks/11mp_@anthropic-ai_sdk_15hyn79._.js +0 -3
  481. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1_qk07x._.js +0 -3
  482. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1b2929e._.js +0 -3
  483. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1e72c89._.js +0 -3
  484. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1eq7asn._.js +0 -3
  485. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1fhdojs._.js +0 -3
  486. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1htgzmb._.js +0 -3
  487. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1lh_vwq._.js +0 -3
  488. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1ludf-o._.js +0 -3
  489. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1m3luz3._.js +0 -3
  490. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1x1iz3d._.js +0 -3
  491. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1xsmwlh._.js +0 -3
  492. package/.next/server/chunks/11mp_@anthropic-ai_sdk_202spah._.js +0 -3
  493. package/.next/server/chunks/11mp_@anthropic-ai_sdk_215hw9u._.js +0 -3
  494. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_0d2_lq6._.js +0 -3
  495. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_0n-i0pd._.js +0 -3
  496. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_13pos4j._.js +0 -3
  497. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_17b4pqr._.js +0 -3
  498. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1bkcmom._.js +0 -3
  499. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1hlj_3l._.js +0 -3
  500. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1ip-sor._.js +0 -3
  501. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1pex5o1._.js +0 -3
  502. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1s8lc8_._.js +0 -3
  503. package/.next/server/chunks/[root-of-the-server]__1o4a-4j._.js +0 -3
  504. package/.next/server/chunks/[root-of-the-server]__1o4a-4j._.js.map +0 -1
  505. package/.next/server/chunks/ssr/1x05_lucide-react_dist_esm_icons_0cvmffy._.js +0 -3
  506. package/.next/server/chunks/ssr/1x05_lucide-react_dist_esm_icons_0cvmffy._.js.map +0 -1
  507. package/.next/server/chunks/ssr/1x05_lucide-react_dist_esm_icons_0u3jxas._.js +0 -3
  508. package/.next/server/chunks/ssr/1x05_lucide-react_dist_esm_icons_0u3jxas._.js.map +0 -1
  509. package/.next/server/chunks/ssr/_059qmur._.js +0 -3
  510. package/.next/server/chunks/ssr/_059qmur._.js.map +0 -1
  511. package/.next/server/chunks/ssr/_081irea._.js +0 -3
  512. package/.next/server/chunks/ssr/_081irea._.js.map +0 -1
  513. package/.next/server/chunks/ssr/_0d8t8l4._.js +0 -3
  514. package/.next/server/chunks/ssr/_0d8t8l4._.js.map +0 -1
  515. package/.next/server/chunks/ssr/_0dyvcdg._.js +0 -3
  516. package/.next/server/chunks/ssr/_0dyvcdg._.js.map +0 -1
  517. package/.next/server/chunks/ssr/_1-ghqy4._.js +0 -3
  518. package/.next/server/chunks/ssr/_1-ghqy4._.js.map +0 -1
  519. package/.next/server/chunks/ssr/_17jy5db._.js +0 -3
  520. package/.next/server/chunks/ssr/_17jy5db._.js.map +0 -1
  521. package/.next/server/chunks/ssr/_1c95ems._.js +0 -151
  522. package/.next/server/chunks/ssr/_1c95ems._.js.map +0 -1
  523. package/.next/server/chunks/ssr/_1dllfz5._.js +0 -4
  524. package/.next/server/chunks/ssr/_1dllfz5._.js.map +0 -1
  525. package/.next/server/chunks/ssr/node_modules__pnpm_006_c8z._.js +0 -3
  526. package/.next/server/chunks/ssr/node_modules__pnpm_006_c8z._.js.map +0 -1
  527. package/.next/server/chunks/ssr/node_modules__pnpm_1imm4ut._.js +0 -3
  528. package/.next/server/chunks/ssr/node_modules__pnpm_1imm4ut._.js.map +0 -1
  529. package/.next/server/chunks/ssr/node_modules__pnpm_1kcnkjs._.js +0 -3
  530. package/.next/server/chunks/ssr/node_modules__pnpm_1kcnkjs._.js.map +0 -1
  531. package/.next/server/chunks/ssr/src_components_14pwej-._.js +0 -3
  532. package/.next/server/chunks/ssr/src_components_14pwej-._.js.map +0 -1
  533. package/.next/server/chunks/ssr/src_components_ui_scroll-area_tsx_0i-n_27._.js +0 -3
  534. package/.next/server/chunks/ssr/src_components_ui_scroll-area_tsx_0i-n_27._.js.map +0 -1
  535. package/.next/static/chunks/0-z7kyblalrea.js +0 -1
  536. package/.next/static/chunks/050mq8l4e1ubn.js +0 -1
  537. package/.next/static/chunks/098le48845_fg.js +0 -3
  538. package/.next/static/chunks/0cw4-ebkoufdc.js +0 -1
  539. package/.next/static/chunks/0feo-go1w5nct.js +0 -1
  540. package/.next/static/chunks/0k2qhx29amdgs.js +0 -1
  541. package/.next/static/chunks/14sefb904pl64.js +0 -21
  542. package/.next/static/chunks/1fer-wulyrjrs.js +0 -3
  543. package/.next/static/chunks/1o7b1x4umy8a6.js +0 -1
  544. package/.next/static/chunks/1q_io1j58aukw.js +0 -1
  545. package/.next/static/chunks/1r7z33e9jk3vp.js +0 -1
  546. package/.next/static/chunks/1t-cgh4477hfo.js +0 -1
  547. package/.next/static/chunks/1u-1po1qesc9f.js +0 -1
  548. package/.next/static/chunks/1u5kegkgm0xoz.js +0 -1
  549. package/.next/static/chunks/24ygzsgd-moqy.js +0 -1
  550. package/.next/static/chunks/26folxgplfa9t.js +0 -68
  551. package/.next/static/chunks/2ocixvjhv34_3.js +0 -1
  552. package/.next/static/chunks/3_lsdgxa-h7ma.css +0 -10
  553. package/.next/static/chunks/3rmv-sb9w9i3e.js +0 -1
  554. package/.next/static/chunks/3smp1lj103j-l.js +0 -1
  555. package/.next/static/chunks/3ttzomivj48jh.js +0 -2
  556. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0-5bkpj._.js.map → 11mp_@anthropic-ai_sdk_00p3fu1._.js.map} +0 -0
  557. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_00psb_y._.js.map → 11mp_@anthropic-ai_sdk_01amtux._.js.map} +0 -0
  558. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_01l5h3i._.js.map → 11mp_@anthropic-ai_sdk_01jjl08._.js.map} +0 -0
  559. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_072r2bd._.js.map → 11mp_@anthropic-ai_sdk_071zfm8._.js.map} +0 -0
  560. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0am8bw2._.js.map → 11mp_@anthropic-ai_sdk_07v3boe._.js.map} +0 -0
  561. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0enefn6._.js.map → 11mp_@anthropic-ai_sdk_09iva72._.js.map} +0 -0
  562. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0k3n_5f._.js.map → 11mp_@anthropic-ai_sdk_0bom1b1._.js.map} +0 -0
  563. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0lcfjm4._.js.map → 11mp_@anthropic-ai_sdk_0dvji7p._.js.map} +0 -0
  564. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0lfx9av._.js.map → 11mp_@anthropic-ai_sdk_0dzo8jn._.js.map} +0 -0
  565. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0qau3qw._.js.map → 11mp_@anthropic-ai_sdk_0hvqsqq._.js.map} +0 -0
  566. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0r1pmvm._.js.map → 11mp_@anthropic-ai_sdk_0i7i-jw._.js.map} +0 -0
  567. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_11t-z2t._.js.map → 11mp_@anthropic-ai_sdk_0k0iop5._.js.map} +0 -0
  568. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_15hyn79._.js.map → 11mp_@anthropic-ai_sdk_0l3-6aq._.js.map} +0 -0
  569. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1_qk07x._.js.map → 11mp_@anthropic-ai_sdk_0oegm3y._.js.map} +0 -0
  570. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1b2929e._.js.map → 11mp_@anthropic-ai_sdk_0p5cyes._.js.map} +0 -0
  571. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1e72c89._.js.map → 11mp_@anthropic-ai_sdk_0qw8i6_._.js.map} +0 -0
  572. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1eq7asn._.js.map → 11mp_@anthropic-ai_sdk_0yk-a7v._.js.map} +0 -0
  573. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1fhdojs._.js.map → 11mp_@anthropic-ai_sdk_11fsqvb._.js.map} +0 -0
  574. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1htgzmb._.js.map → 11mp_@anthropic-ai_sdk_143_7ez._.js.map} +0 -0
  575. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1lh_vwq._.js.map → 11mp_@anthropic-ai_sdk_14a4-64._.js.map} +0 -0
  576. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1ludf-o._.js.map → 11mp_@anthropic-ai_sdk_17d_oma._.js.map} +0 -0
  577. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1m3luz3._.js.map → 11mp_@anthropic-ai_sdk_18qwuyb._.js.map} +0 -0
  578. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1x1iz3d._.js.map → 11mp_@anthropic-ai_sdk_19au8y6._.js.map} +0 -0
  579. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1xsmwlh._.js.map → 11mp_@anthropic-ai_sdk_1ak_hy5._.js.map} +0 -0
  580. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_202spah._.js.map → 11mp_@anthropic-ai_sdk_1cqa0nq._.js.map} +0 -0
  581. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_215hw9u._.js.map → 11mp_@anthropic-ai_sdk_1i-x_q0._.js.map} +0 -0
  582. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_0d2_lq6._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_08ecfgc._.js.map} +0 -0
  583. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_0n-i0pd._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_09--sd6._.js.map} +0 -0
  584. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_13pos4j._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_0e3mwc6._.js.map} +0 -0
  585. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_17b4pqr._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_0go4301._.js.map} +0 -0
  586. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_1bkcmom._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_0iq9dmt._.js.map} +0 -0
  587. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_1hlj_3l._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_0n9ijke._.js.map} +0 -0
  588. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_1ip-sor._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_0szcyrx._.js.map} +0 -0
  589. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_1pex5o1._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_0xy2s3x._.js.map} +0 -0
  590. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_1s8lc8_._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_0yaujn7._.js.map} +0 -0
  591. /package/.next/server/chunks/{[root-of-the-server]__0e59y5j._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_0z9ly74._.js.map} +0 -0
  592. /package/.next/server/chunks/{[root-of-the-server]__11s76m8._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_1hmq3al._.js.map} +0 -0
  593. /package/.next/server/chunks/{ssr/0_nd_mermaid_dist_mermaid_core_mjs_0vv_0i3._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_1tqk4bp._.js.map} +0 -0
  594. /package/.next/server/chunks/{ssr/1u84_katex_dist_katex_mjs_1z0p1bs._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_1x-hr6f._.js.map} +0 -0
  595. /package/.next/server/chunks/{ssr/node_modules__pnpm_09_i2jk._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_1zsdhg0._.js.map} +0 -0
  596. /package/.next/server/chunks/{ssr/node_modules__pnpm_0dwi7mu._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_20t__fe._.js.map} +0 -0
  597. /package/.next/server/chunks/{[root-of-the-server]__1u_q61h._.js.map → [root-of-the-server]__0-pmfg2._.js.map} +0 -0
  598. /package/.next/server/chunks/{[root-of-the-server]__1y3u5ud._.js.map → [root-of-the-server]__04tibmn._.js.map} +0 -0
  599. /package/.next/server/chunks/{[root-of-the-server]__17xb02p._.js.map → [root-of-the-server]__05g5cgo._.js.map} +0 -0
  600. /package/.next/server/chunks/{[root-of-the-server]__0aynzrb._.js.map → [root-of-the-server]__0b5pwze._.js.map} +0 -0
  601. /package/.next/server/chunks/{[root-of-the-server]__142icjb._.js.map → [root-of-the-server]__0druay_._.js.map} +0 -0
  602. /package/.next/server/chunks/{[root-of-the-server]__106gpvh._.js.map → [root-of-the-server]__0p6ja6l._.js.map} +0 -0
  603. /package/.next/server/chunks/{[root-of-the-server]__0nfvvy9._.js.map → [root-of-the-server]__1-e3i_5._.js.map} +0 -0
  604. /package/.next/server/chunks/{ssr/node_modules__pnpm_1yq90z7._.js.map → [root-of-the-server]__11c8641._.js.map} +0 -0
  605. /package/.next/server/chunks/{[root-of-the-server]__06zf_sh._.js.map → [root-of-the-server]__197vw9g._.js.map} +0 -0
  606. /package/.next/server/chunks/{[root-of-the-server]__1j0rrps._.js.map → [root-of-the-server]__19k8t87._.js.map} +0 -0
  607. /package/.next/server/chunks/{[root-of-the-server]__0eqd-tw._.js.map → [root-of-the-server]__1ezzeji._.js.map} +0 -0
  608. /package/.next/server/chunks/{[root-of-the-server]__17p0rkn._.js.map → [root-of-the-server]__1mrmaf9._.js.map} +0 -0
  609. /package/.next/server/chunks/{[root-of-the-server]__1q4ahvz._.js.map → [root-of-the-server]__1umrorf._.js.map} +0 -0
  610. /package/.next/server/chunks/{[root-of-the-server]__093hlkh._.js.map → [root-of-the-server]__1vh9g2o._.js.map} +0 -0
  611. /package/.next/server/chunks/{[root-of-the-server]__1y-tt29._.js.map → [root-of-the-server]__1vq38ov._.js.map} +0 -0
  612. /package/.next/server/chunks/ssr/{node_modules__pnpm_04khl_s._.js.map → node_modules__pnpm_01bjcv9._.js.map} +0 -0
  613. /package/.next/server/chunks/ssr/{node_modules__pnpm_08sqeu2._.js.map → node_modules__pnpm_03qrzdb._.js.map} +0 -0
  614. /package/.next/server/chunks/ssr/{node_modules__pnpm_104pzhc._.js.map → node_modules__pnpm_06d-fdo._.js.map} +0 -0
  615. /package/.next/server/chunks/ssr/{node_modules__pnpm_1xzf8g_._.js.map → node_modules__pnpm_0ctisl0._.js.map} +0 -0
  616. /package/.next/server/chunks/ssr/{node_modules__pnpm_0og06fy._.js.map → node_modules__pnpm_0fwp8jm._.js.map} +0 -0
  617. /package/.next/server/chunks/ssr/{node_modules__pnpm_0a9b2ei._.js.map → node_modules__pnpm_0kpu0-2._.js.map} +0 -0
  618. /package/.next/server/chunks/ssr/{node_modules__pnpm_0jpv2b6._.js.map → node_modules__pnpm_0vry74x._.js.map} +0 -0
  619. /package/.next/server/chunks/ssr/{node_modules__pnpm_0fd3pr1._.js.map → node_modules__pnpm_0ycbjbd._.js.map} +0 -0
  620. /package/.next/server/chunks/ssr/{node_modules__pnpm_1l8k8w1._.js.map → node_modules__pnpm_1-76qxg._.js.map} +0 -0
  621. /package/.next/server/chunks/ssr/{node_modules__pnpm_0ah02mu._.js.map → node_modules__pnpm_1-r94f7._.js.map} +0 -0
  622. /package/.next/server/chunks/ssr/{node_modules__pnpm_0f77_ng._.js.map → node_modules__pnpm_17i6z2d._.js.map} +0 -0
  623. /package/.next/server/chunks/ssr/{node_modules__pnpm_0ttvopp._.js.map → node_modules__pnpm_192f222._.js.map} +0 -0
  624. /package/.next/server/chunks/ssr/{node_modules__pnpm_07t_e8c._.js.map → node_modules__pnpm_1a48_nl._.js.map} +0 -0
  625. /package/.next/server/chunks/ssr/{node_modules__pnpm_195j8p_._.js.map → node_modules__pnpm_1aa37e1._.js.map} +0 -0
  626. /package/.next/server/chunks/ssr/{node_modules__pnpm_0cj8ryj._.js.map → node_modules__pnpm_1f440kx._.js.map} +0 -0
  627. /package/.next/server/chunks/ssr/{node_modules__pnpm_0u3u82f._.js.map → node_modules__pnpm_1fn3ejy._.js.map} +0 -0
  628. /package/.next/server/chunks/ssr/{node_modules__pnpm_0ts89ne._.js.map → node_modules__pnpm_1min2jl._.js.map} +0 -0
  629. /package/.next/server/chunks/ssr/{node_modules__pnpm_1woddr6._.js.map → node_modules__pnpm_1q_hhr3._.js.map} +0 -0
  630. /package/.next/server/chunks/ssr/{node_modules__pnpm_1x0t5_z._.js.map → node_modules__pnpm_1qmkxyo._.js.map} +0 -0
  631. /package/.next/server/chunks/ssr/{node_modules__pnpm_0gifu-u._.js.map → node_modules__pnpm_1qp_jvj._.js.map} +0 -0
  632. /package/.next/server/chunks/ssr/{node_modules__pnpm_0y35hs4._.js.map → node_modules__pnpm_1ssjj4u._.js.map} +0 -0
  633. /package/.next/server/chunks/ssr/{node_modules__pnpm_0qc3gsk._.js.map → node_modules__pnpm_1txccoj._.js.map} +0 -0
  634. /package/.next/server/chunks/ssr/{node_modules__pnpm_1w0f1m5._.js.map → node_modules__pnpm_1uwkcin._.js.map} +0 -0
  635. /package/.next/server/chunks/ssr/{node_modules__pnpm_0286-tg._.js.map → node_modules__pnpm_1ygal0c._.js.map} +0 -0
  636. /package/.next/static/{uJ5RYxgFnE5svAvnuLDXN → fGPda81_8-K4GmaNUE6KA}/_buildManifest.js +0 -0
  637. /package/.next/static/{uJ5RYxgFnE5svAvnuLDXN → fGPda81_8-K4GmaNUE6KA}/_clientMiddlewareManifest.js +0 -0
  638. /package/.next/static/{uJ5RYxgFnE5svAvnuLDXN → fGPda81_8-K4GmaNUE6KA}/_ssgManifest.js +0 -0
@@ -0,0 +1,4 @@
1
+ module.exports=[768450,a=>{"use strict";var b=a.i(256857);let c={name:"corner-up-left",size:24,node:[["path",{d:"M20 20v-7a4 4 0 0 0-4-4H4",key:"1nkjon"}],["path",{d:"M9 14 4 9l5-5",key:"102s5s"}]]};c.node;let d=(0,b.default)(c);a.s(["CornerUpLeft",0,d],768450)},536236,a=>{"use strict";var b=a.i(662145),c=a.i(174897),d=a.i(368114),e=a.i(757061),f=a.i(149350),g=a.i(173628),h=a.i(218451),i=a.i(822404),j=a.i(425404),k=a.i(768450),l=a.i(270923),m=a.i(441852),n=a.i(763747),o=a.i(661661),p=a.i(28386),q=a.i(335732),r=a.i(443108),s=a.i(147758),t=a.i(192698),u=a.i(508113),v=a.i(319264),w=a.i(452696),x=a.i(618940),y=a.i(890728),z=a.i(258701),A=a.i(815122),B=a.i(544394),C=a.i(685698),D=a.i(107742),E=a.i(542920);let F={todo:["in-progress","paused"],"in-progress":["done","review","blocked","paused","todo"],review:[],blocked:["in-progress","cancelled"],paused:["in-progress","todo"],done:["todo"],cancelled:["todo"]},G={"in-progress":"start",review:"to review",done:"done",blocked:"blocked",paused:"pause",todo:"backlog",cancelled:"cancel"},H="w-full rounded-md border border-border bg-bg px-2.5 py-1.5 text-sm text-txt focus:border-accent/60 focus:outline-hidden";function I({task:a,rootParam:e,onDone:f}){let[g]=(0,c.useState)(a),[h,i]=(0,c.useState)(a.title),[j,k]=(0,c.useState)("—"===a.size?"":a.size),[l,m]=(0,c.useState)("—"===a.phase?"":a.phase),[n,o]=(0,c.useState)("—"===a.dependsOn?"":a.dependsOn),[p,q]=(0,c.useState)(a.due??""),[r,s]=(0,c.useState)(!1),[t,u]=(0,c.useState)(null),v=a=>"—"===a.trim()?"":a.trim();async function w(){let b={};if(h.trim()&&h.trim()!==g.title&&(b.title=h),j.trim()!==v(g.size)&&(b.size=j),l.trim()!==v(g.phase)&&(b.phase=l),n.trim()!==v(g.dependsOn)&&(b.dependsOn=n),(p||null)!==g.due&&(b.due=p||null),0===Object.keys(b).length)return f();s(!0),u(null);try{await (0,z.updateTask)(a.id,b,e),f()}catch(a){u(a.message),s(!1)}}return(0,b.jsxs)("form",{onSubmit:a=>{a.preventDefault(),w()},onKeyDown:a=>{"Escape"===a.key&&(a.stopPropagation(),f())},className:"flex flex-col gap-3 px-5 py-4 border-b border-border shrink-0 bg-surface2/40",children:[(0,b.jsxs)("label",{className:"flex flex-col gap-1 text-xs text-muted",children:["Title",(0,b.jsx)("input",{autoFocus:!0,value:h,onChange:a=>i(a.target.value),className:H})]}),(0,b.jsxs)("div",{className:"grid grid-cols-2 gap-3",children:[(0,b.jsxs)("label",{className:"flex flex-col gap-1 text-xs text-muted",children:["Size",(0,b.jsx)("input",{value:j,onChange:a=>k(a.target.value),placeholder:"S / M / L",className:H})]}),(0,b.jsxs)("label",{className:"flex flex-col gap-1 text-xs text-muted",children:["Due",(0,b.jsx)("input",{type:"date",value:p,onChange:a=>q(a.target.value),className:(0,d.cn)(H,"scheme-light dark:scheme-dark")})]})]}),(0,b.jsxs)("label",{className:"flex flex-col gap-1 text-xs text-muted",children:["Epic / phase",(0,b.jsx)("input",{value:l,onChange:a=>m(a.target.value),placeholder:"R054 — Item actions",className:H})]}),(0,b.jsxs)("label",{className:"flex flex-col gap-1 text-xs text-muted",children:["Depends on",(0,b.jsx)("input",{value:n,onChange:a=>o(a.target.value),placeholder:"T001, T002",className:(0,d.cn)(H,"font-mono")})]}),t&&(0,b.jsx)("p",{role:"alert",className:"text-xs text-danger",children:t}),(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)("button",{type:"submit",disabled:r,className:"text-xs px-2.5 py-1 rounded-sm bg-accent text-accent-fg transition-[filter] hover:brightness-110 disabled:opacity-40",children:"Save"}),(0,b.jsx)("button",{type:"button",onClick:f,disabled:r,className:"text-xs text-muted hover:text-txt",children:"Cancel"})]})]})}function J({taskId:a,onDone:d}){let{rootParam:e}=(0,B.useApp)(),[f,g]=(0,c.useState)(!1),[h,i]=(0,c.useState)(""),[l,m]=(0,c.useState)(!1),[n,o]=(0,c.useState)(null);async function p(b){m(!0),o(null);try{let c=await fetch(`/api/tasks/review${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({id:a,action:b,note:h})});if(!c.ok)throw Error((await c.json().catch(()=>null))?.error??`Request failed (${c.status})`);d()}catch(a){o(a.message),m(!1)}}return(0,b.jsxs)("div",{className:"flex flex-col gap-2 px-5 py-3 border-b border-border shrink-0 bg-accent/5",children:[(0,b.jsx)("p",{className:"text-xs text-muted",children:"Waiting for your review. Approving moves it to done; sending it back returns it to the queue with your note."}),f?(0,b.jsxs)("div",{className:"flex flex-col gap-2 animate-fade-in",children:[(0,b.jsx)("textarea",{autoFocus:!0,value:h,onChange:a=>i(a.target.value),rows:3,placeholder:"What needs to change? The agent reads this first.","aria-label":"Send back note",className:"w-full resize-none rounded-md border border-border bg-bg px-2.5 py-2 text-sm text-txt placeholder:text-muted focus:border-accent/60 focus:outline-hidden"}),(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsxs)("button",{onClick:()=>p("send-back"),disabled:l||!h.trim(),className:"inline-flex items-center gap-1.5 text-xs px-2.5 py-1 rounded-sm bg-amber/15 border border-amber/40 text-amber transition-colors hover:bg-amber/25 disabled:opacity-40",children:[(0,b.jsx)(k.CornerUpLeft,{className:"size-3.5"})," Send back"]}),(0,b.jsx)("button",{onClick:()=>{g(!1),i("")},disabled:l,className:"text-xs text-muted hover:text-txt",children:"Cancel"})]})]}):(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsxs)("button",{onClick:()=>p("approve"),disabled:l,className:"inline-flex items-center gap-1.5 text-xs px-2.5 py-1 rounded-sm bg-teal/15 border border-teal/40 text-teal transition-colors hover:bg-teal/25 disabled:opacity-40",children:[(0,b.jsx)(j.Check,{className:"size-3.5"})," Approve"]}),(0,b.jsxs)("button",{onClick:()=>g(!0),disabled:l,className:"inline-flex items-center gap-1.5 text-xs px-2.5 py-1 rounded-sm bg-surface2 border border-border text-muted transition-colors hover:text-txt hover:border-border2",children:[(0,b.jsx)(k.CornerUpLeft,{className:"size-3.5"})," Send back…"]})]}),n&&(0,b.jsx)("p",{role:"alert",className:"text-xs text-danger",children:n})]})}function K({entries:a}){return a.length?(0,b.jsxs)("div",{className:"flex flex-col gap-2 px-5 py-3 border-b border-border shrink-0",children:[(0,b.jsx)("p",{className:"font-mono text-[10px] uppercase tracking-widest text-muted",children:"Review history"}),(0,b.jsx)("ul",{className:"flex flex-col gap-2",children:[...a].reverse().map((a,c)=>(0,b.jsxs)("li",{className:"flex flex-col gap-0.5",children:[(0,b.jsxs)("span",{className:"flex items-center gap-2 text-xs",children:[(0,b.jsx)("span",{className:(0,d.cn)("font-medium","approved"===a.outcome?"text-teal":"text-amber"),children:"approved"===a.outcome?"Approved":"Changes requested"}),(0,b.jsx)("span",{className:"font-mono text-[10px] text-muted",children:a.at.replace("T"," ").replace(/:\d\dZ$/,"Z")})]}),a.note&&(0,b.jsx)("p",{className:"whitespace-pre-wrap text-xs text-muted",children:a.note})]},c))})]}):null}a.s(["TaskDetailPanel",0,function({task:a,onClose:j,onMove:k}){var H;let L,[M,N]=(0,c.useState)(a);a&&a!==M&&N(a);let O=M&&F[M.status]||[],{chats:P,showAbout:Q}=(0,C.useChats)(),{rootParam:R}=(0,B.useApp)(),S=M?(0,D.chatFor)(P,{kind:"task",id:M.id}):void 0,[T,U]=(0,c.useState)(null),V=!!M&&T===M.id,[W,X]=(0,c.useState)(null),[Y,Z]=(0,c.useState)(!1),$=(0,r.useStatusDefs)(),_=()=>{M&&(j(),Q({kind:"task",id:M.id}))};async function aa(){if(M){X(null);try{await (0,z.deleteTaskWithUndo)(M,R),j()}catch(a){X(a.message)}}}return(0,y.useItemCommands)(a&&M&&!V?`${M.id} \xb7 ${M.title}`:null,M?[{action:"edit",label:"Edit",run:()=>U(M.id)},{action:"status",label:"Change status…",run:()=>Z(!0)},{action:"chat",label:"Chat about task",run:_},{action:"remove",label:"Delete",run:()=>{aa()}}]:[]),(0,b.jsx)(e.Sheet,{open:!!a,onOpenChange:a=>{a||j()},children:(0,b.jsx)(e.SheetContent,{side:"right","aria-describedby":void 0,className:"p-0 gap-0 sm:max-w-[420px] border-border flex flex-col",children:M&&(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(t.ItemPanelHeader,{kicker:(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("span",{children:M.id}),(0,b.jsx)("span",{children:"· task"}),(0,b.jsx)(A.AgentMark,{attach:{kind:"task",id:M.id}})]}),title:(0,b.jsx)(e.SheetTitle,{className:"text-base font-semibold leading-snug text-txt",children:M.title}),menu:(0,b.jsxs)(q.DropdownMenu,{open:Y,onOpenChange:Z,children:[(0,b.jsx)(q.DropdownMenuTrigger,{asChild:!0,children:(0,b.jsx)("button",{type:"button","aria-label":`Actions for ${M.id}`,className:"ml-auto grid size-6 place-items-center rounded-md text-muted hover:bg-surface2 hover:text-txt",children:(0,b.jsx)(n.MoreHorizontal,{className:"size-4"})})}),(0,b.jsxs)(q.DropdownMenuContent,{align:"end",className:"w-44",children:[(0,b.jsxs)(q.DropdownMenuItem,{onSelect:()=>U(M.id),children:[(0,b.jsx)(o.Pencil,{})," Edit",(0,b.jsx)(q.DropdownMenuShortcut,{children:(0,y.itemKeyLabel)("edit")})]}),(0,b.jsxs)(q.DropdownMenuSub,{children:[(0,b.jsxs)(q.DropdownMenuSubTrigger,{children:[(0,b.jsx)(g.StatusIcon,{status:(0,s.displayStatus)(M)})," Status",(0,b.jsx)(q.DropdownMenuShortcut,{children:(0,y.itemKeyLabel)("status")})]}),(0,b.jsx)(q.DropdownMenuSubContent,{children:$.map(a=>(0,b.jsxs)(q.DropdownMenuItem,{disabled:a.id===(0,s.displayStatus)(M),onSelect:()=>k(M.id,a.id),children:[(0,b.jsx)(g.StatusIcon,{status:a.id})," ",a.label]},a.id))})]}),(0,b.jsxs)(q.DropdownMenuItem,{onSelect:_,children:[(0,b.jsx)(m.MessageSquare,{})," Chat about task",(0,b.jsx)(q.DropdownMenuShortcut,{children:(0,y.itemKeyLabel)("chat")})]}),(0,b.jsx)(q.DropdownMenuSeparator,{}),(0,b.jsxs)(q.DropdownMenuItem,{onSelect:aa,className:"text-danger focus:text-danger",children:[(0,b.jsx)(p.Trash2,{})," Delete",(0,b.jsx)(q.DropdownMenuShortcut,{children:(0,y.itemKeyLabel)("remove")})]})]})]}),properties:(L=(H=M).phase&&"—"!==H.phase?(0,v.epicOf)(H.phase):null,[{label:"Status",value:(0,b.jsx)(u.TaskStatusField,{task:H,chip:!0})},{label:"Owner",value:(0,b.jsx)(u.TaskOwnerField,{task:H})},{label:"Due",value:(0,b.jsx)(u.TaskDueField,{task:H,children:H.due?(0,b.jsx)(x.DueChip,{due:H.due,state:(0,w.dueState)(H.due,"done"===H.status?"done":"planned",(0,w.localToday)())}):(0,b.jsx)("span",{className:"text-muted",children:"—"})})},{label:"Size",value:(0,b.jsx)(u.TaskSizeField,{task:H})},{label:"Epic",value:L&&(0,b.jsxs)("span",{className:"flex min-w-0 items-center gap-1.5",children:[L.id&&(0,b.jsx)("span",{className:"font-mono text-[11px] text-muted",children:L.id}),(0,b.jsx)("span",{className:"truncate",children:L.title})]})}])}),W&&(0,b.jsx)("p",{role:"alert",className:"px-5 py-2 text-xs text-danger border-b border-border",children:W}),V&&(0,b.jsx)(I,{task:M,rootParam:R,onDone:()=>U(null)},`edit-${M.id}`),(0,b.jsxs)("div",{className:"flex flex-wrap items-center gap-2 px-5 py-3 border-b border-border shrink-0",children:[O.map(a=>(0,b.jsxs)("button",{onClick:()=>{k(M.id,a),j()},className:"inline-flex items-center gap-1.5 text-xs px-2.5 py-1 rounded-sm bg-surface2 border border-border text-muted hover:text-txt hover:border-border2 transition-colors",children:[(0,b.jsx)(g.StatusIcon,{status:a,className:"size-3"})," ",G[a]||a]},a)),(0,b.jsxs)("button",{onClick:()=>{j(),Q({kind:"task",id:M.id})},className:"ml-auto inline-flex items-center gap-1.5 text-xs px-2.5 py-1 rounded-sm bg-accent text-accent-fg transition-[filter] hover:brightness-110",children:[(0,b.jsx)(m.MessageSquare,{className:"size-3.5"})," ",S?"Open chat":"Chat about task"]})]}),"review"===M.status&&(0,b.jsx)(J,{taskId:M.id,onDone:j},`review-${M.id}`),(0,b.jsxs)("div",{className:"flex-1 overflow-y-auto",children:[(0,b.jsx)("div",{className:"px-5 py-4",children:M.raw?(0,b.jsx)(f.MarkdownRenderer,{content:function(a){let b=a.split("\n"),c=b.findIndex(a=>a.startsWith("# "));for(c=c<0?0:c+1;c<b.length&&(""===b[c].trim()||/^\*\*[^*]+:\*\*/.test(b[c]));)c++;return b.slice(c).join("\n")}(M.raw)}):(0,b.jsx)("p",{className:"text-sm text-muted",children:"No content available."})}),(0,b.jsxs)("section",{"aria-label":"Activity",className:"border-t border-border",children:[M.manualTests&&(0,b.jsxs)(i.default,{href:`/manual-tests#${M.id}`,onClick:j,className:"group flex items-center gap-2 px-5 py-2.5 border-b border-border shrink-0 text-xs text-muted hover:bg-surface2 hover:text-txt transition-colors",children:[(0,b.jsx)(l.FlaskConical,{className:"size-3.5"}),(0,b.jsxs)("span",{className:(0,d.cn)("font-mono",M.manualTests.done===M.manualTests.total&&"text-teal"),children:[M.manualTests.done,"/",M.manualTests.total]}),"manual tests ticked",(0,b.jsx)("span",{className:"ml-auto text-accent opacity-0 transition-opacity group-hover:opacity-100",children:"Open checklist →"})]}),(0,b.jsx)(K,{entries:(0,E.reviewHistory)(M.raw??"")}),(0,b.jsx)(h.TaskSessions,{taskId:M.id,onNavigate:j},M.id)]})]})]})})})}])},508113,a=>{"use strict";var b=a.i(662145),c=a.i(544394),d=a.i(787714),e=a.i(813722),f=a.i(173628),g=a.i(443108),h=a.i(147758),i=a.i(319264),j=a.i(853775);let k=["XS","S","M","L","XL"],l=(0,b.jsx)("span",{className:"text-muted",children:"—"});a.s(["TaskDueField",0,function({task:a,children:e}){let{updateTaskFields:f}=(0,c.useApp)();return(0,b.jsx)(d.InlineDate,{label:`Due date of ${a.id}`,value:a.due,onChange:b=>f(a.id,{due:b}),children:e??(a.due?(0,b.jsx)("span",{className:"font-mono text-xs",children:a.due}):l)})},"TaskOwnerField",0,function({task:a,children:f}){let{updateTaskFields:g,board:h}=(0,c.useApp)(),i=[...new Set(["ai:claude",...Object.values(h??{}).flat().map(a=>a.owner).filter(a=>!!a?.startsWith("ai:"))])].sort(),k=[{value:"human",label:"Human",node:(0,b.jsx)(e.OwnerChip,{owner:"human",className:"text-xs"})},...i.map(a=>({value:a,label:(0,j.ownerLabel)(a),node:(0,b.jsx)(e.OwnerChip,{owner:a,className:"text-xs"})})),{value:"",label:"No owner",node:(0,b.jsx)("span",{className:"text-muted",children:"No owner"})}];return(0,b.jsx)(d.InlineSelect,{label:`Owner of ${a.id}`,value:a.owner??"",options:k,onChange:b=>g(a.id,{owner:b||null}),children:f??(a.owner?(0,b.jsx)(e.OwnerChip,{owner:a.owner,className:"text-xs"}):l)})},"TaskSizeField",0,function({task:a,children:e}){let{updateTaskFields:f}=(0,c.useApp)(),g=(0,i.sizeOf)(a),h=[...k.map(a=>({value:a,label:a,node:(0,b.jsx)("span",{className:"font-mono",children:a})})),{value:"",label:"No size",node:(0,b.jsx)("span",{className:"text-muted",children:"No size"})}];return(0,b.jsx)(d.InlineSelect,{label:`Size of ${a.id}`,value:g??"",options:h,onChange:b=>f(a.id,{size:b||"—"}),children:e??(g?(0,b.jsx)("span",{className:"font-mono text-xs",children:g}):l)})},"TaskStatusField",0,function({task:a,chip:e=!1}){let{moveTask:i}=(0,c.useApp)(),j=(0,g.useStatusDefs)(),k=(0,h.displayStatus)(a),l=j.map(a=>({value:a.id,label:a.label,node:(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(f.StatusIcon,{status:a.id}),a.label]})}));return(0,b.jsx)(d.InlineSelect,{label:`Status of ${a.id}`,value:k,options:l,onChange:b=>i(a.id,b),children:e?(0,b.jsx)(f.StatusChip,{status:k}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(f.StatusIcon,{status:k}),(0,b.jsx)("span",{className:"truncate text-xs",children:j.find(a=>a.id===k)?.label??k})]})})}])},218451,a=>{"use strict";var b=a.i(662145),c=a.i(174897),d=a.i(913975),e=a.i(795667),f=a.i(892678),g=a.i(544394),h=a.i(578520);a.s(["TaskSessions",0,function({taskId:a,onNavigate:i}){let{rootParam:j}=(0,g.useApp)(),k=(0,d.useRouter)(),[l,m]=(0,c.useState)(null);return(0,c.useEffect)(()=>{let b=j?`${j}&`:"?";fetch(`/api/sessions${b}taskId=${encodeURIComponent(a)}`).then(a=>a.json()).then(a=>m(Array.isArray(a)?a:[])).catch(()=>m([]))},[j,a]),(0,b.jsxs)("div",{className:"px-5 py-3 border-b border-border shrink-0",children:[(0,b.jsx)("p",{className:"mb-2 text-xs font-mono uppercase tracking-wide text-muted",children:"Sessions"}),null===l?null:0===l.length?(0,b.jsx)("p",{className:"text-xs text-muted",children:"No recorded sessions"}):(0,b.jsx)("div",{className:"flex max-h-40 flex-col gap-1 overflow-y-auto",children:l.map(a=>(0,b.jsxs)("button",{onClick:()=>{i(),k.push(`/activity?session=${encodeURIComponent(a.id)}`)},className:"flex items-center gap-2 rounded-sm px-2 py-1 text-left text-xs hover:bg-surface2",children:["ai"===a.actor?(0,b.jsx)(e.Bot,{"aria-hidden":!0,className:"size-3.5 shrink-0 text-muted"}):(0,b.jsx)(f.User,{"aria-hidden":!0,className:"size-3.5 shrink-0 text-muted"}),(0,b.jsx)("span",{className:"sr-only",children:"ai"===a.actor?"Agent session":"Human session"}),(0,b.jsx)("span",{className:"shrink-0 font-mono text-muted",children:(0,h.timeAgo)(a.start)}),(0,b.jsx)("span",{className:"truncate text-txt",children:a.headline})]},a.id))})]})}])},258701,a=>{"use strict";var b=a.i(269769);async function c(a,b){let c=await fetch(a,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(b)}),d=await c.json().catch(()=>null);if(!c.ok)throw Error(d?.error??`Request failed (${c.status})`);return d}async function d(a,d){let{task:e,links:f}=await c(`/api/tasks/delete${d}`,{id:a.id});(0,b.undoToast)(`Deleted ${e.id}`,async()=>{await c(`/api/tasks/restore${d}`,{file:e.file,raw:e.raw,links:f})})}a.s(["deleteTaskWithUndo",0,d,"updateTask",0,(a,b,d)=>c(`/api/tasks/update${d}`,{id:a,patch:b}).then(a=>a.task)])},319264,a=>{"use strict";let b=["status","epic","size","due","deps","tests","agent","owner"],c=["board","table","epic","timeline"],d={board:"Board",table:"Table",epic:"By epic",timeline:"Timeline"};function e(a){let c={kind:a,filters:[],sorts:[],group:"epic",subGroup:"none",q:"",properties:[...b],scale:"active"};return"board"===a?{...c,group:"none",subGroup:"epic",properties:["epic","size","deps","tests","agent","owner"]}:"table"===a?{...c,sorts:[{prop:"status",dir:"asc"},{prop:"id",dir:"asc"}]}:c}let f=c.map(a=>({...e(a),id:a,name:d[a]})),g=["in-progress","review","todo","blocked","paused","done","cancelled"],h={"in-progress":"In progress",review:"Review",todo:"Todo",blocked:"Blocked",paused:"Paused",done:"Done",cancelled:"Cancelled"},i=["XS","S","M","L","XL"],j=(a,b)=>a.localeCompare(b,void 0,{numeric:!0}),k=a=>"done"!==a.status&&"cancelled"!==a.status;function l(a){return[...new Set((a.dependsOn.match(/\bT\d+\b/gi)??[]).map(a=>a.toUpperCase()))]}function m(a){let b=a.trim().match(/^(R\d+)\b\s*(?:[—–:-]\s*)?(.*)$/i);return b?{id:b[1].toUpperCase(),title:b[2].trim()}:{id:null,title:a.trim()}}function n(a){let b=a.size.trim().match(/^(XS|XL|S|M|L)\b/i);return b?b[1].toUpperCase():null}function o(a,b){return"todo"===a.status&&l(a).every(a=>b.get(a)?.status==="done")}let p=["status","epic","size","due","deps","tests","agent","ready","owner"],q=["is","is-not","before","after","is-set","not-set"],r=["status","id","epic","size","due","title"],s=["status","epic","size","owner","none"],t=["epic","size","none"],u=["active","day","week"],v=(a,b,c)=>null!==b&&a.includes(b)?b:c,w=a=>a.map(a=>("desc"===a.dir?"-":"")+a.prop).join(",");a.s(["DEFAULT_VIEWS",0,f,"applyView",0,function(a,b,c){let d=new Map(a.map(a=>[a.id,a])),e=b.filters.some(a=>"status"===a.prop&&"is"===a.op&&a.value.includes("cancelled")),f=b.q.trim().toLowerCase();return a.filter(a=>e||"cancelled"!==a.status).filter(a=>!f||a.id.toLowerCase().includes(f)||a.title.toLowerCase().includes(f)).filter(a=>b.filters.every(b=>(function(a,b,c,d){let e=a=>"is"===b.op?b.value.includes(a):"is-not"!==b.op||!b.value.includes(a),f=a=>"is-set"===b.op?a:"not-set"!==b.op||!a;switch(b.prop){case"status":return e(a.customStatus??a.status);case"epic":return e(m(a.phase).id??"none");case"size":return e(n(a)??"none");case"due":if("before"===b.op)return!!a.due&&!!b.value[0]&&a.due<b.value[0];if("after"===b.op)return!!a.due&&!!b.value[0]&&a.due>b.value[0];return f(!!a.due);case"deps":return f(l(a).length>0);case"tests":return f(null!==a.manualTests);case"agent":return f(c.agentTasks.has(a.id));case"ready":return f(o(a,d));case"owner":return e("human"===a.owner?"human":a.owner?.startsWith("ai:")?"ai":"none")}})(a,b,c,d))).sort((a,c)=>{for(let d of b.sorts){let b=function(a,b,c){switch(c){case"status":return g.indexOf(a.status)-g.indexOf(b.status);case"id":return j(a.id,b.id);case"title":return a.title.localeCompare(b.title);case"epic":{let c=m(a.phase).id,d=m(b.phase).id;return c===d?0:null===c?1:null===d?-1:j(c,d)}case"size":{let c=i.indexOf(n(a)??""),d=i.indexOf(n(b)??"");return c===d?0:c<0?1:d<0?-1:c-d}case"due":return a.due===b.due?0:null===a.due?1:null===b.due?-1:a.due.localeCompare(b.due)}}(a,c,d.prop);if(b)return"desc"!==d.dir||function(a,b,c){let d=a=>"due"===c?a.due:"epic"===c?m(a.phase).id:"size"===c?i.includes(n(a)??"")?"x":null:"x";return null===d(a)!=(null===d(b))}(a,c,d.prop)?b:-b}return j(a.id,c.id)})},"depOutline",0,function(a){let b=new Set(a.map(a=>a.id)),c=new Map;for(let d of a){let a=l(d).find(a=>a!==d.id&&b.has(a));a&&c.set(d.id,a)}let d=new Map;for(let b of a){let a=c.get(b.id);a&&d.set(a,[...d.get(a)??[],b])}let e=[],f=new Set,g=(a,b,c)=>{if(!f.has(a.id))for(let h of(f.add(a.id),e.push({task:a,depth:Math.min(b,4),alsoAfter:l(a).filter(b=>b!==c&&b!==a.id)}),d.get(a.id)??[]))g(h,b+1,a.id)};for(let b of a)c.has(b.id)||g(b,0,null);for(let b of a)g(b,0,null);return e},"epicOf",0,m,"foldAxis",0,function(a,b){let c=a.map(a=>{let b=Math.max((a.endMs-a.startMs)*.05,6e4);return{startMs:a.startMs-b,endMs:a.endMs+b}}).sort((a,b)=>a.startMs-b.startMs),d=[];for(let a of c){let c=d[d.length-1];c&&a.startMs-c.endMs<b?c.endMs=Math.max(c.endMs,a.endMs):d.push({...a})}return d},"fromParams",0,function(a){let d=v(c,a.get("view"),"board"),f=e(d),g=a.get("s"),h=a.get("f"),i=a.get("p");return{kind:d,group:v(s,a.get("g"),f.group),subGroup:v(t,a.get("sg"),f.subGroup),sorts:null===g?f.sorts:g.split(",").filter(Boolean).flatMap(a=>{let b=a.startsWith("-"),c=b?a.slice(1):a;return r.includes(c)?[{prop:c,dir:b?"desc":"asc"}]:[]}),filters:h?h.split(";").flatMap(a=>{let[b,c,...d]=a.split(":");if(!p.includes(b)||!q.includes(c))return[];let e=d.join(":"),f=[];try{f=d.length?e.split("|").map(decodeURIComponent):[]}catch{return[]}return[{prop:b,op:c,value:f}]}):[],q:a.get("q")??"",properties:null===i?f.properties:[...new Set(i.split(",").filter(a=>b.includes(a)))],scale:v(u,a.get("sc"),f.scale)}},"groupTasks",0,function(a,b,c){if(!a.length)return[];if("none"===b)return[{key:"all",label:"All tasks",epicId:null,tasks:a}];let d=new Map,e=a=>"status"===b?a.customStatus??a.status:"size"===b?n(a)??"none":"owner"===b?a.owner??"none":m(a.phase).id??"none";for(let b of a){let a=e(b),c=d.get(a);c?c.push(b):d.set(a,[b])}let f=(a,b,c=null)=>({key:a,label:b,epicId:c,tasks:d.get(a)??[]});if("status"===b)return c?c.filter(a=>d.has(a.id)).map(a=>f(a.id,a.label)):g.filter(a=>d.has(a)).map(a=>f(a,h[a]));if("size"===b)return[...i,"none"].filter(a=>d.has(a)).map(a=>f(a,"none"===a?"No size":a));if("owner"===b)return["human",...[...d.keys()].filter(a=>a.startsWith("ai:")).sort(),"none"].filter(a=>d.has(a)).map(a=>f(a,"human"===a?"Human":"none"===a?"No owner":`${a.slice(3)} (AI)`));let l=a=>(d.get(a)??[]).filter(k).map(a=>a.id).sort(j)[0]??null,o=[...d.keys()].filter(a=>"none"!==a).sort((a,b)=>{let c=l(a),d=l(b);return c&&d?j(c,d)||j(a,b):c||d?c?-1:1:j(b,a)}).map(a=>{let b=(d.get(a)??[]).map(a=>m(a.phase).title).find(Boolean);return f(a,b||a,a)});return d.has("none")&&o.push(f("none","No epic")),o},"isDirty",0,function(a,b){let c=a=>JSON.stringify([a.kind,a.filters,a.sorts,a.group,a.subGroup,[...a.properties].sort(),a.scale]);return c(a)!==c(b)},"isReady",0,o,"sizeOf",0,n,"timelineBars",0,function(a,b,c){let d=new Map;for(let a of b){if("task_updated"!==a.type||!a.taskId)continue;let b=Date.parse(a.timestamp);if(Number.isNaN(b))continue;let c=d.get(a.taskId)??[];c.push({ms:b,status:a.taskStatus}),d.set(a.taskId,c)}let e=[];for(let b of a){let a=d.get(b.id)?.sort((a,b)=>a.ms-b.ms);if(!a?.length)continue;let f=(a.find(a=>"in-progress"===a.status)??a[0]).ms,g=a[a.length-1].ms,h=a.filter(a=>"done"===a.status).pop()?.ms,i="done"!==b.status&&"cancelled"!==b.status,j="done"===b.status?h??g:i?c:g;e.push({taskId:b.id,epicId:m(b.phase).id,startMs:f,endMs:Math.max(j,f),status:b.status,open:i})}return e},"toParams",0,function(a){let b=e(a.kind),c=new URLSearchParams;return"board"!==a.kind&&c.set("view",a.kind),a.group!==b.group&&c.set("g",a.group),a.subGroup!==b.subGroup&&c.set("sg",a.subGroup),w(a.sorts)!==w(b.sorts)&&c.set("s",w(a.sorts)),a.filters.length&&c.set("f",a.filters.map(a=>[a.prop,a.op,...a.value.length?[a.value.map(encodeURIComponent).join("|")]:[]].join(":")).join(";")),a.q&&c.set("q",a.q),a.properties.join(",")!==b.properties.join(",")&&c.set("p",a.properties.join(",")),a.scale!==b.scale&&c.set("sc",a.scale),c}])},542920,a=>{"use strict";let b=/^###\s+(\S+)\s+—\s+(approved|changes requested)\s*$/;function c(a){let c=a.split("\n"),d=function(a){let b,c=(b=!1,a.map(a=>/^\s*```/.test(a)?(b=!b,!0):b)),d=a.findIndex((a,b)=>!c[b]&&"## Review"===a.trim());if(d<0)return null;let e=a.findIndex((a,b)=>b>d&&!c[b]&&/^##\s/.test(a));return[d,e<0?a.length:e]}(c);if(!d)return[];let e=[];for(let a of c.slice(d[0]+1,d[1])){let c=a.match(b);if(c)e.push({at:c[1],outcome:c[2],note:""});else if(e.length){let b=e[e.length-1];b.note=b.note?`${b.note}
2
+ ${a}`:a}}return e.map(a=>({...a,note:a.note.trim()}))}a.s(["latestReview",0,function(a){let b=c(a);return b[b.length-1]??null},"reviewHistory",0,c])}];
3
+
4
+ //# sourceMappingURL=_071j6mr._.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../node_modules/.pnpm/lucide-react%401.48.0_react%4019.3.0/node_modules/lucide-react/src/icons/corner-up-left.ts","../../../../src/components/board/TaskDetailPanel.tsx","../../../../src/components/board/TaskFields.tsx","../../../../src/components/board/TaskSessions.tsx","../../../../src/components/board/task-api.ts","../../../../src/lib/board-views.ts","../../../../src/lib/review.ts"],"sourcesContent":["import createLucideIcon from '../createLucideIcon';\nimport type { LucideIconNode, LucideIconData } from '../types';\n\nexport const __iconData: LucideIconData = {\n name: 'corner-up-left',\n size: 24,\n node: [\n ['path', { d: 'M20 20v-7a4 4 0 0 0-4-4H4', key: '1nkjon' }],\n ['path', { d: 'M9 14 4 9l5-5', key: '102s5s' }],\n ],\n};\n\n/**\n * @deprecated Access `__iconData` instead.\n */\nexport const __iconNode: LucideIconNode[] = __iconData.node;\n\n/**\n * @component @name CornerUpLeft\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMjAgMjB2LTdhNCA0IDAgMCAwLTQtNEg0IiAvPgogIDxwYXRoIGQ9Ik05IDE0IDQgOWw1LTUiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/corner-up-left\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst CornerUpLeft = createLucideIcon(__iconData);\n\nexport default CornerUpLeft;\n","\"use client\"\n\nimport { useState } from \"react\"\nimport { cn } from \"@/lib/utils\"\nimport { Sheet, SheetContent, SheetTitle } from \"@/components/ui/sheet\"\nimport { MarkdownRenderer } from \"@/components/docs/MarkdownRenderer\"\nimport type { Task } from \"@/types\"\nimport { StatusIcon } from \"@/components/shared/StatusIcon\"\nimport { TaskSessions } from \"./TaskSessions\"\nimport Link from \"next/link\"\nimport { Check, CornerUpLeft, FlaskConical, MessageSquare, MoreHorizontal, Pencil, Trash2 } from \"lucide-react\"\nimport { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger } from \"@/components/ui/dropdown-menu\"\nimport { useStatusDefs } from \"@/components/shared/status-defs\"\nimport { displayStatus } from \"@/lib/statuses\"\nimport { ItemPanelHeader, type ItemProperty } from \"@/components/shared/ItemPanelHeader\"\nimport { TaskDueField, TaskOwnerField, TaskSizeField, TaskStatusField } from \"./TaskFields\"\nimport { epicOf } from \"@/lib/board-views\"\nimport { localToday, dueState } from \"@/lib/roadmap-health\"\nimport { DueChip } from \"@/components/roadmap/RoadmapNodes\"\nimport { itemKeyLabel, useItemCommands } from \"@/components/shared/item-commands\"\nimport { deleteTaskWithUndo, updateTask } from \"./task-api\"\nimport type { TaskMetaPatch } from \"@/types\"\nimport { AgentMark } from \"@/components/chat/AgentMark\"\nimport { useApp } from \"@/context/AppContext\"\nimport { useChats } from \"@/context/ChatContext\"\nimport { chatFor } from \"@/lib/chats\"\nimport { reviewHistory, type ReviewEntry } from \"@/lib/review\"\n\nconst NEXT_STATUS: Record<string, string[]> = {\n todo: [\"in-progress\", \"paused\"],\n \"in-progress\": [\"done\", \"review\", \"blocked\", \"paused\", \"todo\"],\n // Review tasks get Approve / Send back instead (ReviewActions)\n review: [],\n blocked: [\"in-progress\", \"cancelled\"],\n paused: [\"in-progress\", \"todo\"],\n done: [\"todo\"],\n cancelled: [\"todo\"],\n}\n\nconst STATUS_LABELS: Record<string, string> = {\n \"in-progress\": \"start\",\n review: \"to review\",\n done: \"done\",\n blocked: \"blocked\",\n paused: \"pause\",\n todo: \"backlog\",\n cancelled: \"cancel\",\n}\n\n\ninterface TaskDetailPanelProps {\n task: Task | null\n onClose: () => void\n onMove: (id: string, status: string) => void\n}\n\nexport function TaskDetailPanel({ task: openTask, onClose, onMove }: TaskDetailPanelProps) {\n // Keep the last task rendered while the sheet slides out\n const [task, setTask] = useState(openTask)\n if (openTask && openTask !== task) setTask(openTask)\n\n const nextStatuses = task ? NEXT_STATUS[task.status] || [] : []\n const { chats, showAbout } = useChats()\n const { rootParam } = useApp()\n const chat = task ? chatFor(chats, { kind: \"task\", id: task.id }) : undefined\n // the edit form shows while this matches the open task\n const [editingId, setEditingId] = useState<string | null>(null)\n const editing = !!task && editingId === task.id\n const [error, setError] = useState<string | null>(null)\n const [menuOpen, setMenuOpen] = useState(false)\n const statusDefs = useStatusDefs()\n const chatAbout = () => { if (task) { onClose(); showAbout({ kind: \"task\", id: task.id }) } }\n useItemCommands(openTask && task && !editing ? `${task.id} · ${task.title}` : null, task ? [\n { action: \"edit\", label: \"Edit\", run: () => setEditingId(task.id) },\n { action: \"status\", label: \"Change status…\", run: () => setMenuOpen(true) },\n { action: \"chat\", label: \"Chat about task\", run: chatAbout },\n { action: \"remove\", label: \"Delete\", run: () => { remove() } },\n ] : [])\n\n async function remove() {\n if (!task) return\n setError(null)\n try {\n await deleteTaskWithUndo(task, rootParam)\n onClose()\n } catch (e) {\n setError((e as Error).message)\n }\n }\n\n return (\n <Sheet open={!!openTask} onOpenChange={(open) => { if (!open) onClose() }}>\n <SheetContent side=\"right\" aria-describedby={undefined} className=\"p-0 gap-0 sm:max-w-[420px] border-border flex flex-col\">\n {task && (\n <>\n <ItemPanelHeader\n kicker={<><span>{task.id}</span><span>· task</span><AgentMark attach={{ kind: \"task\", id: task.id }} /></>}\n title={<SheetTitle className=\"text-base font-semibold leading-snug text-txt\">{task.title}</SheetTitle>}\n menu={\n <DropdownMenu open={menuOpen} onOpenChange={setMenuOpen}>\n <DropdownMenuTrigger asChild>\n <button type=\"button\" aria-label={`Actions for ${task.id}`} className=\"ml-auto grid size-6 place-items-center rounded-md text-muted hover:bg-surface2 hover:text-txt\">\n <MoreHorizontal className=\"size-4\" />\n </button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\" className=\"w-44\">\n <DropdownMenuItem onSelect={() => setEditingId(task.id)}><Pencil /> Edit<DropdownMenuShortcut>{itemKeyLabel(\"edit\")}</DropdownMenuShortcut></DropdownMenuItem>\n <DropdownMenuSub>\n <DropdownMenuSubTrigger><StatusIcon status={displayStatus(task)} /> Status<DropdownMenuShortcut>{itemKeyLabel(\"status\")}</DropdownMenuShortcut></DropdownMenuSubTrigger>\n <DropdownMenuSubContent>\n {statusDefs.map((d) => (\n <DropdownMenuItem key={d.id} disabled={d.id === displayStatus(task)} onSelect={() => onMove(task.id, d.id)}>\n <StatusIcon status={d.id} /> {d.label}\n </DropdownMenuItem>\n ))}\n </DropdownMenuSubContent>\n </DropdownMenuSub>\n <DropdownMenuItem onSelect={chatAbout}><MessageSquare /> Chat about task<DropdownMenuShortcut>{itemKeyLabel(\"chat\")}</DropdownMenuShortcut></DropdownMenuItem>\n <DropdownMenuSeparator />\n <DropdownMenuItem onSelect={remove} className=\"text-danger focus:text-danger\"><Trash2 /> Delete<DropdownMenuShortcut>{itemKeyLabel(\"remove\")}</DropdownMenuShortcut></DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n }\n properties={taskProperties(task)}\n />\n\n {error && <p role=\"alert\" className=\"px-5 py-2 text-xs text-danger border-b border-border\">{error}</p>}\n\n {editing && <TaskEditForm key={`edit-${task.id}`} task={task} rootParam={rootParam} onDone={() => setEditingId(null)} />}\n\n {/* Quick actions */}\n <div className=\"flex flex-wrap items-center gap-2 px-5 py-3 border-b border-border shrink-0\">\n {nextStatuses.map((s) => (\n <button\n key={s}\n onClick={() => { onMove(task.id, s); onClose() }}\n className=\"inline-flex items-center gap-1.5 text-xs px-2.5 py-1 rounded-sm bg-surface2 border border-border text-muted hover:text-txt hover:border-border2 transition-colors\"\n >\n <StatusIcon status={s as Task[\"status\"]} className=\"size-3\" /> {STATUS_LABELS[s] || s}\n </button>\n ))}\n <button\n onClick={() => { onClose(); showAbout({ kind: \"task\", id: task.id }) }}\n className=\"ml-auto inline-flex items-center gap-1.5 text-xs px-2.5 py-1 rounded-sm bg-accent text-accent-fg transition-[filter] hover:brightness-110\"\n >\n <MessageSquare className=\"size-3.5\" /> {chat ? \"Open chat\" : \"Chat about task\"}\n </button>\n </div>\n\n {task.status === \"review\" && <ReviewActions key={`review-${task.id}`} taskId={task.id} onDone={onClose} />}\n\n {/* Body, then activity: one scroll area */}\n <div className=\"flex-1 overflow-y-auto\">\n <div className=\"px-5 py-4\">\n {task.raw ? (\n <MarkdownRenderer content={bodyOf(task.raw)} />\n ) : (\n <p className=\"text-sm text-muted\">No content available.</p>\n )}\n </div>\n <section aria-label=\"Activity\" className=\"border-t border-border\">\n {task.manualTests && (\n <Link\n href={`/manual-tests#${task.id}`}\n onClick={onClose}\n className=\"group flex items-center gap-2 px-5 py-2.5 border-b border-border shrink-0 text-xs text-muted hover:bg-surface2 hover:text-txt transition-colors\"\n >\n <FlaskConical className=\"size-3.5\" />\n <span className={cn(\"font-mono\", task.manualTests.done === task.manualTests.total && \"text-teal\")}>\n {task.manualTests.done}/{task.manualTests.total}\n </span>\n manual tests ticked\n <span className=\"ml-auto text-accent opacity-0 transition-opacity group-hover:opacity-100\">Open checklist →</span>\n </Link>\n )}\n\n <ReviewHistory entries={reviewHistory(task.raw ?? \"\")} />\n\n <TaskSessions key={task.id} taskId={task.id} onNavigate={onClose} />\n </section>\n </div>\n </>\n )}\n </SheetContent>\n </Sheet>\n )\n}\n\n/** The file without its H1 and **Key:** block: the header already shows those. */\nfunction bodyOf(raw: string): string {\n const lines = raw.split(\"\\n\")\n let i = lines.findIndex((l) => l.startsWith(\"# \"))\n i = i < 0 ? 0 : i + 1\n while (i < lines.length && (lines[i].trim() === \"\" || /^\\*\\*[^*]+:\\*\\*/.test(lines[i]))) i++\n return lines.slice(i).join(\"\\n\")\n}\n\n/** Status · owner · due · size · epic, in the shared header grid. */\nfunction taskProperties(task: Task): ItemProperty[] {\n const epic = task.phase && task.phase !== \"—\" ? epicOf(task.phase) : null\n return [\n { label: \"Status\", value: <TaskStatusField task={task} chip /> },\n { label: \"Owner\", value: <TaskOwnerField task={task} /> },\n { label: \"Due\", value: <TaskDueField task={task}>{task.due ? <DueChip due={task.due} state={dueState(task.due, task.status === \"done\" ? \"done\" : \"planned\", localToday())} /> : <span className=\"text-muted\">—</span>}</TaskDueField> },\n { label: \"Size\", value: <TaskSizeField task={task} /> },\n { label: \"Epic\", value: epic && <span className=\"flex min-w-0 items-center gap-1.5\">{epic.id && <span className=\"font-mono text-[11px] text-muted\">{epic.id}</span>}<span className=\"truncate\">{epic.title}</span></span> },\n ]\n}\n\nconst FIELD = \"w-full rounded-md border border-border bg-bg px-2.5 py-1.5 text-sm text-txt focus:border-accent/60 focus:outline-hidden\"\n\n/** Title and meta fields; sends only what changed, so the body and other fields stay as they are. */\nfunction TaskEditForm({ task, rootParam, onDone }: { task: Task; rootParam: string; onDone: () => void }) {\n const [base] = useState(task)\n const [title, setTitle] = useState(task.title)\n const [size, setSize] = useState(task.size === \"—\" ? \"\" : task.size)\n const [phase, setPhase] = useState(task.phase === \"—\" ? \"\" : task.phase)\n const [dependsOn, setDependsOn] = useState(task.dependsOn === \"—\" ? \"\" : task.dependsOn)\n const [due, setDue] = useState(task.due ?? \"\")\n const [busy, setBusy] = useState(false)\n const [error, setError] = useState<string | null>(null)\n const orDash = (v: string) => (v.trim() === \"—\" ? \"\" : v.trim())\n\n async function save() {\n const patch: TaskMetaPatch = {}\n if (title.trim() && title.trim() !== base.title) patch.title = title\n if (size.trim() !== orDash(base.size)) patch.size = size\n if (phase.trim() !== orDash(base.phase)) patch.phase = phase\n if (dependsOn.trim() !== orDash(base.dependsOn)) patch.dependsOn = dependsOn\n if ((due || null) !== base.due) patch.due = due || null\n if (Object.keys(patch).length === 0) return onDone()\n setBusy(true)\n setError(null)\n try {\n await updateTask(task.id, patch, rootParam)\n onDone()\n } catch (e) {\n setError((e as Error).message)\n setBusy(false)\n }\n }\n\n return (\n <form\n onSubmit={(e) => { e.preventDefault(); save() }}\n onKeyDown={(e) => { if (e.key === \"Escape\") { e.stopPropagation(); onDone() } }}\n className=\"flex flex-col gap-3 px-5 py-4 border-b border-border shrink-0 bg-surface2/40\"\n >\n <label className=\"flex flex-col gap-1 text-xs text-muted\">\n Title\n <input autoFocus value={title} onChange={(e) => setTitle(e.target.value)} className={FIELD} />\n </label>\n <div className=\"grid grid-cols-2 gap-3\">\n <label className=\"flex flex-col gap-1 text-xs text-muted\">\n Size\n <input value={size} onChange={(e) => setSize(e.target.value)} placeholder=\"S / M / L\" className={FIELD} />\n </label>\n <label className=\"flex flex-col gap-1 text-xs text-muted\">\n Due\n <input type=\"date\" value={due} onChange={(e) => setDue(e.target.value)} className={cn(FIELD, \"scheme-light dark:scheme-dark\")} />\n </label>\n </div>\n <label className=\"flex flex-col gap-1 text-xs text-muted\">\n Epic / phase\n <input value={phase} onChange={(e) => setPhase(e.target.value)} placeholder=\"R054 — Item actions\" className={FIELD} />\n </label>\n <label className=\"flex flex-col gap-1 text-xs text-muted\">\n Depends on\n <input value={dependsOn} onChange={(e) => setDependsOn(e.target.value)} placeholder=\"T001, T002\" className={cn(FIELD, \"font-mono\")} />\n </label>\n {error && <p role=\"alert\" className=\"text-xs text-danger\">{error}</p>}\n <div className=\"flex items-center gap-2\">\n <button type=\"submit\" disabled={busy} className=\"text-xs px-2.5 py-1 rounded-sm bg-accent text-accent-fg transition-[filter] hover:brightness-110 disabled:opacity-40\">Save</button>\n <button type=\"button\" onClick={onDone} disabled={busy} className=\"text-xs text-muted hover:text-txt\">Cancel</button>\n </div>\n </form>\n )\n}\n\n/** Approve (→ done) or send back with a note (→ todo) a task waiting in Review. */\nfunction ReviewActions({ taskId, onDone }: { taskId: string; onDone: () => void }) {\n const { rootParam } = useApp()\n const [sendingBack, setSendingBack] = useState(false)\n const [note, setNote] = useState(\"\")\n const [busy, setBusy] = useState(false)\n const [error, setError] = useState<string | null>(null)\n\n async function act(action: \"approve\" | \"send-back\") {\n setBusy(true)\n setError(null)\n try {\n const res = await fetch(`/api/tasks/review${rootParam}`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({ id: taskId, action, note }),\n })\n if (!res.ok) throw new Error((await res.json().catch(() => null))?.error ?? `Request failed (${res.status})`)\n onDone()\n } catch (e) {\n setError((e as Error).message)\n setBusy(false)\n }\n }\n\n return (\n <div className=\"flex flex-col gap-2 px-5 py-3 border-b border-border shrink-0 bg-accent/5\">\n <p className=\"text-xs text-muted\">Waiting for your review. Approving moves it to done; sending it back returns it to the queue with your note.</p>\n {sendingBack ? (\n <div className=\"flex flex-col gap-2 animate-fade-in\">\n <textarea\n autoFocus\n value={note}\n onChange={(e) => setNote(e.target.value)}\n rows={3}\n placeholder=\"What needs to change? The agent reads this first.\"\n aria-label=\"Send back note\"\n className=\"w-full resize-none rounded-md border border-border bg-bg px-2.5 py-2 text-sm text-txt placeholder:text-muted focus:border-accent/60 focus:outline-hidden\"\n />\n <div className=\"flex items-center gap-2\">\n <button\n onClick={() => act(\"send-back\")}\n disabled={busy || !note.trim()}\n className=\"inline-flex items-center gap-1.5 text-xs px-2.5 py-1 rounded-sm bg-amber/15 border border-amber/40 text-amber transition-colors hover:bg-amber/25 disabled:opacity-40\"\n >\n <CornerUpLeft className=\"size-3.5\" /> Send back\n </button>\n <button onClick={() => { setSendingBack(false); setNote(\"\") }} disabled={busy} className=\"text-xs text-muted hover:text-txt\">Cancel</button>\n </div>\n </div>\n ) : (\n <div className=\"flex items-center gap-2\">\n <button\n onClick={() => act(\"approve\")}\n disabled={busy}\n className=\"inline-flex items-center gap-1.5 text-xs px-2.5 py-1 rounded-sm bg-teal/15 border border-teal/40 text-teal transition-colors hover:bg-teal/25 disabled:opacity-40\"\n >\n <Check className=\"size-3.5\" /> Approve\n </button>\n <button\n onClick={() => setSendingBack(true)}\n disabled={busy}\n className=\"inline-flex items-center gap-1.5 text-xs px-2.5 py-1 rounded-sm bg-surface2 border border-border text-muted transition-colors hover:text-txt hover:border-border2\"\n >\n <CornerUpLeft className=\"size-3.5\" /> Send back…\n </button>\n </div>\n )}\n {error && <p role=\"alert\" className=\"text-xs text-danger\">{error}</p>}\n </div>\n )\n}\n\n/** Past review outcomes, newest first. */\nfunction ReviewHistory({ entries }: { entries: ReviewEntry[] }) {\n if (!entries.length) return null\n return (\n <div className=\"flex flex-col gap-2 px-5 py-3 border-b border-border shrink-0\">\n <p className=\"font-mono text-[10px] uppercase tracking-widest text-muted\">Review history</p>\n <ul className=\"flex flex-col gap-2\">\n {[...entries].reverse().map((e, i) => (\n <li key={i} className=\"flex flex-col gap-0.5\">\n <span className=\"flex items-center gap-2 text-xs\">\n <span className={cn(\"font-medium\", e.outcome === \"approved\" ? \"text-teal\" : \"text-amber\")}>\n {e.outcome === \"approved\" ? \"Approved\" : \"Changes requested\"}\n </span>\n <span className=\"font-mono text-[10px] text-muted\">{e.at.replace(\"T\", \" \").replace(/:\\d\\dZ$/, \"Z\")}</span>\n </span>\n {e.note && <p className=\"whitespace-pre-wrap text-xs text-muted\">{e.note}</p>}\n </li>\n ))}\n </ul>\n </div>\n )\n}\n","\"use client\"\n\nimport type { ReactNode } from \"react\"\nimport { useApp } from \"@/context/AppContext\"\nimport { InlineDate, InlineSelect, type InlineOption } from \"@/components/shared/InlineProperty\"\nimport { OwnerChip } from \"@/components/shared/OwnerChip\"\nimport { StatusChip, StatusIcon } from \"@/components/shared/StatusIcon\"\nimport { useStatusDefs } from \"@/components/shared/status-defs\"\nimport { displayStatus } from \"@/lib/statuses\"\nimport { sizeOf } from \"@/lib/board-views\"\nimport { ownerLabel } from \"@/lib/owner\"\nimport type { Task } from \"@/types\"\n\n// Task properties edited in place (R055): the table, the card and the panel header all use these.\n\nconst SIZES = [\"XS\", \"S\", \"M\", \"L\", \"XL\"]\nconst empty = <span className=\"text-muted\">—</span>\n\nexport function TaskStatusField({ task, chip = false }: { task: Task; chip?: boolean }) {\n const { moveTask } = useApp()\n const defs = useStatusDefs()\n const key = displayStatus(task)\n const options: InlineOption[] = defs.map((d) => ({ value: d.id, label: d.label, node: <><StatusIcon status={d.id} />{d.label}</> }))\n return (\n <InlineSelect label={`Status of ${task.id}`} value={key} options={options} onChange={(v) => moveTask(task.id, v)}>\n {chip ? <StatusChip status={key} /> : <><StatusIcon status={key} /><span className=\"truncate text-xs\">{defs.find((d) => d.id === key)?.label ?? key}</span></>}\n </InlineSelect>\n )\n}\n\nexport function TaskOwnerField({ task, children }: { task: Task; children?: ReactNode }) {\n const { updateTaskFields, board } = useApp()\n // Human, every agent that owns something here (claude always offered), and no owner\n const agents = [...new Set([\"ai:claude\", ...Object.values(board ?? {}).flat().map((t) => t.owner).filter((o): o is string => !!o?.startsWith(\"ai:\"))])].sort()\n const options: InlineOption[] = [\n { value: \"human\", label: \"Human\", node: <OwnerChip owner=\"human\" className=\"text-xs\" /> },\n ...agents.map((a) => ({ value: a, label: ownerLabel(a), node: <OwnerChip owner={a} className=\"text-xs\" /> })),\n { value: \"\", label: \"No owner\", node: <span className=\"text-muted\">No owner</span> },\n ]\n return (\n <InlineSelect label={`Owner of ${task.id}`} value={task.owner ?? \"\"} options={options} onChange={(v) => updateTaskFields(task.id, { owner: v || null })}>\n {children ?? (task.owner ? <OwnerChip owner={task.owner} className=\"text-xs\" /> : empty)}\n </InlineSelect>\n )\n}\n\nexport function TaskSizeField({ task, children }: { task: Task; children?: ReactNode }) {\n const { updateTaskFields } = useApp()\n const size = sizeOf(task)\n const options: InlineOption[] = [...SIZES.map((s) => ({ value: s, label: s, node: <span className=\"font-mono\">{s}</span> })), { value: \"\", label: \"No size\", node: <span className=\"text-muted\">No size</span> }]\n return (\n <InlineSelect label={`Size of ${task.id}`} value={size ?? \"\"} options={options} onChange={(v) => updateTaskFields(task.id, { size: v || \"—\" })}>\n {children ?? (size ? <span className=\"font-mono text-xs\">{size}</span> : empty)}\n </InlineSelect>\n )\n}\n\nexport function TaskDueField({ task, children }: { task: Task; children?: ReactNode }) {\n const { updateTaskFields } = useApp()\n return (\n <InlineDate label={`Due date of ${task.id}`} value={task.due} onChange={(v) => updateTaskFields(task.id, { due: v })}>\n {children ?? (task.due ? <span className=\"font-mono text-xs\">{task.due}</span> : empty)}\n </InlineDate>\n )\n}\n","\"use client\"\n\nimport { useEffect, useState } from \"react\"\nimport { useRouter } from \"next/navigation\"\nimport { Bot, User } from \"lucide-react\"\nimport { useApp } from \"@/context/AppContext\"\nimport { timeAgo } from \"@/components/activity/ActivityEventRow\"\nimport type { Session } from \"@/types\"\n\n// Sessions that moved this task; mount with key={taskId} so state resets per task.\nexport function TaskSessions({ taskId, onNavigate }: { taskId: string; onNavigate: () => void }) {\n const { rootParam } = useApp()\n const router = useRouter()\n const [sessions, setSessions] = useState<Session[] | null>(null)\n\n useEffect(() => {\n const qs = rootParam ? `${rootParam}&` : \"?\"\n fetch(`/api/sessions${qs}taskId=${encodeURIComponent(taskId)}`)\n .then(r => r.json())\n .then(data => setSessions(Array.isArray(data) ? data : []))\n .catch(() => setSessions([]))\n }, [rootParam, taskId])\n\n return (\n <div className=\"px-5 py-3 border-b border-border shrink-0\">\n <p className=\"mb-2 text-xs font-mono uppercase tracking-wide text-muted\">Sessions</p>\n {sessions === null ? null : sessions.length === 0 ? (\n <p className=\"text-xs text-muted\">No recorded sessions</p>\n ) : (\n <div className=\"flex max-h-40 flex-col gap-1 overflow-y-auto\">\n {sessions.map(s => (\n <button\n key={s.id}\n onClick={() => { onNavigate(); router.push(`/activity?session=${encodeURIComponent(s.id)}`) }}\n className=\"flex items-center gap-2 rounded-sm px-2 py-1 text-left text-xs hover:bg-surface2\"\n >\n {s.actor === \"ai\" ? <Bot aria-hidden className=\"size-3.5 shrink-0 text-muted\" /> : <User aria-hidden className=\"size-3.5 shrink-0 text-muted\" />}\n <span className=\"sr-only\">{s.actor === \"ai\" ? \"Agent session\" : \"Human session\"}</span>\n <span className=\"shrink-0 font-mono text-muted\">{timeAgo(s.start)}</span>\n <span className=\"truncate text-txt\">{s.headline}</span>\n </button>\n ))}\n </div>\n )}\n </div>\n )\n}\n","import type { Task, TaskMetaPatch } from \"@/types\"\nimport { undoToast } from \"@/components/ui/toast\"\n\nasync function post<T>(url: string, body: unknown): Promise<T> {\n const res = await fetch(url, { method: \"POST\", headers: { \"Content-Type\": \"application/json\" }, body: JSON.stringify(body) })\n const json = await res.json().catch(() => null)\n if (!res.ok) throw new Error(json?.error ?? `Request failed (${res.status})`)\n return json as T\n}\n\nexport const updateTask = (id: string, patch: TaskMetaPatch, rootParam: string) =>\n post<{ task: Task }>(`/api/tasks/update${rootParam}`, { id, patch }).then((r) => r.task)\n\n/** Deletes right away and offers Undo, which writes the same file back and re-links it to its epics. */\nexport async function deleteTaskWithUndo(task: Pick<Task, \"id\">, rootParam: string): Promise<void> {\n const { task: removed, links } = await post<{ task: Task; links: unknown[] }>(`/api/tasks/delete${rootParam}`, { id: task.id })\n undoToast(`Deleted ${removed.id}`, async () => {\n await post(`/api/tasks/restore${rootParam}`, { file: removed.file, raw: removed.raw, links })\n })\n}\n","// Board views (Notion-style lenses over the same task files): Board · Table · By epic · Timeline, plus saved views.\n// Pure (no React, no fs). The live view state rides in the URL; saved views live in `.vibedoc/views.json` (core.ts).\n// Self-check: `node src/lib/board-views.check.mts`.\n\nimport type { ActivityEvent, Task, TaskStatus } from \"./core\"\n\nexport type ViewKind = \"board\" | \"table\" | \"epic\" | \"timeline\"\n\n/** Filterable task properties. `ready` = todo with every dependency done; `agent` = a chat working on the task. */\nexport type FilterProp = \"status\" | \"epic\" | \"size\" | \"due\" | \"deps\" | \"tests\" | \"agent\" | \"ready\" | \"owner\"\n\n/**\n * One filter rule. Ops by prop:\n * - status / epic / size: \"is\" | \"is-not\" with `value` = a list (any-of). Epic values are IDs like \"R043\" (\"none\" = no epic).\n * - owner: \"is\" | \"is-not\" with values \"human\" | \"ai\" (any agent) | \"none\".\n * - due: \"before\" | \"after\" with `value[0]` = \"YYYY-MM-DD\"; \"is-set\" | \"not-set\" ignore value.\n * - deps / tests / agent / ready: \"is-set\" | \"not-set\" (deps: has dependencies; tests: has a manual test report;\n * agent: a chat is running / needs you / has a plan to review on the task; ready: see FilterProp).\n */\nexport interface FilterRule {\n prop: FilterProp\n op: \"is\" | \"is-not\" | \"before\" | \"after\" | \"is-set\" | \"not-set\"\n value: string[]\n}\n\nexport type SortProp = \"status\" | \"id\" | \"epic\" | \"size\" | \"due\" | \"title\"\nexport interface SortRule { prop: SortProp; dir: \"asc\" | \"desc\" }\n\nexport type GroupBy = \"status\" | \"epic\" | \"size\" | \"owner\" | \"none\"\n/** Table / Board columns and card lines that can be hidden. */\nexport type PropertyKey = \"status\" | \"epic\" | \"size\" | \"due\" | \"deps\" | \"tests\" | \"agent\" | \"owner\"\nexport type TimelineScale = \"active\" | \"day\" | \"week\"\n\nexport interface ViewState {\n kind: ViewKind\n filters: FilterRule[]\n /** Applied in order; ties fall back to ID ascending (numeric). */\n sorts: SortRule[]\n /** Board: the columns are always status, `group` is ignored; Table / By epic / Timeline: sections. */\n group: GroupBy\n /** Board only: swimlanes inside the status columns (\"none\" = no lanes). */\n subGroup: \"epic\" | \"size\" | \"none\"\n /** Free text over ID + title, case-insensitive. */\n q: string\n /** Visible properties (Table columns, Board card lines). */\n properties: PropertyKey[]\n /** Timeline only. */\n scale: TimelineScale\n}\n\nexport interface SavedView extends ViewState {\n /** [a-z0-9-]{1,40}; the built-ins are \"board\" | \"table\" | \"epic\" | \"timeline\". */\n id: string\n name: string\n}\n\n/** What `applyView` needs beyond the tasks themselves. */\nexport interface ViewContext {\n /** Task IDs with an active agent chat (from ChatContext `itemAgents`, keys \"task:T062\" → \"T062\"). */\n agentTasks: Set<string>\n}\n\nexport interface TaskGroup {\n /** Stable key: a status, an epic ID (\"none\" for no epic), a size letter, or \"all\". */\n key: string\n /** Display label: \"In progress\", \"Task verification & review\", \"M\", \"All tasks\". */\n label: string\n /** Epic groups: \"R043\"; otherwise null. */\n epicId: string | null\n tasks: Task[]\n}\n\n/** A task's worked window, from the activity log: first move to in-progress → last move to done (or now if open). */\nexport interface TimelineBar {\n taskId: string\n epicId: string | null\n startMs: number\n endMs: number\n status: TaskStatus\n /** true while the task is still in progress (endMs = now). */\n open: boolean\n}\n\n/** A stretch of the Active-time axis; idle gaps longer than the fold threshold sit between segments. */\nexport interface AxisSegment { startMs: number; endMs: number }\n\n// Function contract (implemented below):\n// DEFAULT_VIEWS: SavedView[] the four built-ins, one per ViewKind\n// defaultView(kind): ViewState\n// epicOf(phase): { id: string | null; title: string } \"R043 — Task …\" → { id: \"R043\", title: \"Task …\" }\n// sizeOf(task): string | null \"M (2–3 hrs)\" → \"M\"; \"—\" / \"\" → null\n// isReady(task, byId): boolean todo and every `dependsOn` ID is done\n// applyView(tasks, state, ctx): Task[] filter + q + sort (cancelled hidden unless a status filter names it)\n// groupTasks(tasks, by): TaskGroup[] stable, meaningful order (status in workflow order: in-progress, review, todo, blocked, done)\n// depOutline(tasks): { task: Task; depth: number; alsoAfter: string[] }[] tasks nested under their first in-epic dependency\n// timelineBars(tasks, events, nowMs): TimelineBar[] only tasks with at least one task_updated event\n// foldAxis(bars, gapMs): AxisSegment[] merge bar windows (padded 5%) closer than gapMs\n// toParams(state): URLSearchParams compact, omits defaults for the kind\n// fromParams(params): ViewState inverse of toParams; unknown values fall back to defaults\n// isDirty(state, saved): boolean differs from a saved view (ignores q)\n\n// ─── Defaults ─────────────────────────────────────────────────────────────────\n\nconst ALL_PROPERTIES: PropertyKey[] = [\"status\", \"epic\", \"size\", \"due\", \"deps\", \"tests\", \"agent\", \"owner\"]\nconst KINDS: ViewKind[] = [\"board\", \"table\", \"epic\", \"timeline\"]\nconst NAMES: Record<ViewKind, string> = { board: \"Board\", table: \"Table\", epic: \"By epic\", timeline: \"Timeline\" }\n\nexport function defaultView(kind: ViewKind): ViewState {\n const base: ViewState = { kind, filters: [], sorts: [], group: \"epic\", subGroup: \"none\", q: \"\", properties: [...ALL_PROPERTIES], scale: \"active\" }\n if (kind === \"board\") return { ...base, group: \"none\", subGroup: \"epic\", properties: [\"epic\", \"size\", \"deps\", \"tests\", \"agent\", \"owner\"] }\n if (kind === \"table\") return { ...base, sorts: [{ prop: \"status\", dir: \"asc\" }, { prop: \"id\", dir: \"asc\" }] }\n return base\n}\n\nexport const DEFAULT_VIEWS: SavedView[] = KINDS.map((kind) => ({ ...defaultView(kind), id: kind, name: NAMES[kind] }))\n\n// ─── Task fields ──────────────────────────────────────────────────────────────\n\nconst STATUS_ORDER: TaskStatus[] = [\"in-progress\", \"review\", \"todo\", \"blocked\", \"paused\", \"done\", \"cancelled\"]\nconst STATUS_LABEL: Record<TaskStatus, string> = {\n \"in-progress\": \"In progress\", review: \"Review\", todo: \"Todo\", blocked: \"Blocked\", paused: \"Paused\", done: \"Done\", cancelled: \"Cancelled\",\n}\nconst SIZES = [\"XS\", \"S\", \"M\", \"L\", \"XL\"]\nconst cmpId = (a: string, b: string) => a.localeCompare(b, undefined, { numeric: true })\nconst isOpen = (t: Task) => t.status !== \"done\" && t.status !== \"cancelled\"\n\n/** Every `T\\d+` in a free-text \"Depends on\" line (same rule as work-queue `depIds`; inlined so node can run this file). */\nfunction deps(t: Task): string[] {\n return [...new Set((t.dependsOn.match(/\\bT\\d+\\b/gi) ?? []).map((d) => d.toUpperCase()))]\n}\n\n/** The status a task shows under: its custom status, else its category (statuses.ts `displayStatus`, inlined). */\nconst displayOf = (t: Task): string => t.customStatus ?? t.status\n\n/** \"human\" | \"ai\" | \"none\" (same rule as owner.ts `ownerKind`; inlined so node can run this file). */\nfunction ownerKindOf(t: Task): \"human\" | \"ai\" | \"none\" {\n return t.owner === \"human\" ? \"human\" : t.owner?.startsWith(\"ai:\") ? \"ai\" : \"none\"\n}\n\nexport function epicOf(phase: string): { id: string | null; title: string } {\n const m = phase.trim().match(/^(R\\d+)\\b\\s*(?:[—–:-]\\s*)?(.*)$/i)\n return m ? { id: m[1].toUpperCase(), title: m[2].trim() } : { id: null, title: phase.trim() }\n}\n\nexport function sizeOf(task: Task): string | null {\n const m = task.size.trim().match(/^(XS|XL|S|M|L)\\b/i)\n return m ? m[1].toUpperCase() : null\n}\n\nexport function isReady(task: Task, byId: Map<string, Task>): boolean {\n return task.status === \"todo\" && deps(task).every((d) => byId.get(d)?.status === \"done\")\n}\n\n// ─── Filter + sort ────────────────────────────────────────────────────────────\n\nfunction matches(t: Task, r: FilterRule, ctx: ViewContext, byId: Map<string, Task>): boolean {\n const any = (v: string) => r.value.includes(v)\n const oneOf = (v: string) => (r.op === \"is\" ? any(v) : r.op === \"is-not\" ? !any(v) : true)\n const flag = (set: boolean) => (r.op === \"is-set\" ? set : r.op === \"not-set\" ? !set : true)\n switch (r.prop) {\n case \"status\": return oneOf(displayOf(t))\n case \"epic\": return oneOf(epicOf(t.phase).id ?? \"none\")\n case \"size\": return oneOf(sizeOf(t) ?? \"none\")\n case \"due\":\n if (r.op === \"before\") return !!t.due && !!r.value[0] && t.due < r.value[0]\n if (r.op === \"after\") return !!t.due && !!r.value[0] && t.due > r.value[0]\n return flag(!!t.due)\n case \"deps\": return flag(deps(t).length > 0)\n case \"tests\": return flag(t.manualTests !== null)\n case \"agent\": return flag(ctx.agentTasks.has(t.id))\n case \"ready\": return flag(isReady(t, byId))\n case \"owner\": return oneOf(ownerKindOf(t))\n }\n}\n\nfunction compare(a: Task, b: Task, prop: SortProp): number {\n switch (prop) {\n case \"status\": return STATUS_ORDER.indexOf(a.status) - STATUS_ORDER.indexOf(b.status)\n case \"id\": return cmpId(a.id, b.id)\n case \"title\": return a.title.localeCompare(b.title)\n case \"epic\": {\n const x = epicOf(a.phase).id, y = epicOf(b.phase).id\n return x === y ? 0 : x === null ? 1 : y === null ? -1 : cmpId(x, y)\n }\n case \"size\": {\n const x = SIZES.indexOf(sizeOf(a) ?? \"\"), y = SIZES.indexOf(sizeOf(b) ?? \"\")\n return x === y ? 0 : x < 0 ? 1 : y < 0 ? -1 : x - y\n }\n case \"due\":\n return a.due === b.due ? 0 : a.due === null ? 1 : b.due === null ? -1 : a.due.localeCompare(b.due)\n }\n}\n\nexport function applyView(tasks: Task[], state: ViewState, ctx: ViewContext): Task[] {\n const byId = new Map(tasks.map((t) => [t.id, t]))\n const showCancelled = state.filters.some((r) => r.prop === \"status\" && r.op === \"is\" && r.value.includes(\"cancelled\"))\n const q = state.q.trim().toLowerCase()\n return tasks\n .filter((t) => showCancelled || t.status !== \"cancelled\")\n .filter((t) => !q || t.id.toLowerCase().includes(q) || t.title.toLowerCase().includes(q))\n .filter((t) => state.filters.every((r) => matches(t, r, ctx, byId)))\n .sort((a, b) => {\n for (const s of state.sorts) {\n const c = compare(a, b, s.prop)\n // nulls stay last for due / epic / size in either direction\n if (c) return s.dir === \"desc\" && !nullLast(a, b, s.prop) ? -c : c\n }\n return cmpId(a.id, b.id)\n })\n}\n\n/** True when exactly one side has no value for `prop` (that side stays last regardless of direction). */\nfunction nullLast(a: Task, b: Task, prop: SortProp): boolean {\n const v = (t: Task) => (prop === \"due\" ? t.due : prop === \"epic\" ? epicOf(t.phase).id : prop === \"size\" ? (SIZES.includes(sizeOf(t) ?? \"\") ? \"x\" : null) : \"x\")\n return (v(a) === null) !== (v(b) === null)\n}\n\n// ─── Grouping ─────────────────────────────────────────────────────────────────\n\n/** `statuses`: the project's statuses in order (R055); status groups follow it. Omitted = the built-in order. */\nexport function groupTasks(tasks: Task[], by: GroupBy, statuses?: { id: string; label: string }[]): TaskGroup[] {\n if (!tasks.length) return []\n if (by === \"none\") return [{ key: \"all\", label: \"All tasks\", epicId: null, tasks }]\n const buckets = new Map<string, Task[]>()\n const keyOf = (t: Task) =>\n by === \"status\" ? displayOf(t) : by === \"size\" ? sizeOf(t) ?? \"none\" : by === \"owner\" ? t.owner ?? \"none\" : epicOf(t.phase).id ?? \"none\"\n for (const t of tasks) {\n const k = keyOf(t)\n const list = buckets.get(k)\n if (list) list.push(t)\n else buckets.set(k, [t])\n }\n const group = (key: string, label: string, epicId: string | null = null): TaskGroup => ({ key, label, epicId, tasks: buckets.get(key) ?? [] })\n if (by === \"status\") {\n if (!statuses) return STATUS_ORDER.filter((s) => buckets.has(s)).map((s) => group(s, STATUS_LABEL[s]))\n return statuses.filter((d) => buckets.has(d.id)).map((d) => group(d.id, d.label))\n }\n if (by === \"size\") return [...SIZES, \"none\"].filter((s) => buckets.has(s)).map((s) => group(s, s === \"none\" ? \"No size\" : s))\n if (by === \"owner\") {\n // human, then each agent by name, then unowned\n const agents = [...buckets.keys()].filter((k) => k.startsWith(\"ai:\")).sort()\n return [\"human\", ...agents, \"none\"].filter((k) => buckets.has(k))\n .map((k) => group(k, k === \"human\" ? \"Human\" : k === \"none\" ? \"No owner\" : `${k.slice(3)} (AI)`))\n }\n\n // epic: open work first (by lowest open task ID), then the rest by epic ID descending; \"none\" last\n const lowestOpen = (k: string) => (buckets.get(k) ?? []).filter(isOpen).map((t) => t.id).sort(cmpId)[0] ?? null\n const keys = [...buckets.keys()].filter((k) => k !== \"none\").sort((x, y) => {\n const ox = lowestOpen(x), oy = lowestOpen(y)\n if (ox && oy) return cmpId(ox, oy) || cmpId(x, y)\n if (ox || oy) return ox ? -1 : 1\n return cmpId(y, x)\n })\n const out = keys.map((k) => {\n const title = (buckets.get(k) ?? []).map((t) => epicOf(t.phase).title).find(Boolean)\n return group(k, title || k, k)\n })\n if (buckets.has(\"none\")) out.push(group(\"none\", \"No epic\"))\n return out\n}\n\n// ─── Dependency outline ───────────────────────────────────────────────────────\n\nconst MAX_DEPTH = 4\n\nexport function depOutline(tasks: Task[]): { task: Task; depth: number; alsoAfter: string[] }[] {\n const inList = new Set(tasks.map((t) => t.id))\n const parent = new Map<string, string>()\n for (const t of tasks) {\n const p = deps(t).find((d) => d !== t.id && inList.has(d))\n if (p) parent.set(t.id, p)\n }\n const children = new Map<string, Task[]>()\n for (const t of tasks) {\n const p = parent.get(t.id)\n if (p) children.set(p, [...(children.get(p) ?? []), t])\n }\n const out: { task: Task; depth: number; alsoAfter: string[] }[] = []\n const seen = new Set<string>()\n const visit = (t: Task, depth: number, under: string | null) => {\n if (seen.has(t.id)) return\n seen.add(t.id)\n out.push({ task: t, depth: Math.min(depth, MAX_DEPTH), alsoAfter: deps(t).filter((d) => d !== under && d !== t.id) })\n for (const c of children.get(t.id) ?? []) visit(c, depth + 1, t.id)\n }\n for (const t of tasks) if (!parent.has(t.id)) visit(t, 0, null)\n // cycle members never reach a root: surface each as a root in input order\n for (const t of tasks) visit(t, 0, null)\n return out\n}\n\n// ─── Timeline ─────────────────────────────────────────────────────────────────\n\nexport function timelineBars(tasks: Task[], events: ActivityEvent[], nowMs: number): TimelineBar[] {\n const byTask = new Map<string, { ms: number; status?: TaskStatus }[]>()\n for (const e of events) {\n if (e.type !== \"task_updated\" || !e.taskId) continue\n const ms = Date.parse(e.timestamp)\n if (Number.isNaN(ms)) continue\n const list = byTask.get(e.taskId) ?? []\n list.push({ ms, status: e.taskStatus })\n byTask.set(e.taskId, list)\n }\n const bars: TimelineBar[] = []\n for (const t of tasks) {\n const evs = byTask.get(t.id)?.sort((a, b) => a.ms - b.ms)\n if (!evs?.length) continue\n const startMs = (evs.find((e) => e.status === \"in-progress\") ?? evs[0]).ms\n const last = evs[evs.length - 1].ms\n const doneAt = evs.filter((e) => e.status === \"done\").pop()?.ms\n // ponytail: cancelled closes at its last event rather than stretching to now\n const open = t.status !== \"done\" && t.status !== \"cancelled\"\n const endMs = t.status === \"done\" ? doneAt ?? last : open ? nowMs : last\n bars.push({ taskId: t.id, epicId: epicOf(t.phase).id, startMs, endMs: Math.max(endMs, startMs), status: t.status, open })\n }\n return bars\n}\n\nconst MIN_PAD_MS = 60_000\n\nexport function foldAxis(bars: TimelineBar[], gapMs: number): AxisSegment[] {\n const wins = bars\n .map((b) => {\n const pad = Math.max((b.endMs - b.startMs) * 0.05, MIN_PAD_MS)\n return { startMs: b.startMs - pad, endMs: b.endMs + pad }\n })\n .sort((a, b) => a.startMs - b.startMs)\n const out: AxisSegment[] = []\n for (const w of wins) {\n const cur = out[out.length - 1]\n if (cur && w.startMs - cur.endMs < gapMs) cur.endMs = Math.max(cur.endMs, w.endMs)\n else out.push({ ...w })\n }\n return out\n}\n\n// ─── URL state ────────────────────────────────────────────────────────────────\n\nconst FILTER_PROPS: FilterProp[] = [\"status\", \"epic\", \"size\", \"due\", \"deps\", \"tests\", \"agent\", \"ready\", \"owner\"]\nconst FILTER_OPS: FilterRule[\"op\"][] = [\"is\", \"is-not\", \"before\", \"after\", \"is-set\", \"not-set\"]\nconst SORT_PROPS: SortProp[] = [\"status\", \"id\", \"epic\", \"size\", \"due\", \"title\"]\nconst GROUPS: GroupBy[] = [\"status\", \"epic\", \"size\", \"owner\", \"none\"]\nconst SUBGROUPS: ViewState[\"subGroup\"][] = [\"epic\", \"size\", \"none\"]\nconst SCALES: TimelineScale[] = [\"active\", \"day\", \"week\"]\n\nconst pick = <T extends string>(allowed: readonly T[], v: string | null, fallback: T): T =>\n v !== null && (allowed as readonly string[]).includes(v) ? (v as T) : fallback\n\nconst sortsStr = (s: SortRule[]) => s.map((r) => (r.dir === \"desc\" ? \"-\" : \"\") + r.prop).join(\",\")\nconst filtersStr = (f: FilterRule[]) =>\n f.map((r) => [r.prop, r.op, ...(r.value.length ? [r.value.map(encodeURIComponent).join(\"|\")] : [])].join(\":\")).join(\";\")\n\nexport function toParams(state: ViewState): URLSearchParams {\n const d = defaultView(state.kind)\n const p = new URLSearchParams()\n if (state.kind !== \"board\") p.set(\"view\", state.kind)\n if (state.group !== d.group) p.set(\"g\", state.group)\n if (state.subGroup !== d.subGroup) p.set(\"sg\", state.subGroup)\n if (sortsStr(state.sorts) !== sortsStr(d.sorts)) p.set(\"s\", sortsStr(state.sorts))\n if (state.filters.length) p.set(\"f\", filtersStr(state.filters))\n if (state.q) p.set(\"q\", state.q)\n if (state.properties.join(\",\") !== d.properties.join(\",\")) p.set(\"p\", state.properties.join(\",\"))\n if (state.scale !== d.scale) p.set(\"sc\", state.scale)\n return p\n}\n\nexport function fromParams(params: URLSearchParams): ViewState {\n const kind = pick(KINDS, params.get(\"view\"), \"board\")\n const d = defaultView(kind)\n const s = params.get(\"s\")\n const f = params.get(\"f\")\n const p = params.get(\"p\")\n return {\n kind,\n group: pick(GROUPS, params.get(\"g\"), d.group),\n subGroup: pick(SUBGROUPS, params.get(\"sg\"), d.subGroup),\n sorts: s === null ? d.sorts : s.split(\",\").filter(Boolean).flatMap((tok): SortRule[] => {\n const desc = tok.startsWith(\"-\")\n const prop = desc ? tok.slice(1) : tok\n return SORT_PROPS.includes(prop as SortProp) ? [{ prop: prop as SortProp, dir: desc ? \"desc\" : \"asc\" }] : []\n }),\n filters: !f ? [] : f.split(\";\").flatMap((tok): FilterRule[] => {\n const [prop, op, ...rest] = tok.split(\":\")\n if (!FILTER_PROPS.includes(prop as FilterProp) || !FILTER_OPS.includes(op as FilterRule[\"op\"])) return []\n const raw = rest.join(\":\")\n let value: string[] = []\n try { value = rest.length ? raw.split(\"|\").map(decodeURIComponent) : [] } catch { return [] }\n return [{ prop: prop as FilterProp, op: op as FilterRule[\"op\"], value }]\n }),\n q: params.get(\"q\") ?? \"\",\n properties: p === null ? d.properties : [...new Set(p.split(\",\").filter((k): k is PropertyKey => ALL_PROPERTIES.includes(k as PropertyKey)))],\n scale: pick(SCALES, params.get(\"sc\"), d.scale),\n }\n}\n\nexport function isDirty(state: ViewState, saved: SavedView): boolean {\n const norm = (v: ViewState) =>\n JSON.stringify([v.kind, v.filters, v.sorts, v.group, v.subGroup, [...v.properties].sort(), v.scale])\n return norm(state) !== norm(saved)\n}\n","// Review history on a task (R043): a `## Review` section at the end of the task file, one `### ` entry per outcome.\n// Pure (no fs): core.ts writes the file; `node src/lib/review.check.mts` runs the self-check.\n//\n// ## Review\n// ### 2026-10-01T11:00:00Z — changes requested\n// The plan card doesn't scroll when there are 10+ tasks.\n// ### 2026-10-02T09:30:00Z — approved\n\nexport const REVIEW_HEADING = \"## Review\"\n\nexport type ReviewOutcome = \"approved\" | \"changes requested\"\n\nexport interface ReviewEntry {\n at: string\n outcome: ReviewOutcome\n note: string\n}\n\nconst ENTRY = /^###\\s+(\\S+)\\s+—\\s+(approved|changes requested)\\s*$/\n\n/** Lines inside ``` fences, so a quoted example is never taken for the real section. */\nfunction fenced(lines: string[]): boolean[] {\n let inFence = false\n return lines.map((l) => {\n if (/^\\s*```/.test(l)) { inFence = !inFence; return true }\n return inFence\n })\n}\n\nfunction sectionRange(lines: string[]): [number, number] | null {\n const code = fenced(lines)\n const start = lines.findIndex((l, i) => !code[i] && l.trim() === REVIEW_HEADING)\n if (start < 0) return null\n const next = lines.findIndex((l, i) => i > start && !code[i] && /^##\\s/.test(l))\n return [start, next < 0 ? lines.length : next]\n}\n\n/** Every review entry, oldest first. */\nexport function reviewHistory(raw: string): ReviewEntry[] {\n const lines = raw.split(\"\\n\")\n const range = sectionRange(lines)\n if (!range) return []\n const entries: ReviewEntry[] = []\n for (const line of lines.slice(range[0] + 1, range[1])) {\n const m = line.match(ENTRY)\n if (m) entries.push({ at: m[1], outcome: m[2] as ReviewOutcome, note: \"\" })\n else if (entries.length) {\n const last = entries[entries.length - 1]\n last.note = last.note ? `${last.note}\\n${line}` : line\n }\n }\n return entries.map((e) => ({ ...e, note: e.note.trim() }))\n}\n\nexport function latestReview(raw: string): ReviewEntry | null {\n const all = reviewHistory(raw)\n return all[all.length - 1] ?? null\n}\n\n/**\n * Add an entry to the `## Review` section (created at the end of the file if missing; an existing one keeps its\n * place and grows). A note is required for \"changes requested\".\n */\nexport function appendReviewEntry(raw: string, outcome: ReviewOutcome, note: string, at: string): string {\n const text = note.trim()\n if (outcome === \"changes requested\" && !text) throw new Error(\"A note is required to send a task back\")\n // \"## \" at the start of a note line would end the section early\n const body = text.split(\"\\n\").map((l) => (/^#{1,3}\\s/.test(l) ? `\\\\${l}` : l)).join(\"\\n\")\n const entry = [`### ${at} — ${outcome}`, ...(body ? [body] : [])]\n const lines = raw.split(\"\\n\")\n const range = sectionRange(lines)\n if (!range) return `${raw.replace(/\\s+$/, \"\")}\\n\\n${REVIEW_HEADING}\\n${entry.join(\"\\n\")}\\n`\n // Insert after the section's last non-empty line, before the blank lines that separate it from what follows\n let end = range[1]\n while (end > range[0] + 1 && !lines[end - 1].trim()) end--\n const out = [...lines.slice(0, end), ...entry, ...lines.slice(end)]\n const joined = out.join(\"\\n\")\n return range[1] === lines.length ? `${joined.replace(/\\s+$/, \"\")}\\n` : joined\n}\n"],"names":["NEXT_STATUS","todo","review","blocked","paused","done","cancelled","STATUS_LABELS","TaskDetailPanel","task","openTask","onClose","onMove","setTask","nextStatuses","status","chats","showAbout","rootParam","chat","kind","id","undefined","editingId","setEditingId","editing","error","setError","menuOpen","setMenuOpen","statusDefs","chatAbout","title","action","label","run","remove","e","message","open","onOpenChange","side","className","kicker","attach","menu","asChild","type","align","onSelect","map","d","disabled","properties","taskProperties","role","TaskEditForm","onDone","s","onClick","ReviewActions","taskId","raw","content","bodyOf","manualTests","href","total","ReviewHistory","entries","onNavigate","lines","split","i","findIndex","l","startsWith","length","trim","test","slice","join","epic","phase","value","chip","due","state","FIELD","base","setTitle","size","setSize","setPhase","dependsOn","setDependsOn","setDue","busy","setBusy","orDash","v","save","patch","Object","keys","onSubmit","preventDefault","onKeyDown","key","stopPropagation","autoFocus","onChange","target","placeholder","sendingBack","setSendingBack","note","setNote","act","res","fetch","method","headers","body","JSON","stringify","ok","Error","json","catch","rows","reverse","outcome","at","replace","SIZES","empty","TaskStatusField","moveTask","defs","options","node","find","TaskOwnerField","children","updateTaskFields","board","agents","Set","values","flat","t","owner","filter","o","sort","a","TaskSizeField","TaskDueField","TaskSessions","router","sessions","setSessions","qs","encodeURIComponent","then","r","data","Array","isArray","push","actor","start","headline","post","url","updateTask","deleteTaskWithUndo","removed","links","file","ALL_PROPERTIES","KINDS","NAMES","table","timeline","defaultView","filters","sorts","group","subGroup","q","scale","prop","dir","DEFAULT_VIEWS","name","STATUS_ORDER","STATUS_LABEL","cmpId","b","localeCompare","numeric","isOpen","deps","match","toUpperCase","displayOf","customStatus","ownerKindOf","epicOf","m","sizeOf","isReady","byId","every","get","matches","ctx","any","includes","oneOf","op","flag","set","agentTasks","has","compare","indexOf","x","y","applyView","tasks","Map","showCancelled","some","toLowerCase","c","nullLast","groupTasks","by","statuses","epicId","buckets","keyOf","k","list","lowestOpen","ox","oy","out","Boolean","MAX_DEPTH","depOutline","inList","parent","p","seen","visit","depth","under","add","Math","min","alsoAfter","timelineBars","events","nowMs","byTask","ms","Date","parse","timestamp","Number","isNaN","taskStatus","bars","evs","startMs","last","doneAt","pop","endMs","max","MIN_PAD_MS","foldAxis","gapMs","wins","pad","w","cur","FILTER_PROPS","FILTER_OPS","SORT_PROPS","GROUPS","SUBGROUPS","SCALES","pick","allowed","fallback","sortsStr","filtersStr","f","toParams","URLSearchParams","fromParams","params","flatMap","tok","desc","rest","decodeURIComponent","isDirty","saved","norm","REVIEW_HEADING","ENTRY","fenced","inFence","sectionRange","code","next","reviewHistory","range","line","latestReview","all","appendReviewEntry","text","entry","end","joined"],"mappings":"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","ignoreList":[0]}
@@ -0,0 +1,3 @@
1
+ module.exports=[256857,a=>{"use strict";var b=a.i(174897);let c=(...a)=>a.filter((a,b,c)=>!!a&&""!==a.trim()&&c.indexOf(a)===b).join(" ").trim(),d={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":2,"stroke-linecap":"round","stroke-linejoin":"round"},e=(0,b.createContext)({}),f=(0,b.forwardRef)(({color:a,size:f,width:g,height:h,strokeWidth:i,absoluteStrokeWidth:j,nonScalingStroke:k,className:l="",children:m,iconNode:n=[],icon:o={node:n,aliases:[],size:24},...p},q)=>{let{size:r=24,strokeWidth:s=2,absoluteStrokeWidth:t=!1,nonScalingStroke:u=!1,color:v="currentColor",className:w=""}=(0,b.useContext)(e)??{},x=!!m||(a=>{for(let b in a)if(b.startsWith("aria-")||"role"===b||"title"===b)return!0;return!1})(p),[y,z,A=[]]=function(a,b={}){return function(a,b={}){let e=b.attributeNames??{},f=a=>e[a]??a,g=a.size??a.width??d.width,h=a.size??a.height??d.height,i=a.aliases?.filter(a=>"string"==typeof a&&""!==a.trim()).map(a=>`lucide-${a}`)??[],j=[...a.name?[`lucide-${a.name}`]:[],...i],k=b.className?.split(" ").filter(Boolean)??[],l=!1===b.includeDefaultClasses?c(...k):c("lucide",...j,...k),m=b.absoluteStrokeWidth?Number(b.strokeWidth??d["stroke-width"])*Number(a.size??a.width??d.width)/Number(b.size??b.width??d.width):b.strokeWidth??d["stroke-width"];return["svg",{...Object.entries(d).reduce((a,[b,c])=>(a[f(b)]=c,a),{}),..."color"in b&&b.color&&{[f("stroke")]:b.color},..."size"in b&&null!=b.size&&{[f("width")]:b.size,[f("height")]:b.size},..."width"in b&&null!=b.width&&{[f("width")]:b.width},..."height"in b&&null!=b.height&&{[f("height")]:b.height},[f("stroke-width")]:m,...l&&{[f("class")]:l},[f("viewBox")]:`0 0 ${g} ${h}`,...!1===b.hasA11yProp?{[f("aria-hidden")]:"true"}:{},..."attributes"in b&&b.attributes},a.node.map(a=>{let[c,d,e]=a,g=b.nonScalingStroke?{[f("vector-effect")]:"non-scaling-stroke",...d}:d;return e?[c,g,e]:[c,g]})]}(a,{...b,attributeNames:{...b.attributeNames,class:"className","stroke-width":"strokeWidth","stroke-linecap":"strokeLinecap","stroke-linejoin":"strokeLinejoin","vector-effect":"vectorEffect"}})}(o,{color:a??v,width:g??f??r,height:h??f??r,strokeWidth:i??s,absoluteStrokeWidth:j??t,nonScalingStroke:k??u,className:c(w,l),hasA11yProp:x,attributes:p});return(0,b.createElement)(y,{ref:q,...z},[...A.map(([a,c])=>(0,b.createElement)(a,c)),...Array.isArray(m)?m:[m]])});a.s(["default",0,function(a,c=[],d=[]){let e,g="string"==typeof a?function(a,b,c=[]){if(null==b)throw Error("[lucide]: iconNode is required when icon name is used");return{name:a?.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),size:24,node:b,...c.length>0?{aliases:c}:{}}}(a,c,d):a,h=(0,b.forwardRef)(({className:a,...c},d)=>(0,b.createElement)(f,{ref:d,icon:g,className:a,...c}));return g.name&&(h.displayName=(e=(a=>{let b="",c=!1;for(let d of a){if("-"===d||"_"===d||d<=" "){c=b.length>0;continue}0===b.length?b+=d.toLowerCase():b+=c?d.toUpperCase():d,c=!1}return b})(g.name)).charAt(0).toUpperCase()+e.slice(1)),h}],256857)},498053,a=>{"use strict";var b=a.i(256857);let c={name:"arrow-up",size:24,node:[["path",{d:"m5 12 7-7 7 7",key:"hav0vg"}],["path",{d:"M12 19V5",key:"x0mq9r"}]]};c.node;let d=(0,b.default)(c);a.s(["ArrowUp",0,d],498053)},508817,a=>{"use strict";var b=a.i(256857);let c={name:"book-open",size:24,node:[["path",{d:"M12 5v16",key:"1f6ucr"}],["path",{d:"M20.001 19A2 2 0 0022 17V5a2 2 0 00-1.999-2L16 3.002A5 5 0 0012 5a5 5 0 00-4-2H4a2 2 0 00-2 2v12a2 2 0 001.999 2H8a5 5 0 014 2 5 5 0 014-2z",key:"1fyvmf"}]]};c.node;let d=(0,b.default)(c);a.s(["BookOpen",0,d],508817)},795667,a=>{"use strict";var b=a.i(256857);let c={name:"bot",size:24,node:[["path",{d:"M12 8V4H8",key:"hb8ula"}],["rect",{width:"16",height:"12",x:"4",y:"8",rx:"2",key:"enze0r"}],["path",{d:"M2 14h2",key:"vft8re"}],["path",{d:"M20 14h2",key:"4cs60a"}],["path",{d:"M15 13v2",key:"1xurst"}],["path",{d:"M9 13v2",key:"rq6x2g"}]]};c.node;let d=(0,b.default)(c);a.s(["Bot",0,d],795667)},842717,a=>{"use strict";var b=a.i(256857);let c={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"}]]};c.node;let d=(0,b.default)(c);a.s(["Brain",0,d],842717)},425404,a=>{"use strict";var b=a.i(256857);let c={name:"check",size:24,node:[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]};c.node;let d=(0,b.default)(c);a.s(["Check",0,d],425404)},156298,a=>{"use strict";var b=a.i(256857);let c={name:"chevron-right",size:24,node:[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]]};c.node;let d=(0,b.default)(c);a.s(["ChevronRight",0,d],156298)},995645,a=>{"use strict";var b=a.i(256857);let c={name:"circle",size:24,node:[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]};c.node;let d=(0,b.default)(c);a.s(["Circle",0,d],995645)},60084,a=>{"use strict";var b=a.i(256857);let c={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"}]]};c.node;let d=(0,b.default)(c);a.s(["Copy",0,d],60084)},228705,a=>{"use strict";var b=a.i(256857);let c={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"}]]};c.node;let d=(0,b.default)(c);a.s(["FilePlus",0,d],228705)},926128,a=>{"use strict";var b=a.i(256857);let c={name:"file-text",size:24,node:[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M10 9H8",key:"b1mrlr"}],["path",{d:"M16 13H8",key:"t4e002"}],["path",{d:"M16 17H8",key:"z1uh3a"}]]};c.node;let d=(0,b.default)(c);a.s(["FileText",0,d],926128)},270923,a=>{"use strict";var b=a.i(256857);let c={name:"flask-conical",size:24,node:[["path",{d:"M14 2v6a2 2 0 0 0 .245.96l5.51 10.08A2 2 0 0 1 18 22H6a2 2 0 0 1-1.755-2.96l5.51-10.08A2 2 0 0 0 10 8V2",key:"18mbvz"}],["path",{d:"M6.453 15h11.094",key:"3shlmq"}],["path",{d:"M8.5 2h7",key:"csnxdl"}]]};c.node;let d=(0,b.default)(c);a.s(["FlaskConical",0,d],270923)},108280,a=>{"use strict";var b=a.i(256857);let c={name:"loader-circle",size:24,node:[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]],aliases:["loader-2"]};c.node;let d=(0,b.default)(c);a.s(["Loader2",0,d],108280)},899593,a=>{"use strict";var b=a.i(256857);let c={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"}]]};c.node;let d=(0,b.default)(c);a.s(["Map",0,d],899593)},909898,a=>{"use strict";var b=a.i(256857);let c={name:"plug",size:24,node:[["path",{d:"M12 22v-5",key:"1ega77"}],["path",{d:"M15 8V2",key:"18g5xt"}],["path",{d:"M17 8a1 1 0 0 1 1 1v4a4 4 0 0 1-4 4h-4a4 4 0 0 1-4-4V9a1 1 0 0 1 1-1z",key:"1xoxul"}],["path",{d:"M9 8V2",key:"14iosj"}]]};c.node;let d=(0,b.default)(c);a.s(["Plug",0,d],909898)},200382,a=>{"use strict";var b=a.i(256857);let c={name:"plus",size:24,node:[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]]};c.node;let d=(0,b.default)(c);a.s(["Plus",0,d],200382)},72551,a=>{"use strict";var b=a.i(256857);let c={name:"search",size:24,node:[["path",{d:"m21 21-4.34-4.34",key:"14j7rj"}],["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}]]};c.node;let d=(0,b.default)(c);a.s(["Search",0,d],72551)},28386,a=>{"use strict";var b=a.i(256857);let c={name:"trash",size:24,node:[["path",{d:"M10 11v6",key:"nco0om"}],["path",{d:"M14 11v6",key:"outv1u"}],["path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6",key:"miytrc"}],["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2",key:"e791ji"}]],aliases:["trash-2"]};c.node;let d=(0,b.default)(c);a.s(["Trash2",0,d],28386)},879136,966420,a=>{"use strict";var b=a.i(256857);let c={name:"zap",size:24,node:[["path",{d:"M15.914 4a1.5 1.5 0 00-2.474-1.561l-9 9A1.5 1.5 0 005.5 14h4.002a.5.5 0 01.471.666L8.086 20a1.5 1.5 0 002.475 1.56l9-9A1.5 1.5 0 0018.5 10h-3.997a.5.5 0 01-.472-.667z",key:"1v7up4"}]]};c.node;let d=(0,b.default)(c);a.s(["Zap",0,d],879136);let e={name:"settings",size:24,node:[["path",{d:"M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915",key:"1i5ecw"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]};e.node;let f=(0,b.default)(e);a.s(["Settings",0,f],966420)},594023,(a,b,c)=>{"use strict";let d;Object.defineProperty(c,"__esModule",{value:!0});var e={getAssetToken:function(){return i},getAssetTokenQuery:function(){return j},getDeploymentId:function(){return g},getDeploymentIdQuery:function(){return h}};for(var f in e)Object.defineProperty(c,f,{enumerable:!0,get:e[f]});function g(){return d}function h(a=!1){return d?`${a?"&":"?"}dpl=${d}`:""}function i(){return!1}function j(a=!1){return""}d=void 0},173628,531761,a=>{"use strict";var b=a.i(662145),c=a.i(995645),d=a.i(256857);let e={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"]};e.node;let f=(0,d.default)(e);a.s(["CircleCheck",0,f],531761);let g={name:"circle-dot",size:24,node:[["circle",{cx:"12",cy:"12",r:"1",key:"41hilf"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]};g.node;let h=(0,d.default)(g),i={name:"circle-pause",size:24,node:[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"10",x2:"10",y1:"15",y2:"9",key:"c1nkhi"}],["line",{x1:"14",x2:"14",y1:"15",y2:"9",key:"h65svq"}]],aliases:["pause-circle"]};i.node;let j=(0,d.default)(i),k={name:"circle-slash",size:24,node:[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"9",x2:"15",y1:"15",y2:"9",key:"1dfufj"}]]};k.node;let l=(0,d.default)(k),m={name:"circle-x",size:24,node:[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m15 9-6 6",key:"1uzhvr"}],["path",{d:"m9 9 6 6",key:"z0biqf"}]],aliases:["x-circle"]};m.node;let n=(0,d.default)(m),o={name:"eye",size:24,node:[["path",{d:"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0",key:"1nclc0"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]};o.node;let p=(0,d.default)(o);var q=a.i(368114),r=a.i(443108);let s={todo:{label:"Todo",icon:c.Circle,text:"text-muted",chip:"border-border2 text-muted"},"in-progress":{label:"In progress",icon:h,text:"text-amber",chip:"border-amber/30 bg-amber/5 text-amber"},review:{label:"Review",icon:p,text:"text-accent",chip:"border-accent/30 bg-accent/5 text-accent"},blocked:{label:"Blocked",icon:l,text:"text-danger",chip:"border-danger/30 bg-danger/5 text-danger"},paused:{label:"Paused",icon:j,text:"text-muted",chip:"border-border2 bg-surface2 text-muted"},done:{label:"Done",icon:f,text:"text-teal",chip:"border-teal/30 bg-teal/5 text-teal"},cancelled:{label:"Cancelled",icon:n,text:"text-muted",chip:"border-border text-muted"}},t={gray:{text:"text-muted",chip:"border-border2 text-muted",bg:"bg-border2"},amber:{text:"text-amber",chip:"border-amber/30 bg-amber/5 text-amber",bg:"bg-amber"},accent:{text:"text-accent",chip:"border-accent/30 bg-accent/5 text-accent",bg:"bg-accent"},red:{text:"text-danger",chip:"border-danger/30 bg-danger/5 text-danger",bg:"bg-danger"},slate:{text:"text-muted",chip:"border-border2 bg-surface2 text-muted",bg:"bg-muted/60"},teal:{text:"text-teal",chip:"border-teal/30 bg-teal/5 text-teal",bg:"bg-teal"},blue:{text:"text-blue-400",chip:"border-blue-400/30 bg-blue-400/5 text-blue-400",bg:"bg-blue-400"},pink:{text:"text-pink-400",chip:"border-pink-400/30 bg-pink-400/5 text-pink-400",bg:"bg-pink-400"},green:{text:"text-green-400",chip:"border-green-400/30 bg-green-400/5 text-green-400",bg:"bg-green-400"},orange:{text:"text-orange-400",chip:"border-orange-400/30 bg-orange-400/5 text-orange-400",bg:"bg-orange-400"}};function u(a){let b=(0,r.statusDefIn)((0,r.useStatusDefs)(),a);return{def:b,label:b.label,icon:s[b.category].icon,...t[b.color]}}a.s(["STATUS_COLOR_CLASS",0,t,"STATUS_META",0,s,"StatusChip",0,function({status:a,className:c}){let d=u(a),e=d.icon;return(0,b.jsxs)("span",{className:(0,q.cn)("inline-flex items-center gap-1 rounded-sm border px-1.5 py-0.5 text-[11px] leading-none",d.chip,c),children:[(0,b.jsx)(e,{className:"size-3","aria-hidden":!0}),d.label]})},"StatusIcon",0,function({status:a,className:c}){let d=u(a),e=d.icon;return(0,b.jsx)(e,{"aria-label":d.label,className:(0,q.cn)("size-3.5 shrink-0",d.text,c)})},"useStatusLabel",0,function(){let a=(0,r.useStatusDefs)();return b=>(0,r.statusDefIn)(a,b).label}],173628)},699570,a=>{"use strict";var b=a.i(662145),c=a.i(174897),d=a.i(776692),e=a.i(142261),f=a.i(368114);let g=(0,e.cva)("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium ring-offset-bg transition-colors focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-accent focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",{variants:{variant:{default:"bg-accent text-accent-fg hover:bg-accent/90",destructive:"bg-danger text-destructive-foreground hover:bg-danger/90",outline:"border border-border bg-bg hover:bg-surface2 hover:text-txt",secondary:"bg-surface2 text-txt hover:bg-surface2/80",ghost:"hover:bg-surface2 hover:text-txt",link:"text-txt underline-offset-4 hover:underline"},size:{default:"h-10 px-4 py-2",sm:"h-9 rounded-md px-3",lg:"h-11 rounded-md px-8",icon:"h-10 w-10"}},defaultVariants:{variant:"default",size:"default"}}),h=c.forwardRef(({className:a,variant:c,size:e,asChild:h=!1,...i},j)=>{let k=h?d.Slot:"button";return(0,b.jsx)(k,{className:(0,f.cn)(g({variant:c,size:e,className:a})),ref:j,...i})});h.displayName="Button",a.s(["Button",0,h])},814574,a=>{"use strict";var b=a.i(662145),c=a.i(174897),d=a.i(923053),e=a.i(54165),f=a.i(368114);let g=d.Root;d.Trigger;let h=d.Portal;d.Close;let i=c.forwardRef(({className:a,...c},e)=>(0,b.jsx)(d.Overlay,{ref:e,className:(0,f.cn)("fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",a),...c}));i.displayName=d.Overlay.displayName;let j=c.forwardRef(({className:a,children:c,...g},j)=>(0,b.jsxs)(h,{children:[(0,b.jsx)(i,{}),(0,b.jsxs)(d.Content,{ref:j,className:(0,f.cn)("fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border border-border bg-surface p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg",a),...g,children:[c,(0,b.jsxs)(d.Close,{className:"absolute right-4 top-4 rounded-xs opacity-70 ring-offset-bg transition-opacity hover:opacity-100 focus:outline-hidden focus:ring-2 focus:ring-accent focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-surface2 data-[state=open]:text-muted",children:[(0,b.jsx)(e.X,{className:"h-4 w-4"}),(0,b.jsx)("span",{className:"sr-only",children:"Close"})]})]})]}));j.displayName=d.Content.displayName;let k=({className:a,...c})=>(0,b.jsx)("div",{className:(0,f.cn)("flex flex-col space-y-1.5 text-center sm:text-left",a),...c});k.displayName="DialogHeader";let l=c.forwardRef(({className:a,...c},e)=>(0,b.jsx)(d.Title,{ref:e,className:(0,f.cn)("text-lg font-semibold leading-none tracking-tight",a),...c}));l.displayName=d.Title.displayName,c.forwardRef(({className:a,...c},e)=>(0,b.jsx)(d.Description,{ref:e,className:(0,f.cn)("text-sm text-muted",a),...c})).displayName=d.Description.displayName,a.s(["Dialog",0,g,"DialogContent",0,j,"DialogHeader",0,k,"DialogTitle",0,l])},866718,a=>{"use strict";var b=a.i(662145),c=a.i(174897),d=a.i(368114);let e=c.forwardRef(({className:a,type:c,...e},f)=>(0,b.jsx)("input",{type:c,className:(0,d.cn)("flex h-10 w-full rounded-md border border-border bg-bg px-3 py-2 text-base ring-offset-bg file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-txt placeholder:text-muted focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-accent focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",a),ref:f,...e}));e.displayName="Input",a.s(["Input",0,e])},757061,a=>{"use strict";var b=a.i(662145),c=a.i(174897),d=a.i(923053),e=a.i(142261),f=a.i(54165),g=a.i(368114);let h=d.Root;d.Trigger,d.Close;let i=d.Portal,j=c.forwardRef(({className:a,...c},e)=>(0,b.jsx)(d.Overlay,{className:(0,g.cn)("fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",a),...c,ref:e}));j.displayName=d.Overlay.displayName;let k=(0,e.cva)("fixed z-50 gap-4 bg-surface p-6 shadow-lg transition ease-in-out data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:duration-300 data-[state=open]:duration-500",{variants:{side:{top:"inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top",bottom:"inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom",left:"inset-y-0 left-0 h-full w-3/4 border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm",right:"inset-y-0 right-0 h-full w-3/4 border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm"}},defaultVariants:{side:"right"}}),l=c.forwardRef(({side:a="right",className:c,children:e,...h},l)=>(0,b.jsxs)(i,{children:[(0,b.jsx)(j,{}),(0,b.jsxs)(d.Content,{ref:l,className:(0,g.cn)(k({side:a}),c),...h,children:[e,(0,b.jsxs)(d.Close,{className:"absolute right-4 top-4 rounded-xs opacity-70 ring-offset-bg transition-opacity hover:opacity-100 focus:outline-hidden focus:ring-2 focus:ring-accent focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-surface2",children:[(0,b.jsx)(f.X,{className:"h-4 w-4"}),(0,b.jsx)("span",{className:"sr-only",children:"Close"})]})]})]}));l.displayName=d.Content.displayName;let m=({className:a,...c})=>(0,b.jsx)("div",{className:(0,g.cn)("flex flex-col space-y-2 text-center sm:text-left",a),...c});m.displayName="SheetHeader";let n=c.forwardRef(({className:a,...c},e)=>(0,b.jsx)(d.Title,{ref:e,className:(0,g.cn)("text-lg font-semibold text-txt",a),...c}));n.displayName=d.Title.displayName;let o=c.forwardRef(({className:a,...c},e)=>(0,b.jsx)(d.Description,{ref:e,className:(0,g.cn)("text-sm text-muted",a),...c}));o.displayName=d.Description.displayName,a.s(["Sheet",0,h,"SheetContent",0,l,"SheetDescription",0,o,"SheetHeader",0,m,"SheetTitle",0,n])},689101,a=>{"use strict";var b=a.i(174897);let c=()=>()=>{};a.s(["useOrigin",0,function(){return(0,b.useSyncExternalStore)(c,()=>window.location.origin,()=>"")}])},210436,a=>{"use strict";var b=a.i(817163);a.s(["applyAccent",0,function(a){document.documentElement.setAttribute("data-accent",a)},"applyFontSize",0,function(a){document.documentElement.setAttribute("data-font-size",a)},"applyFonts",0,function(a){let c=document.documentElement;c.setAttribute("data-font-sans",a.fontSans??b.DEFAULT_SETTINGS.fontSans),c.setAttribute("data-font-mono",a.fontMono??b.DEFAULT_SETTINGS.fontMono)},"applyTheme",0,function(a){let b=document.documentElement,c=window.matchMedia("(prefers-color-scheme: dark)").matches;b.classList.toggle("dark","dark"===a||"system"===a&&c)}])},525395,a=>{"use strict";let b="vibedoc:ask-agent",c="vibedoc:open-chat";a.s(["ASK_AGENT_EVENT",0,b,"OPEN_CHAT_EVENT",0,c,"askAgent",0,function(a,c={}){window.dispatchEvent(new CustomEvent(b,{detail:{message:a,...c}}))},"openAgentChat",0,function(a){window.dispatchEvent(new CustomEvent(c,{detail:{chatId:a}}))}])},376847,192676,a=>{"use strict";let b=(a,b)=>`${a} ${b}${1===a?"":"s"}`;a.s(["catchUp",0,function(a,b){let c=a.filter(a=>Date.parse(a.end)>=b);return{sessions:c.length,tasksDone:new Set(c.flatMap(a=>a.tasks.filter(a=>"done"===a.lastStatus).map(a=>a.id))).size,docs:new Set(c.flatMap(a=>a.docs)).size,decisions:c.reduce((a,b)=>a+b.decisions.length,0)}},"groupSessions",0,function(a,c={}){let d=c.gapMs??18e5,e=[...a].sort((a,b)=>a.timestamp.localeCompare(b.timestamp)),f=new Map,g=new Map;for(let a of e){let b=a.sessionId;if(!b){let c=Date.parse(a.timestamp),e=g.get(a.actor);(!e||"session_start"===a.type||c-e.lastAt>d)&&(e={id:`legacy_${a.id}`,lastAt:c},g.set(a.actor,e)),e.lastAt=c,b=e.id}let c=f.get(b);c?c.push(a):f.set(b,[a])}return[...f].map(([a,c])=>(function(a,c){let d=new Map,e=new Set,f=[],g=!1,h=0;for(let a of c){"task_updated"===a.type&&a.taskId&&a.taskStatus&&d.set(a.taskId,a.taskStatus);let b=function(a){switch(a.type){case"doc_created":return a.detail??a.title.replace(/^Created: /,"");case"doc_deleted":return a.title.replace(/^Deleted /,"");case"doc_renamed":return a.title.split(" → ")[1]??null;default:return null}}(a);b&&e.add(b),"decision_logged"===a.type&&f.push(a.title),"memory_updated"===a.type&&(g=!0),"roadmap_updated"===a.type&&h++}let i=[...d].map(([a,b])=>({id:a,lastStatus:b})),j=i.filter(a=>"done"===a.lastStatus).length,k=[i.length?`${b(i.length,"task")} moved${j?` (${j} done)`:""}`:"",e.size?`${b(e.size,"doc")} changed`:"",f.length?b(f.length,"ADR"):"",h?b(h,"roadmap edit"):"",g?"memory updated":""].filter(Boolean);return{id:a,actor:c[0].actor,start:c[0].timestamp,end:c[c.length-1].timestamp,eventCount:c.length,eventIds:c.map(a=>a.id),tasks:i,docs:[...e],decisions:f,memoryUpdated:g,headline:k.join(" · ")||b(c.length,"event")}})(a,c)).sort((a,b)=>b.start.localeCompare(a.start))},"isLive",0,function(a,b=Date.now(),c=3e5){return b-Date.parse(a.end)<c},"sessionDuration",0,function(a){let b=Math.round((Date.parse(a.end)-Date.parse(a.start))/6e4);return b<1?"<1m":b<60?`${b}m`:`${Math.floor(b/60)}h ${b%60}m`}],376847);var c=a.i(256857);let d={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"}]]};d.node;let e=(0,c.default)(d);a.s(["Activity",0,e],192676)}];
2
+
3
+ //# sourceMappingURL=_09b02z-._.js.map