vibedoc 1.7.0 → 1.9.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 (800) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-path-routes-manifest.json +15 -0
  3. package/.next/build-manifest.json +3 -3
  4. package/.next/prerender-manifest.json +42 -14
  5. package/.next/routes-manifest.json +90 -0
  6. package/.next/server/app/(app)/activity/page.js +2 -2
  7. package/.next/server/app/(app)/activity/page.js.nft.json +1 -1
  8. package/.next/server/app/(app)/activity/page_client-reference-manifest.js +1 -1
  9. package/.next/server/app/(app)/board/page.js +2 -2
  10. package/.next/server/app/(app)/board/page.js.nft.json +1 -1
  11. package/.next/server/app/(app)/board/page_client-reference-manifest.js +1 -1
  12. package/.next/server/app/(app)/chat/page.js +2 -2
  13. package/.next/server/app/(app)/chat/page.js.nft.json +1 -1
  14. package/.next/server/app/(app)/chat/page_client-reference-manifest.js +1 -1
  15. package/.next/server/app/(app)/docs/page.js +2 -2
  16. package/.next/server/app/(app)/docs/page.js.nft.json +1 -1
  17. package/.next/server/app/(app)/docs/page_client-reference-manifest.js +1 -1
  18. package/.next/server/app/(app)/explorer/page.js +2 -2
  19. package/.next/server/app/(app)/explorer/page.js.nft.json +1 -1
  20. package/.next/server/app/(app)/explorer/page_client-reference-manifest.js +1 -1
  21. package/.next/server/app/(app)/manual-tests/page/app-paths-manifest.json +3 -0
  22. package/.next/server/app/(app)/manual-tests/page/build-manifest.json +20 -0
  23. package/.next/server/app/(app)/manual-tests/page/next-font-manifest.json +11 -0
  24. package/.next/server/app/(app)/manual-tests/page/react-loadable-manifest.json +1 -0
  25. package/.next/server/app/(app)/manual-tests/page/server-reference-manifest.json +4 -0
  26. package/.next/server/app/(app)/manual-tests/page.js +15 -0
  27. package/.next/server/app/(app)/manual-tests/page.js.map +5 -0
  28. package/.next/server/app/(app)/manual-tests/page.js.nft.json +1 -0
  29. package/.next/server/app/(app)/manual-tests/page_client-reference-manifest.js +3 -0
  30. package/.next/server/app/(app)/memory/page.js +2 -2
  31. package/.next/server/app/(app)/memory/page.js.nft.json +1 -1
  32. package/.next/server/app/(app)/memory/page_client-reference-manifest.js +1 -1
  33. package/.next/server/app/(app)/roadmap/page.js +2 -2
  34. package/.next/server/app/(app)/roadmap/page.js.nft.json +1 -1
  35. package/.next/server/app/(app)/roadmap/page_client-reference-manifest.js +1 -1
  36. package/.next/server/app/(app)/settings/page.js +2 -2
  37. package/.next/server/app/(app)/settings/page.js.nft.json +1 -1
  38. package/.next/server/app/(app)/settings/page_client-reference-manifest.js +1 -1
  39. package/.next/server/app/(app)/setup/page.js +2 -2
  40. package/.next/server/app/(app)/setup/page.js.nft.json +1 -1
  41. package/.next/server/app/(app)/setup/page_client-reference-manifest.js +1 -1
  42. package/.next/server/app/_global-error/page.js +2 -2
  43. package/.next/server/app/_global-error/page.js.nft.json +1 -1
  44. package/.next/server/app/_global-error.html +1 -1
  45. package/.next/server/app/_global-error.rsc +1 -1
  46. package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  47. package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  48. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  49. package/.next/server/app/_not-found/page.js +2 -2
  50. package/.next/server/app/_not-found/page.js.nft.json +1 -1
  51. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  52. package/.next/server/app/_not-found.html +1 -1
  53. package/.next/server/app/_not-found.rsc +3 -2
  54. package/.next/server/app/_not-found.segments/_full.segment.rsc +3 -2
  55. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +3 -2
  56. package/.next/server/app/_not-found.segments/_tree.segment.rsc +3 -2
  57. package/.next/server/app/activity.html +1 -1
  58. package/.next/server/app/activity.rsc +13 -12
  59. package/.next/server/app/activity.segments/!KGFwcCk/activity/__PAGE__.segment.rsc +12 -9
  60. package/.next/server/app/activity.segments/_full.segment.rsc +13 -12
  61. package/.next/server/app/activity.segments/_tree.segment.rsc +3 -2
  62. package/.next/server/app/api/activity/route.js +2 -2
  63. package/.next/server/app/api/activity/route.js.nft.json +1 -1
  64. package/.next/server/app/api/backlinks/route.js +2 -2
  65. package/.next/server/app/api/backlinks/route.js.nft.json +1 -1
  66. package/.next/server/app/api/chat/route.js +3 -3
  67. package/.next/server/app/api/chat/route.js.nft.json +1 -1
  68. package/.next/server/app/api/context/route.js +2 -2
  69. package/.next/server/app/api/context/route.js.nft.json +1 -1
  70. package/.next/server/app/api/conversations/route.js +3 -3
  71. package/.next/server/app/api/conversations/route.js.nft.json +1 -1
  72. package/.next/server/app/api/decisions/route.js +3 -3
  73. package/.next/server/app/api/decisions/route.js.nft.json +1 -1
  74. package/.next/server/app/api/docs/route.js +3 -3
  75. package/.next/server/app/api/docs/route.js.nft.json +1 -1
  76. package/.next/server/app/api/explorer/route.js +3 -3
  77. package/.next/server/app/api/explorer/route.js.nft.json +1 -1
  78. package/.next/server/app/api/mcp/route.js +3 -3
  79. package/.next/server/app/api/mcp/route.js.nft.json +1 -1
  80. package/.next/server/app/api/memory/entries/delete/route/app-paths-manifest.json +3 -0
  81. package/.next/server/app/api/memory/entries/delete/route/build-manifest.json +12 -0
  82. package/.next/server/app/api/memory/entries/delete/route/server-reference-manifest.json +4 -0
  83. package/.next/server/app/api/memory/entries/delete/route.js +9 -0
  84. package/.next/server/app/api/memory/entries/delete/route.js.map +5 -0
  85. package/.next/server/app/api/memory/entries/delete/route.js.nft.json +1 -0
  86. package/.next/server/app/api/memory/entries/delete/route_client-reference-manifest.js +3 -0
  87. package/.next/server/app/api/memory/entries/restore/route/app-paths-manifest.json +3 -0
  88. package/.next/server/app/api/memory/entries/restore/route/build-manifest.json +12 -0
  89. package/.next/server/app/api/memory/entries/restore/route/server-reference-manifest.json +4 -0
  90. package/.next/server/app/api/memory/entries/restore/route.js +9 -0
  91. package/.next/server/app/api/memory/entries/restore/route.js.map +5 -0
  92. package/.next/server/app/api/memory/entries/restore/route.js.nft.json +1 -0
  93. package/.next/server/app/api/memory/entries/restore/route_client-reference-manifest.js +3 -0
  94. package/.next/server/app/api/memory/entries/route/app-paths-manifest.json +3 -0
  95. package/.next/server/app/api/memory/entries/route/build-manifest.json +12 -0
  96. package/.next/server/app/api/memory/entries/route/server-reference-manifest.json +4 -0
  97. package/.next/server/app/api/memory/entries/route.js +8 -0
  98. package/.next/server/app/api/memory/entries/route.js.map +5 -0
  99. package/.next/server/app/api/memory/entries/route.js.nft.json +1 -0
  100. package/.next/server/app/api/memory/entries/route_client-reference-manifest.js +3 -0
  101. package/.next/server/app/api/memory/entries/save/route/app-paths-manifest.json +3 -0
  102. package/.next/server/app/api/memory/entries/save/route/build-manifest.json +12 -0
  103. package/.next/server/app/api/memory/entries/save/route/server-reference-manifest.json +4 -0
  104. package/.next/server/app/api/memory/entries/save/route.js +9 -0
  105. package/.next/server/app/api/memory/entries/save/route.js.map +5 -0
  106. package/.next/server/app/api/memory/entries/save/route.js.nft.json +1 -0
  107. package/.next/server/app/api/memory/entries/save/route_client-reference-manifest.js +3 -0
  108. package/.next/server/app/api/memory/graph/route/app-paths-manifest.json +3 -0
  109. package/.next/server/app/api/memory/graph/route/build-manifest.json +12 -0
  110. package/.next/server/app/api/memory/graph/route/server-reference-manifest.json +4 -0
  111. package/.next/server/app/api/memory/graph/route.js +9 -0
  112. package/.next/server/app/api/memory/graph/route.js.map +5 -0
  113. package/.next/server/app/api/memory/graph/route.js.nft.json +1 -0
  114. package/.next/server/app/api/memory/graph/route_client-reference-manifest.js +3 -0
  115. package/.next/server/app/api/memory/history/route/app-paths-manifest.json +3 -0
  116. package/.next/server/app/api/memory/history/route/build-manifest.json +12 -0
  117. package/.next/server/app/api/memory/history/route/server-reference-manifest.json +4 -0
  118. package/.next/server/app/api/memory/history/route.js +9 -0
  119. package/.next/server/app/api/memory/history/route.js.map +5 -0
  120. package/.next/server/app/api/memory/history/route.js.nft.json +1 -0
  121. package/.next/server/app/api/memory/history/route_client-reference-manifest.js +3 -0
  122. package/.next/server/app/api/memory/route.js +3 -3
  123. package/.next/server/app/api/memory/route.js.nft.json +1 -1
  124. package/.next/server/app/api/plan/apply/route.js +4 -4
  125. package/.next/server/app/api/plan/apply/route.js.nft.json +1 -1
  126. package/.next/server/app/api/projects/route.js +2 -2
  127. package/.next/server/app/api/projects/route.js.nft.json +1 -1
  128. package/.next/server/app/api/registry/route.js +3 -3
  129. package/.next/server/app/api/registry/route.js.nft.json +1 -1
  130. package/.next/server/app/api/roadmap/create/route.js +4 -4
  131. package/.next/server/app/api/roadmap/create/route.js.nft.json +1 -1
  132. package/.next/server/app/api/roadmap/delete/route.js +4 -4
  133. package/.next/server/app/api/roadmap/delete/route.js.nft.json +1 -1
  134. package/.next/server/app/api/roadmap/generate/route.js +4 -4
  135. package/.next/server/app/api/roadmap/generate/route.js.nft.json +1 -1
  136. package/.next/server/app/api/roadmap/layout/route.js +4 -4
  137. package/.next/server/app/api/roadmap/layout/route.js.nft.json +1 -1
  138. package/.next/server/app/api/roadmap/restore/route/app-paths-manifest.json +3 -0
  139. package/.next/server/app/api/roadmap/restore/route/build-manifest.json +12 -0
  140. package/.next/server/app/api/roadmap/restore/route/server-reference-manifest.json +4 -0
  141. package/.next/server/app/api/roadmap/restore/route.js +9 -0
  142. package/.next/server/app/api/roadmap/restore/route.js.map +5 -0
  143. package/.next/server/app/api/roadmap/restore/route.js.nft.json +1 -0
  144. package/.next/server/app/api/roadmap/restore/route_client-reference-manifest.js +3 -0
  145. package/.next/server/app/api/roadmap/route.js +3 -3
  146. package/.next/server/app/api/roadmap/route.js.nft.json +1 -1
  147. package/.next/server/app/api/roadmap/update/route.js +4 -4
  148. package/.next/server/app/api/roadmap/update/route.js.nft.json +1 -1
  149. package/.next/server/app/api/sessions/route.js +2 -2
  150. package/.next/server/app/api/sessions/route.js.nft.json +1 -1
  151. package/.next/server/app/api/settings/route.js +3 -3
  152. package/.next/server/app/api/settings/route.js.nft.json +1 -1
  153. package/.next/server/app/api/setup/generate/route.js +4 -4
  154. package/.next/server/app/api/setup/generate/route.js.nft.json +1 -1
  155. package/.next/server/app/api/setup/write/route.js +3 -3
  156. package/.next/server/app/api/setup/write/route.js.nft.json +1 -1
  157. package/.next/server/app/api/summary/route.js +2 -2
  158. package/.next/server/app/api/summary/route.js.nft.json +1 -1
  159. package/.next/server/app/api/tasks/bulk/route/app-paths-manifest.json +3 -0
  160. package/.next/server/app/api/tasks/bulk/route/build-manifest.json +12 -0
  161. package/.next/server/app/api/tasks/bulk/route/server-reference-manifest.json +4 -0
  162. package/.next/server/app/api/tasks/bulk/route.js +9 -0
  163. package/.next/server/app/api/tasks/bulk/route.js.map +5 -0
  164. package/.next/server/app/api/tasks/bulk/route.js.nft.json +1 -0
  165. package/.next/server/app/api/tasks/bulk/route_client-reference-manifest.js +3 -0
  166. package/.next/server/app/api/tasks/create/route.js +3 -3
  167. package/.next/server/app/api/tasks/create/route.js.nft.json +1 -1
  168. package/.next/server/app/api/tasks/delete/route/app-paths-manifest.json +3 -0
  169. package/.next/server/app/api/tasks/delete/route/build-manifest.json +12 -0
  170. package/.next/server/app/api/tasks/delete/route/server-reference-manifest.json +4 -0
  171. package/.next/server/app/api/tasks/delete/route.js +9 -0
  172. package/.next/server/app/api/tasks/delete/route.js.map +5 -0
  173. package/.next/server/app/api/tasks/delete/route.js.nft.json +1 -0
  174. package/.next/server/app/api/tasks/delete/route_client-reference-manifest.js +3 -0
  175. package/.next/server/app/api/tasks/manual-tests/route/app-paths-manifest.json +3 -0
  176. package/.next/server/app/api/tasks/manual-tests/route/build-manifest.json +12 -0
  177. package/.next/server/app/api/tasks/manual-tests/route/server-reference-manifest.json +4 -0
  178. package/.next/server/app/api/tasks/manual-tests/route.js +8 -0
  179. package/.next/server/app/api/tasks/manual-tests/route.js.map +5 -0
  180. package/.next/server/app/api/tasks/manual-tests/route.js.nft.json +1 -0
  181. package/.next/server/app/api/tasks/manual-tests/route_client-reference-manifest.js +3 -0
  182. package/.next/server/app/api/tasks/restore/route/app-paths-manifest.json +3 -0
  183. package/.next/server/app/api/tasks/restore/route/build-manifest.json +12 -0
  184. package/.next/server/app/api/tasks/restore/route/server-reference-manifest.json +4 -0
  185. package/.next/server/app/api/tasks/restore/route.js +9 -0
  186. package/.next/server/app/api/tasks/restore/route.js.map +5 -0
  187. package/.next/server/app/api/tasks/restore/route.js.nft.json +1 -0
  188. package/.next/server/app/api/tasks/restore/route_client-reference-manifest.js +3 -0
  189. package/.next/server/app/api/tasks/review/route/app-paths-manifest.json +3 -0
  190. package/.next/server/app/api/tasks/review/route/build-manifest.json +12 -0
  191. package/.next/server/app/api/tasks/review/route/server-reference-manifest.json +4 -0
  192. package/.next/server/app/api/tasks/review/route.js +9 -0
  193. package/.next/server/app/api/tasks/review/route.js.map +5 -0
  194. package/.next/server/app/api/tasks/review/route.js.nft.json +1 -0
  195. package/.next/server/app/api/tasks/review/route_client-reference-manifest.js +3 -0
  196. package/.next/server/app/api/tasks/route.js +3 -3
  197. package/.next/server/app/api/tasks/route.js.nft.json +1 -1
  198. package/.next/server/app/api/tasks/update/route/app-paths-manifest.json +3 -0
  199. package/.next/server/app/api/tasks/update/route/build-manifest.json +12 -0
  200. package/.next/server/app/api/tasks/update/route/server-reference-manifest.json +4 -0
  201. package/.next/server/app/api/tasks/update/route.js +9 -0
  202. package/.next/server/app/api/tasks/update/route.js.map +5 -0
  203. package/.next/server/app/api/tasks/update/route.js.nft.json +1 -0
  204. package/.next/server/app/api/tasks/update/route_client-reference-manifest.js +3 -0
  205. package/.next/server/app/api/views/route/app-paths-manifest.json +3 -0
  206. package/.next/server/app/api/views/route/build-manifest.json +12 -0
  207. package/.next/server/app/api/views/route/server-reference-manifest.json +4 -0
  208. package/.next/server/app/api/views/route.js +9 -0
  209. package/.next/server/app/api/views/route.js.map +5 -0
  210. package/.next/server/app/api/views/route.js.nft.json +1 -0
  211. package/.next/server/app/api/views/route_client-reference-manifest.js +3 -0
  212. package/.next/server/app/board.html +1 -1
  213. package/.next/server/app/board.rsc +13 -12
  214. package/.next/server/app/board.segments/!KGFwcCk/board/__PAGE__.segment.rsc +7 -6
  215. package/.next/server/app/board.segments/_full.segment.rsc +13 -12
  216. package/.next/server/app/board.segments/_tree.segment.rsc +3 -2
  217. package/.next/server/app/chat.html +1 -1
  218. package/.next/server/app/chat.rsc +13 -12
  219. package/.next/server/app/chat.segments/!KGFwcCk/chat/__PAGE__.segment.rsc +7 -6
  220. package/.next/server/app/chat.segments/_full.segment.rsc +13 -12
  221. package/.next/server/app/chat.segments/_tree.segment.rsc +3 -2
  222. package/.next/server/app/docs.html +1 -1
  223. package/.next/server/app/docs.rsc +13 -12
  224. package/.next/server/app/docs.segments/!KGFwcCk/docs/__PAGE__.segment.rsc +7 -6
  225. package/.next/server/app/docs.segments/_full.segment.rsc +13 -12
  226. package/.next/server/app/docs.segments/_tree.segment.rsc +3 -2
  227. package/.next/server/app/explorer.html +1 -1
  228. package/.next/server/app/explorer.rsc +13 -12
  229. package/.next/server/app/explorer.segments/!KGFwcCk/explorer/__PAGE__.segment.rsc +11 -9
  230. package/.next/server/app/explorer.segments/_full.segment.rsc +13 -12
  231. package/.next/server/app/explorer.segments/_tree.segment.rsc +3 -2
  232. package/.next/server/app/index.html +1 -1
  233. package/.next/server/app/index.rsc +3 -2
  234. package/.next/server/app/index.segments/__PAGE__.segment.rsc +3 -2
  235. package/.next/server/app/index.segments/_full.segment.rsc +3 -2
  236. package/.next/server/app/index.segments/_tree.segment.rsc +3 -2
  237. package/.next/server/app/manual-tests.html +1 -0
  238. package/.next/server/app/manual-tests.meta +31 -0
  239. package/.next/server/app/manual-tests.rsc +30 -0
  240. package/.next/server/app/manual-tests.segments/!KGFwcCk/manual-tests/__PAGE__.segment.rsc +33 -0
  241. package/.next/server/app/manual-tests.segments/_full.segment.rsc +30 -0
  242. package/.next/server/app/manual-tests.segments/_tree.segment.rsc +5 -0
  243. package/.next/server/app/memory.html +1 -1
  244. package/.next/server/app/memory.rsc +14 -12
  245. package/.next/server/app/memory.segments/!KGFwcCk/memory/__PAGE__.segment.rsc +13 -9
  246. package/.next/server/app/memory.segments/_full.segment.rsc +14 -12
  247. package/.next/server/app/memory.segments/_tree.segment.rsc +4 -2
  248. package/.next/server/app/page.js +2 -2
  249. package/.next/server/app/page.js.nft.json +1 -1
  250. package/.next/server/app/page_client-reference-manifest.js +1 -1
  251. package/.next/server/app/roadmap.html +1 -1
  252. package/.next/server/app/roadmap.rsc +13 -12
  253. package/.next/server/app/roadmap.segments/!KGFwcCk/roadmap/__PAGE__.segment.rsc +7 -6
  254. package/.next/server/app/roadmap.segments/_full.segment.rsc +13 -12
  255. package/.next/server/app/roadmap.segments/_tree.segment.rsc +3 -2
  256. package/.next/server/app/settings.html +1 -1
  257. package/.next/server/app/settings.rsc +13 -12
  258. package/.next/server/app/settings.segments/!KGFwcCk/settings/__PAGE__.segment.rsc +11 -9
  259. package/.next/server/app/settings.segments/_full.segment.rsc +13 -12
  260. package/.next/server/app/settings.segments/_tree.segment.rsc +3 -2
  261. package/.next/server/app/setup.html +1 -1
  262. package/.next/server/app/setup.rsc +13 -12
  263. package/.next/server/app/setup.segments/!KGFwcCk/setup/__PAGE__.segment.rsc +11 -9
  264. package/.next/server/app/setup.segments/_full.segment.rsc +13 -12
  265. package/.next/server/app/setup.segments/_tree.segment.rsc +3 -2
  266. package/.next/server/app-paths-manifest.json +15 -0
  267. package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0-5bkpj._.js → 11mp_@anthropic-ai_sdk_0-_cqh8._.js} +1 -1
  268. package/.next/server/chunks/{11mp_@anthropic-ai_sdk_01l5h3i._.js → 11mp_@anthropic-ai_sdk_00o5o78._.js} +1 -1
  269. package/.next/server/chunks/{11mp_@anthropic-ai_sdk_00psb_y._.js → 11mp_@anthropic-ai_sdk_03cp17a._.js} +1 -1
  270. package/.next/server/chunks/{11mp_@anthropic-ai_sdk_072r2bd._.js → 11mp_@anthropic-ai_sdk_07dk2er._.js} +1 -1
  271. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0_e9zpr._.js +3 -0
  272. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0_xx_qf._.js +3 -0
  273. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0aer9lc._.js +3 -0
  274. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0ax30pe._.js +3 -0
  275. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0gn7vgs._.js +3 -0
  276. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0hye94a._.js +3 -0
  277. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0ir5cgk._.js +3 -0
  278. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0je0_pa._.js +3 -0
  279. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0jfgh0o._.js +3 -0
  280. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0mha4x1._.js +3 -0
  281. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0n__boa._.js +3 -0
  282. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0sqv26_._.js +3 -0
  283. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0wnc6g-._.js +3 -0
  284. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0xh0g59._.js +3 -0
  285. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1-5wyhj._.js +3 -0
  286. package/.next/server/chunks/11mp_@anthropic-ai_sdk_13ahm3n._.js +3 -0
  287. package/.next/server/chunks/11mp_@anthropic-ai_sdk_13e6aq4._.js +3 -0
  288. package/.next/server/chunks/11mp_@anthropic-ai_sdk_14eg0ld._.js +3 -0
  289. package/.next/server/chunks/11mp_@anthropic-ai_sdk_15md1n2._.js +3 -0
  290. package/.next/server/chunks/11mp_@anthropic-ai_sdk_16av8b9._.js +3 -0
  291. package/.next/server/chunks/11mp_@anthropic-ai_sdk_16hjhv1._.js +3 -0
  292. package/.next/server/chunks/11mp_@anthropic-ai_sdk_16txvf7._.js +3 -0
  293. package/.next/server/chunks/11mp_@anthropic-ai_sdk_198yu7d._.js +3 -0
  294. package/.next/server/chunks/11mp_@anthropic-ai_sdk_198yu7d._.js.map +1 -0
  295. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1_9tfq3._.js +3 -0
  296. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1_9tfq3._.js.map +1 -0
  297. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1_izr2o._.js +3 -0
  298. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1_izr2o._.js.map +1 -0
  299. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1fljcyg._.js +3 -0
  300. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1fljcyg._.js.map +1 -0
  301. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1lrt6ul._.js +3 -0
  302. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1lrt6ul._.js.map +1 -0
  303. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1nev_ee._.js +3 -0
  304. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1nev_ee._.js.map +1 -0
  305. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1pgoe2i._.js +3 -0
  306. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1pgoe2i._.js.map +1 -0
  307. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1rgl7mu._.js +3 -0
  308. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1rgl7mu._.js.map +1 -0
  309. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1slq49k._.js +3 -0
  310. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1slq49k._.js.map +1 -0
  311. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1t9bdf0._.js +3 -0
  312. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1t9bdf0._.js.map +1 -0
  313. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1u6qqm2._.js +3 -0
  314. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1u6qqm2._.js.map +1 -0
  315. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1v7ygvz._.js +3 -0
  316. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1v7ygvz._.js.map +1 -0
  317. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1wls8zc._.js +3 -0
  318. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1wls8zc._.js.map +1 -0
  319. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1ywboja._.js +3 -0
  320. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1ywboja._.js.map +1 -0
  321. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_00kwqu5._.js +3 -0
  322. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_01j2nrd._.js +3 -0
  323. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_05ybj3t._.js +3 -0
  324. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_0adt7jj._.js +3 -0
  325. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_0bnl14w._.js +3 -0
  326. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_0f557t9._.js +3 -0
  327. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_0ra6giw._.js +3 -0
  328. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_107cqfx._.js +3 -0
  329. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1377sl6._.js +3 -0
  330. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1_2hcok._.js +3 -0
  331. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1g--m6y._.js +3 -0
  332. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1geopi5._.js +3 -0
  333. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1i11dte._.js +3 -0
  334. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1mj3_qk._.js +3 -0
  335. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1qgy210._.js +3 -0
  336. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1rkng9q._.js +3 -0
  337. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1vr8q8y._.js +3 -0
  338. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1vr8q8y._.js.map +1 -0
  339. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1x8b64g._.js +3 -0
  340. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1x8b64g._.js.map +1 -0
  341. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1zhahf7._.js +3 -0
  342. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1zhahf7._.js.map +1 -0
  343. package/.next/server/chunks/[root-of-the-server]__008focd._.js +3 -0
  344. package/.next/server/chunks/{[root-of-the-server]__093hlkh._.js.map → [root-of-the-server]__008focd._.js.map} +1 -1
  345. package/.next/server/chunks/[root-of-the-server]__01xmabe._.js +3 -0
  346. package/.next/server/chunks/{[root-of-the-server]__0nfvvy9._.js.map → [root-of-the-server]__01xmabe._.js.map} +1 -1
  347. package/.next/server/chunks/[root-of-the-server]__03ogp2r._.js +3 -0
  348. package/.next/server/chunks/[root-of-the-server]__03ogp2r._.js.map +1 -0
  349. package/.next/server/chunks/[root-of-the-server]__05us508._.js +3 -0
  350. package/.next/server/chunks/[root-of-the-server]__05us508._.js.map +1 -0
  351. package/.next/server/chunks/[root-of-the-server]__08yaps5._.js +3 -0
  352. package/.next/server/chunks/{[root-of-the-server]__0eqd-tw._.js.map → [root-of-the-server]__08yaps5._.js.map} +1 -1
  353. package/.next/server/chunks/{[root-of-the-server]__11s-8eg._.js → [root-of-the-server]__09oyvwa._.js} +2 -2
  354. package/.next/server/chunks/{[root-of-the-server]__1wr0m-s._.js.map → [root-of-the-server]__09oyvwa._.js.map} +1 -1
  355. package/.next/server/chunks/[root-of-the-server]__0axugex._.js +3 -0
  356. package/.next/server/chunks/{[root-of-the-server]__1u_q61h._.js.map → [root-of-the-server]__0axugex._.js.map} +1 -1
  357. package/.next/server/chunks/[root-of-the-server]__0b2488c._.js +3 -0
  358. package/.next/server/chunks/{[root-of-the-server]__0aynzrb._.js.map → [root-of-the-server]__0b2488c._.js.map} +1 -1
  359. package/.next/server/chunks/[root-of-the-server]__0b6w_wb._.js +3 -0
  360. package/.next/server/chunks/[root-of-the-server]__0b6w_wb._.js.map +1 -0
  361. package/.next/server/chunks/{[root-of-the-server]__1y3u5ud._.js → [root-of-the-server]__0cbh1s-._.js} +2 -2
  362. package/.next/server/chunks/[root-of-the-server]__0cbh1s-._.js.map +1 -0
  363. package/.next/server/chunks/[root-of-the-server]__0exzf-v._.js +3 -0
  364. package/.next/server/chunks/[root-of-the-server]__0exzf-v._.js.map +1 -0
  365. package/.next/server/chunks/[root-of-the-server]__0gnil0m._.js +3 -0
  366. package/.next/server/chunks/{[root-of-the-server]__18kxo4a._.js.map → [root-of-the-server]__0gnil0m._.js.map} +1 -1
  367. package/.next/server/chunks/[root-of-the-server]__0hfyuhq._.js +3 -0
  368. package/.next/server/chunks/[root-of-the-server]__0hfyuhq._.js.map +1 -0
  369. package/.next/server/chunks/[root-of-the-server]__0hg1r2b._.js +3 -0
  370. package/.next/server/chunks/[root-of-the-server]__0hg1r2b._.js.map +1 -0
  371. package/.next/server/chunks/[root-of-the-server]__0ikbk15._.js +3 -0
  372. package/.next/server/chunks/{[root-of-the-server]__1j0rrps._.js.map → [root-of-the-server]__0ikbk15._.js.map} +1 -1
  373. package/.next/server/chunks/[root-of-the-server]__0jr_5eq._.js +110 -0
  374. package/.next/server/chunks/[root-of-the-server]__0jr_5eq._.js.map +1 -0
  375. package/.next/server/chunks/[root-of-the-server]__0khz7sy._.js +3 -0
  376. package/.next/server/chunks/{[root-of-the-server]__1jxu2x9._.js.map → [root-of-the-server]__0khz7sy._.js.map} +1 -1
  377. package/.next/server/chunks/[root-of-the-server]__0lf11mz._.js +3 -0
  378. package/.next/server/chunks/{[root-of-the-server]__1lj_2cv._.js.map → [root-of-the-server]__0lf11mz._.js.map} +1 -1
  379. package/.next/server/chunks/[root-of-the-server]__0m8hmg0._.js +3 -0
  380. package/.next/server/chunks/{[root-of-the-server]__1q4ahvz._.js.map → [root-of-the-server]__0m8hmg0._.js.map} +1 -1
  381. package/.next/server/chunks/[root-of-the-server]__0qij7wy._.js +3 -0
  382. package/.next/server/chunks/{[root-of-the-server]__1y-tt29._.js.map → [root-of-the-server]__0qij7wy._.js.map} +1 -1
  383. package/.next/server/chunks/[root-of-the-server]__0vf-0gp._.js +3 -0
  384. package/.next/server/chunks/[root-of-the-server]__0vf-0gp._.js.map +1 -0
  385. package/.next/server/chunks/[root-of-the-server]__0x8wtot._.js +3 -0
  386. package/.next/server/chunks/{[root-of-the-server]__17xb02p._.js.map → [root-of-the-server]__0x8wtot._.js.map} +1 -1
  387. package/.next/server/chunks/[root-of-the-server]__0y5usoz._.js +3 -0
  388. package/.next/server/chunks/[root-of-the-server]__0y5usoz._.js.map +1 -0
  389. package/.next/server/chunks/[root-of-the-server]__15c5snv._.js +3 -0
  390. package/.next/server/chunks/{[root-of-the-server]__05l6129._.js.map → [root-of-the-server]__15c5snv._.js.map} +1 -1
  391. package/.next/server/chunks/[root-of-the-server]__16u25oa._.js +3 -0
  392. package/.next/server/chunks/{[root-of-the-server]__142icjb._.js.map → [root-of-the-server]__16u25oa._.js.map} +1 -1
  393. package/.next/server/chunks/[root-of-the-server]__18dt3sr._.js +3 -0
  394. package/.next/server/chunks/{[root-of-the-server]__14aeqoi._.js.map → [root-of-the-server]__18dt3sr._.js.map} +1 -1
  395. package/.next/server/chunks/[root-of-the-server]__19rxcu4._.js +110 -0
  396. package/.next/server/chunks/[root-of-the-server]__19rxcu4._.js.map +1 -0
  397. package/.next/server/chunks/[root-of-the-server]__1_qenei._.js +3 -0
  398. package/.next/server/chunks/[root-of-the-server]__1_qenei._.js.map +1 -0
  399. package/.next/server/chunks/[root-of-the-server]__1a7d63a._.js +3 -0
  400. package/.next/server/chunks/[root-of-the-server]__1a7d63a._.js.map +1 -0
  401. package/.next/server/chunks/[root-of-the-server]__1b448u7._.js +3 -0
  402. package/.next/server/chunks/{[root-of-the-server]__06zf_sh._.js.map → [root-of-the-server]__1b448u7._.js.map} +1 -1
  403. package/.next/server/chunks/[root-of-the-server]__1e68zmx._.js +3 -0
  404. package/.next/server/chunks/[root-of-the-server]__1e68zmx._.js.map +1 -0
  405. package/.next/server/chunks/[root-of-the-server]__1gvv2xp._.js +3 -0
  406. package/.next/server/chunks/{[root-of-the-server]__1y3u5ud._.js.map → [root-of-the-server]__1gvv2xp._.js.map} +1 -1
  407. package/.next/server/chunks/[root-of-the-server]__1jel07j._.js +3 -0
  408. package/.next/server/chunks/[root-of-the-server]__1jel07j._.js.map +1 -0
  409. package/.next/server/chunks/[root-of-the-server]__1jz98vb._.js +3 -0
  410. package/.next/server/chunks/{[root-of-the-server]__106gpvh._.js.map → [root-of-the-server]__1jz98vb._.js.map} +1 -1
  411. package/.next/server/chunks/[root-of-the-server]__1la-6xe._.js +3 -0
  412. package/.next/server/chunks/[root-of-the-server]__1la-6xe._.js.map +1 -0
  413. package/.next/server/chunks/[root-of-the-server]__1p6-0l0._.js +3 -0
  414. package/.next/server/chunks/[root-of-the-server]__1p6-0l0._.js.map +1 -0
  415. package/.next/server/chunks/[root-of-the-server]__1qd-ecl._.js +110 -0
  416. package/.next/server/chunks/[root-of-the-server]__1qd-ecl._.js.map +1 -0
  417. package/.next/server/chunks/[root-of-the-server]__1r_0uma._.js +3 -0
  418. package/.next/server/chunks/{[root-of-the-server]__11s-8eg._.js.map → [root-of-the-server]__1r_0uma._.js.map} +1 -1
  419. package/.next/server/chunks/[root-of-the-server]__1ssunti._.js +3 -0
  420. package/.next/server/chunks/{[root-of-the-server]__17p0rkn._.js.map → [root-of-the-server]__1ssunti._.js.map} +1 -1
  421. package/.next/server/chunks/[root-of-the-server]__1tu85zx._.js +3 -0
  422. package/.next/server/chunks/[root-of-the-server]__1tu85zx._.js.map +1 -0
  423. package/.next/server/chunks/[root-of-the-server]__1wcd2x9._.js +3 -0
  424. package/.next/server/chunks/[root-of-the-server]__1wcd2x9._.js.map +1 -0
  425. package/.next/server/chunks/[root-of-the-server]__1xpp36t._.js +3 -0
  426. package/.next/server/chunks/[root-of-the-server]__1xpp36t._.js.map +1 -0
  427. package/.next/server/chunks/[root-of-the-server]__1z3tswg._.js +3 -0
  428. package/.next/server/chunks/[root-of-the-server]__1z3tswg._.js.map +1 -0
  429. package/.next/server/chunks/_04byth9._.js +34 -19
  430. package/.next/server/chunks/_04byth9._.js.map +1 -1
  431. package/.next/server/chunks/_0safx0g._.js +10 -0
  432. package/.next/server/chunks/_0safx0g._.js.map +1 -0
  433. package/.next/server/chunks/_1au4syj._.js +1 -1
  434. package/.next/server/chunks/_1au4syj._.js.map +1 -1
  435. package/.next/server/chunks/_1b5fqxy._.js.map +1 -1
  436. package/.next/server/chunks/_1ivswa9._.js +3 -0
  437. package/.next/server/chunks/_1ivswa9._.js.map +1 -0
  438. package/.next/server/chunks/_next-internal_server_app_api_memory_entries_delete_route_actions_1a4-ad5.js +3 -0
  439. package/.next/server/chunks/_next-internal_server_app_api_memory_entries_delete_route_actions_1a4-ad5.js.map +1 -0
  440. package/.next/server/chunks/_next-internal_server_app_api_memory_entries_restore_route_actions_07637mh.js +3 -0
  441. package/.next/server/chunks/_next-internal_server_app_api_memory_entries_restore_route_actions_07637mh.js.map +1 -0
  442. package/.next/server/chunks/_next-internal_server_app_api_memory_entries_route_actions_0bxuv92.js +3 -0
  443. package/.next/server/chunks/_next-internal_server_app_api_memory_entries_route_actions_0bxuv92.js.map +1 -0
  444. package/.next/server/chunks/_next-internal_server_app_api_memory_entries_save_route_actions_0bwga-2.js +3 -0
  445. package/.next/server/chunks/_next-internal_server_app_api_memory_entries_save_route_actions_0bwga-2.js.map +1 -0
  446. package/.next/server/chunks/_next-internal_server_app_api_memory_graph_route_actions_0pca9et.js +3 -0
  447. package/.next/server/chunks/_next-internal_server_app_api_memory_graph_route_actions_0pca9et.js.map +1 -0
  448. package/.next/server/chunks/_next-internal_server_app_api_memory_history_route_actions_0w5pu5p.js +3 -0
  449. package/.next/server/chunks/_next-internal_server_app_api_memory_history_route_actions_0w5pu5p.js.map +1 -0
  450. package/.next/server/chunks/_next-internal_server_app_api_roadmap_restore_route_actions_0skshp1.js +3 -0
  451. package/.next/server/chunks/_next-internal_server_app_api_roadmap_restore_route_actions_0skshp1.js.map +1 -0
  452. package/.next/server/chunks/_next-internal_server_app_api_tasks_bulk_route_actions_1k75mlb.js +3 -0
  453. package/.next/server/chunks/_next-internal_server_app_api_tasks_bulk_route_actions_1k75mlb.js.map +1 -0
  454. package/.next/server/chunks/_next-internal_server_app_api_tasks_delete_route_actions_1k1g6mw.js +3 -0
  455. package/.next/server/chunks/_next-internal_server_app_api_tasks_delete_route_actions_1k1g6mw.js.map +1 -0
  456. package/.next/server/chunks/_next-internal_server_app_api_tasks_manual-tests_route_actions_1rpog0y.js +3 -0
  457. package/.next/server/chunks/_next-internal_server_app_api_tasks_manual-tests_route_actions_1rpog0y.js.map +1 -0
  458. package/.next/server/chunks/_next-internal_server_app_api_tasks_restore_route_actions_1ecsti8.js +3 -0
  459. package/.next/server/chunks/_next-internal_server_app_api_tasks_restore_route_actions_1ecsti8.js.map +1 -0
  460. package/.next/server/chunks/_next-internal_server_app_api_tasks_review_route_actions_1dly07f.js +3 -0
  461. package/.next/server/chunks/_next-internal_server_app_api_tasks_review_route_actions_1dly07f.js.map +1 -0
  462. package/.next/server/chunks/_next-internal_server_app_api_tasks_update_route_actions_0z-ho6g.js +3 -0
  463. package/.next/server/chunks/_next-internal_server_app_api_tasks_update_route_actions_0z-ho6g.js.map +1 -0
  464. package/.next/server/chunks/_next-internal_server_app_api_views_route_actions_10-2c0e.js +3 -0
  465. package/.next/server/chunks/_next-internal_server_app_api_views_route_actions_10-2c0e.js.map +1 -0
  466. package/.next/server/chunks/ssr/0_g__next_dist_000c5_m._.js +3 -0
  467. package/.next/server/chunks/ssr/0_g__next_dist_000c5_m._.js.map +1 -0
  468. 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
  469. package/.next/server/chunks/ssr/0_nd_mermaid_dist_mermaid_core_mjs_027n2yl._.js.map +1 -0
  470. package/.next/server/chunks/ssr/{1u84_katex_dist_katex_mjs_1z0p1bs._.js → 1u84_katex_dist_katex_mjs_1kb5xea._.js} +1 -1
  471. package/.next/server/chunks/ssr/1u84_katex_dist_katex_mjs_1kb5xea._.js.map +1 -0
  472. package/.next/server/chunks/ssr/1x05_lucide-react_dist_esm_icons_05ggp3i._.js +1 -1
  473. package/.next/server/chunks/ssr/1x05_lucide-react_dist_esm_icons_05ggp3i._.js.map +1 -1
  474. package/.next/server/chunks/ssr/1x05_lucide-react_dist_esm_icons_0wurouw._.js +3 -0
  475. package/.next/server/chunks/ssr/1x05_lucide-react_dist_esm_icons_0wurouw._.js.map +1 -0
  476. package/.next/server/chunks/ssr/1x05_lucide-react_dist_esm_icons_14hl50o._.js +3 -0
  477. package/.next/server/chunks/ssr/1x05_lucide-react_dist_esm_icons_14hl50o._.js.map +1 -0
  478. package/.next/server/chunks/ssr/1x05_lucide-react_dist_esm_icons_folder-open_mjs_117ipzw._.js +3 -0
  479. package/.next/server/chunks/ssr/1x05_lucide-react_dist_esm_icons_folder-open_mjs_117ipzw._.js.map +1 -0
  480. package/.next/server/chunks/ssr/1x05_lucide-react_dist_esm_icons_triangle-alert_mjs_0ei-mpz._.js +3 -0
  481. package/.next/server/chunks/ssr/1x05_lucide-react_dist_esm_icons_triangle-alert_mjs_0ei-mpz._.js.map +1 -0
  482. package/.next/server/chunks/ssr/[root-of-the-server]__0hcextx._.js +3 -0
  483. package/.next/server/chunks/ssr/[root-of-the-server]__0hcextx._.js.map +1 -0
  484. package/.next/server/chunks/ssr/[root-of-the-server]__0opgo3t._.js +14 -0
  485. package/.next/server/chunks/ssr/{[root-of-the-server]__0noc5ay._.js.map → [root-of-the-server]__0opgo3t._.js.map} +1 -1
  486. package/.next/server/chunks/ssr/[root-of-the-server]__0xt_0w2._.js.map +1 -1
  487. package/.next/server/chunks/ssr/[root-of-the-server]__1jv5ug1._.js +3 -0
  488. package/.next/server/chunks/ssr/{[root-of-the-server]__1pk-w2i._.js.map → [root-of-the-server]__1jv5ug1._.js.map} +1 -1
  489. package/.next/server/chunks/ssr/_04xff_2._.js +1 -1
  490. package/.next/server/chunks/ssr/_04xff_2._.js.map +1 -1
  491. package/.next/server/chunks/ssr/_071j6mr._.js +4 -0
  492. package/.next/server/chunks/ssr/_071j6mr._.js.map +1 -0
  493. package/.next/server/chunks/ssr/_0i75x-o._.js +3 -0
  494. package/.next/server/chunks/ssr/_0i75x-o._.js.map +1 -0
  495. package/.next/server/chunks/ssr/_0idb-vo._.js +151 -0
  496. package/.next/server/chunks/ssr/_0idb-vo._.js.map +1 -0
  497. package/.next/server/chunks/ssr/_0qp3gu7._.js +3 -0
  498. package/.next/server/chunks/ssr/_0qp3gu7._.js.map +1 -0
  499. package/.next/server/chunks/ssr/_15qpb4z._.js +3 -0
  500. package/.next/server/chunks/ssr/_15qpb4z._.js.map +1 -0
  501. package/.next/server/chunks/ssr/_1fg0usp._.js +3 -0
  502. package/.next/server/chunks/ssr/_1fg0usp._.js.map +1 -0
  503. package/.next/server/chunks/ssr/_1gxjjvh._.js +1 -1
  504. package/.next/server/chunks/ssr/_1gxjjvh._.js.map +1 -1
  505. package/.next/server/chunks/ssr/_1h0wfpz._.js +3 -0
  506. package/.next/server/chunks/ssr/_1h0wfpz._.js.map +1 -0
  507. package/.next/server/chunks/ssr/_1ncdakv._.js +4 -0
  508. package/.next/server/chunks/ssr/_1ncdakv._.js.map +1 -0
  509. package/.next/server/chunks/ssr/_1ocnpth._.js +3 -0
  510. package/.next/server/chunks/ssr/_1ocnpth._.js.map +1 -0
  511. package/.next/server/chunks/ssr/_1t76zdx._.js +3 -0
  512. package/.next/server/chunks/ssr/_1t76zdx._.js.map +1 -0
  513. package/.next/server/chunks/ssr/_1uno162._.js +3 -0
  514. package/.next/server/chunks/ssr/_1uno162._.js.map +1 -0
  515. package/.next/server/chunks/ssr/_next-internal_server_app_(app)_manual-tests_page_actions_1g5zjb7.js +3 -0
  516. package/.next/server/chunks/ssr/_next-internal_server_app_(app)_manual-tests_page_actions_1g5zjb7.js.map +1 -0
  517. package/.next/server/chunks/ssr/{node_modules__pnpm_04khl_s._.js → node_modules__pnpm_01bjcv9._.js} +1 -1
  518. package/.next/server/chunks/ssr/{node_modules__pnpm_08sqeu2._.js → node_modules__pnpm_03qrzdb._.js} +1 -1
  519. package/.next/server/chunks/ssr/{node_modules__pnpm_104pzhc._.js → node_modules__pnpm_06d-fdo._.js} +2 -2
  520. package/.next/server/chunks/ssr/node_modules__pnpm_0al3nfy._.js +3 -0
  521. package/.next/server/chunks/ssr/node_modules__pnpm_0al3nfy._.js.map +1 -0
  522. package/.next/server/chunks/ssr/node_modules__pnpm_0aoa6rg._.js +4 -0
  523. package/.next/server/chunks/ssr/node_modules__pnpm_0aoa6rg._.js.map +1 -0
  524. package/.next/server/chunks/ssr/{node_modules__pnpm_1xzf8g_._.js → node_modules__pnpm_0ctisl0._.js} +1 -1
  525. package/.next/server/chunks/ssr/{node_modules__pnpm_0og06fy._.js → node_modules__pnpm_0fwp8jm._.js} +1 -1
  526. package/.next/server/chunks/ssr/{node_modules__pnpm_0a9b2ei._.js → node_modules__pnpm_0kpu0-2._.js} +1 -1
  527. package/.next/server/chunks/ssr/{node_modules__pnpm_0jpv2b6._.js → node_modules__pnpm_0vry74x._.js} +2 -2
  528. package/.next/server/chunks/ssr/{node_modules__pnpm_0fd3pr1._.js → node_modules__pnpm_0ycbjbd._.js} +2 -2
  529. package/.next/server/chunks/ssr/{node_modules__pnpm_1l8k8w1._.js → node_modules__pnpm_1-76qxg._.js} +1 -1
  530. package/.next/server/chunks/ssr/{node_modules__pnpm_0ah02mu._.js → node_modules__pnpm_1-r94f7._.js} +1 -1
  531. package/.next/server/chunks/ssr/{node_modules__pnpm_1yq90z7._.js → node_modules__pnpm_14piqi4._.js} +1 -1
  532. package/.next/server/chunks/ssr/node_modules__pnpm_14piqi4._.js.map +1 -0
  533. package/.next/server/chunks/ssr/{node_modules__pnpm_0dwi7mu._.js → node_modules__pnpm_16u1vfb._.js} +2 -2
  534. package/.next/server/chunks/ssr/node_modules__pnpm_16u1vfb._.js.map +1 -0
  535. package/.next/server/chunks/ssr/{node_modules__pnpm_0f77_ng._.js → node_modules__pnpm_17i6z2d._.js} +1 -1
  536. package/.next/server/chunks/ssr/{node_modules__pnpm_09_i2jk._.js → node_modules__pnpm_189m48n._.js} +1 -1
  537. package/.next/server/chunks/ssr/node_modules__pnpm_189m48n._.js.map +1 -0
  538. package/.next/server/chunks/ssr/{node_modules__pnpm_0ttvopp._.js → node_modules__pnpm_192f222._.js} +1 -1
  539. package/.next/server/chunks/ssr/{node_modules__pnpm_07t_e8c._.js → node_modules__pnpm_1a48_nl._.js} +1 -1
  540. package/.next/server/chunks/ssr/{node_modules__pnpm_195j8p_._.js → node_modules__pnpm_1aa37e1._.js} +1 -1
  541. package/.next/server/chunks/ssr/{node_modules__pnpm_0cj8ryj._.js → node_modules__pnpm_1f440kx._.js} +1 -1
  542. package/.next/server/chunks/ssr/{node_modules__pnpm_0u3u82f._.js → node_modules__pnpm_1fn3ejy._.js} +1 -1
  543. package/.next/server/chunks/ssr/{node_modules__pnpm_0ts89ne._.js → node_modules__pnpm_1min2jl._.js} +1 -1
  544. package/.next/server/chunks/ssr/{node_modules__pnpm_1woddr6._.js → node_modules__pnpm_1q_hhr3._.js} +2 -2
  545. package/.next/server/chunks/ssr/{node_modules__pnpm_1x0t5_z._.js → node_modules__pnpm_1qmkxyo._.js} +1 -1
  546. package/.next/server/chunks/ssr/{node_modules__pnpm_0gifu-u._.js → node_modules__pnpm_1qp_jvj._.js} +2 -2
  547. package/.next/server/chunks/ssr/{node_modules__pnpm_0y35hs4._.js → node_modules__pnpm_1ssjj4u._.js} +1 -1
  548. package/.next/server/chunks/ssr/{node_modules__pnpm_0qc3gsk._.js → node_modules__pnpm_1txccoj._.js} +1 -1
  549. package/.next/server/chunks/ssr/{node_modules__pnpm_1w0f1m5._.js → node_modules__pnpm_1uwkcin._.js} +1 -1
  550. package/.next/server/chunks/ssr/node_modules__pnpm_1xeothw._.js +3 -0
  551. package/.next/server/chunks/ssr/node_modules__pnpm_1xeothw._.js.map +1 -0
  552. package/.next/server/chunks/ssr/{node_modules__pnpm_0286-tg._.js → node_modules__pnpm_1ygal0c._.js} +1 -1
  553. package/.next/server/chunks/ssr/src_app_(app)_activity_page_tsx_13jd6bn._.js +1 -1
  554. package/.next/server/chunks/ssr/src_app_(app)_activity_page_tsx_13jd6bn._.js.map +1 -1
  555. package/.next/server/chunks/ssr/src_app_(app)_board_page_tsx_0gpfc77._.js +3 -0
  556. package/.next/server/chunks/ssr/src_app_(app)_board_page_tsx_0gpfc77._.js.map +1 -0
  557. package/.next/server/chunks/ssr/src_app_(app)_chat_page_tsx_0c3e4l4._.js +1 -1
  558. package/.next/server/chunks/ssr/src_app_(app)_chat_page_tsx_0c3e4l4._.js.map +1 -1
  559. package/.next/server/chunks/ssr/src_app_(app)_layout_tsx_1yu5hom._.js +1 -1
  560. package/.next/server/chunks/ssr/src_app_(app)_layout_tsx_1yu5hom._.js.map +1 -1
  561. package/.next/server/chunks/ssr/src_app_(app)_manual-tests_page_tsx_01tnunf._.js +3 -0
  562. package/.next/server/chunks/ssr/src_app_(app)_manual-tests_page_tsx_01tnunf._.js.map +1 -0
  563. package/.next/server/chunks/ssr/src_app_(app)_memory_page_tsx_19jhb1c._.js +13 -0
  564. package/.next/server/chunks/ssr/src_app_(app)_memory_page_tsx_19jhb1c._.js.map +1 -0
  565. package/.next/server/chunks/ssr/src_app_(app)_roadmap_page_tsx_0vcq3jr._.js +2 -2
  566. package/.next/server/chunks/ssr/src_app_(app)_roadmap_page_tsx_0vcq3jr._.js.map +1 -1
  567. package/.next/server/chunks/ssr/src_app_(app)_settings_page_tsx_0zevtee._.js +2 -2
  568. package/.next/server/chunks/ssr/src_app_(app)_settings_page_tsx_0zevtee._.js.map +1 -1
  569. package/.next/server/chunks/ssr/src_app_(app)_setup_page_tsx_1yids_n._.js +1 -1
  570. package/.next/server/chunks/ssr/src_app_(app)_setup_page_tsx_1yids_n._.js.map +1 -1
  571. package/.next/server/chunks/ssr/src_components_0eyr_zi._.js +3 -0
  572. package/.next/server/chunks/ssr/src_components_0eyr_zi._.js.map +1 -0
  573. package/.next/server/chunks/ssr/src_components_1s861m8._.js +3 -0
  574. package/.next/server/chunks/ssr/src_components_1s861m8._.js.map +1 -0
  575. package/.next/server/chunks/ssr/src_components_chat_ChatView_tsx_0h5j-e2._.js +3 -0
  576. package/.next/server/chunks/ssr/src_components_chat_ChatView_tsx_0h5j-e2._.js.map +1 -0
  577. package/.next/server/chunks/ssr/src_context_ChatContext_tsx_0lowp8p._.js +2 -2
  578. package/.next/server/chunks/ssr/src_context_ChatContext_tsx_0lowp8p._.js.map +1 -1
  579. package/.next/server/middleware-build-manifest.js +3 -3
  580. package/.next/server/next-font-manifest.js +1 -1
  581. package/.next/server/next-font-manifest.json +4 -0
  582. package/.next/server/pages/404.html +1 -1
  583. package/.next/server/pages/500.html +1 -1
  584. package/.next/server/prefetch-hints.json +19 -0
  585. package/.next/server/server-reference-manifest.js +1 -1
  586. package/.next/server/server-reference-manifest.json +1 -1
  587. package/.next/static/chunks/02cj5_i9np4sg.js +3 -0
  588. package/.next/static/chunks/02i5hsdat1nuq.css +9 -0
  589. package/.next/static/chunks/0b547y6rqct9z.js +1 -0
  590. package/.next/static/chunks/0e3ha56i_0j05.css +1 -0
  591. package/.next/static/chunks/0f32hudp0yir7.js +2 -0
  592. package/.next/static/chunks/0mgifb98wbesa.js +1 -0
  593. package/.next/static/chunks/0rsmz1jgro1kj.js +1 -0
  594. package/.next/static/chunks/0wnq_kh8-6wc1.js +2 -0
  595. package/.next/static/chunks/13l4l-boqg8fx.js +1 -0
  596. package/.next/static/chunks/14hxe1qiaram9.js +1 -0
  597. package/.next/static/chunks/16k196zyl-n9q.js +1 -0
  598. package/.next/static/chunks/18b5l8p0vd9f8.js +1 -0
  599. package/.next/static/chunks/1acpfyut6j4e2.js +1 -0
  600. package/.next/static/chunks/1c_8t2kecjnua.js +1 -0
  601. package/.next/static/chunks/{1xyepk9227yej.js → 1l_dys0-y5-r7.js} +6 -6
  602. package/.next/static/chunks/1rko_88i85yqb.js +21 -0
  603. package/.next/static/chunks/1tu8lforstp1o.js +1 -0
  604. package/.next/static/chunks/20mdcup14_0yi.js +11 -0
  605. package/.next/static/chunks/23-xknrz6o748.js +1 -0
  606. package/.next/static/chunks/24u_rc2tbkhai.js +3 -0
  607. package/.next/static/chunks/2p-pkveutoh75.js +1 -0
  608. package/.next/static/chunks/329sozud9-tvr.js +1 -0
  609. package/.next/static/chunks/3ly7b47esdb7j.js +1 -0
  610. package/.next/static/chunks/3qqvn9vv6i0gy.js +68 -0
  611. package/.next/static/chunks/3ruw8lu2_re-h.js +1 -0
  612. package/.next/static/chunks/3xqcluqa32mjv.js +2 -0
  613. package/README.md +13 -5
  614. package/package.json +1 -1
  615. package/skills/work-epic/SKILL.md +22 -3
  616. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0am8bw2._.js +0 -3
  617. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0enefn6._.js +0 -3
  618. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0k3n_5f._.js +0 -3
  619. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0lcfjm4._.js +0 -3
  620. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0lfx9av._.js +0 -3
  621. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0qau3qw._.js +0 -3
  622. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0r1pmvm._.js +0 -3
  623. package/.next/server/chunks/11mp_@anthropic-ai_sdk_11t-z2t._.js +0 -3
  624. package/.next/server/chunks/11mp_@anthropic-ai_sdk_15hyn79._.js +0 -3
  625. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1_qk07x._.js +0 -3
  626. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1b2929e._.js +0 -3
  627. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1e72c89._.js +0 -3
  628. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1eq7asn._.js +0 -3
  629. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1fhdojs._.js +0 -3
  630. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1htgzmb._.js +0 -3
  631. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1lh_vwq._.js +0 -3
  632. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1ludf-o._.js +0 -3
  633. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1m3luz3._.js +0 -3
  634. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1x1iz3d._.js +0 -3
  635. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1xsmwlh._.js +0 -3
  636. package/.next/server/chunks/11mp_@anthropic-ai_sdk_202spah._.js +0 -3
  637. package/.next/server/chunks/11mp_@anthropic-ai_sdk_215hw9u._.js +0 -3
  638. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_0d2_lq6._.js +0 -3
  639. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_0n-i0pd._.js +0 -3
  640. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_13pos4j._.js +0 -3
  641. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_17b4pqr._.js +0 -3
  642. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1bkcmom._.js +0 -3
  643. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1hlj_3l._.js +0 -3
  644. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1ip-sor._.js +0 -3
  645. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1pex5o1._.js +0 -3
  646. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1s8lc8_._.js +0 -3
  647. package/.next/server/chunks/[root-of-the-server]__05l6129._.js +0 -3
  648. package/.next/server/chunks/[root-of-the-server]__06zf_sh._.js +0 -3
  649. package/.next/server/chunks/[root-of-the-server]__093hlkh._.js +0 -3
  650. package/.next/server/chunks/[root-of-the-server]__0aynzrb._.js +0 -3
  651. package/.next/server/chunks/[root-of-the-server]__0e59y5j._.js +0 -3
  652. package/.next/server/chunks/[root-of-the-server]__0eqd-tw._.js +0 -3
  653. package/.next/server/chunks/[root-of-the-server]__0nfvvy9._.js +0 -3
  654. package/.next/server/chunks/[root-of-the-server]__106gpvh._.js +0 -3
  655. package/.next/server/chunks/[root-of-the-server]__11s76m8._.js +0 -3
  656. package/.next/server/chunks/[root-of-the-server]__142icjb._.js +0 -3
  657. package/.next/server/chunks/[root-of-the-server]__14aeqoi._.js +0 -3
  658. package/.next/server/chunks/[root-of-the-server]__1613hjb._.js +0 -88
  659. package/.next/server/chunks/[root-of-the-server]__1613hjb._.js.map +0 -1
  660. package/.next/server/chunks/[root-of-the-server]__169hmq_._.js +0 -10
  661. package/.next/server/chunks/[root-of-the-server]__169hmq_._.js.map +0 -1
  662. package/.next/server/chunks/[root-of-the-server]__17p0rkn._.js +0 -3
  663. package/.next/server/chunks/[root-of-the-server]__17xb02p._.js +0 -3
  664. package/.next/server/chunks/[root-of-the-server]__18kxo4a._.js +0 -3
  665. package/.next/server/chunks/[root-of-the-server]__1j0rrps._.js +0 -3
  666. package/.next/server/chunks/[root-of-the-server]__1jxu2x9._.js +0 -3
  667. package/.next/server/chunks/[root-of-the-server]__1lj_2cv._.js +0 -3
  668. package/.next/server/chunks/[root-of-the-server]__1o4a-4j._.js +0 -3
  669. package/.next/server/chunks/[root-of-the-server]__1o4a-4j._.js.map +0 -1
  670. package/.next/server/chunks/[root-of-the-server]__1q4ahvz._.js +0 -3
  671. package/.next/server/chunks/[root-of-the-server]__1u_q61h._.js +0 -3
  672. package/.next/server/chunks/[root-of-the-server]__1wr0m-s._.js +0 -3
  673. package/.next/server/chunks/[root-of-the-server]__1xb0fmp._.js +0 -3
  674. package/.next/server/chunks/[root-of-the-server]__1xb0fmp._.js.map +0 -1
  675. package/.next/server/chunks/[root-of-the-server]__1y-tt29._.js +0 -3
  676. package/.next/server/chunks/ssr/1x05_lucide-react_dist_esm_icons_0cvmffy._.js +0 -3
  677. package/.next/server/chunks/ssr/1x05_lucide-react_dist_esm_icons_0cvmffy._.js.map +0 -1
  678. package/.next/server/chunks/ssr/1x05_lucide-react_dist_esm_icons_0u3jxas._.js +0 -3
  679. package/.next/server/chunks/ssr/1x05_lucide-react_dist_esm_icons_0u3jxas._.js.map +0 -1
  680. package/.next/server/chunks/ssr/[root-of-the-server]__0noc5ay._.js +0 -14
  681. package/.next/server/chunks/ssr/[root-of-the-server]__1pk-w2i._.js +0 -3
  682. package/.next/server/chunks/ssr/_059qmur._.js +0 -3
  683. package/.next/server/chunks/ssr/_059qmur._.js.map +0 -1
  684. package/.next/server/chunks/ssr/_081irea._.js +0 -3
  685. package/.next/server/chunks/ssr/_081irea._.js.map +0 -1
  686. package/.next/server/chunks/ssr/_0d8t8l4._.js +0 -3
  687. package/.next/server/chunks/ssr/_0d8t8l4._.js.map +0 -1
  688. package/.next/server/chunks/ssr/_0dyvcdg._.js +0 -3
  689. package/.next/server/chunks/ssr/_0dyvcdg._.js.map +0 -1
  690. package/.next/server/chunks/ssr/_1-ghqy4._.js +0 -3
  691. package/.next/server/chunks/ssr/_1-ghqy4._.js.map +0 -1
  692. package/.next/server/chunks/ssr/_17jy5db._.js +0 -3
  693. package/.next/server/chunks/ssr/_17jy5db._.js.map +0 -1
  694. package/.next/server/chunks/ssr/_1c95ems._.js +0 -151
  695. package/.next/server/chunks/ssr/_1c95ems._.js.map +0 -1
  696. package/.next/server/chunks/ssr/_1dllfz5._.js +0 -4
  697. package/.next/server/chunks/ssr/_1dllfz5._.js.map +0 -1
  698. package/.next/server/chunks/ssr/node_modules__pnpm_006_c8z._.js +0 -3
  699. package/.next/server/chunks/ssr/node_modules__pnpm_006_c8z._.js.map +0 -1
  700. package/.next/server/chunks/ssr/node_modules__pnpm_1imm4ut._.js +0 -3
  701. package/.next/server/chunks/ssr/node_modules__pnpm_1imm4ut._.js.map +0 -1
  702. package/.next/server/chunks/ssr/node_modules__pnpm_1kcnkjs._.js +0 -3
  703. package/.next/server/chunks/ssr/node_modules__pnpm_1kcnkjs._.js.map +0 -1
  704. package/.next/server/chunks/ssr/src_1lkod9y._.js +0 -8
  705. package/.next/server/chunks/ssr/src_1lkod9y._.js.map +0 -1
  706. package/.next/server/chunks/ssr/src_components_14pwej-._.js +0 -3
  707. package/.next/server/chunks/ssr/src_components_14pwej-._.js.map +0 -1
  708. package/.next/server/chunks/ssr/src_components_ui_scroll-area_tsx_0i-n_27._.js +0 -3
  709. package/.next/server/chunks/ssr/src_components_ui_scroll-area_tsx_0i-n_27._.js.map +0 -1
  710. package/.next/static/chunks/0-z7kyblalrea.js +0 -1
  711. package/.next/static/chunks/050mq8l4e1ubn.js +0 -1
  712. package/.next/static/chunks/098le48845_fg.js +0 -3
  713. package/.next/static/chunks/0cw4-ebkoufdc.js +0 -1
  714. package/.next/static/chunks/0feo-go1w5nct.js +0 -1
  715. package/.next/static/chunks/0k2qhx29amdgs.js +0 -1
  716. package/.next/static/chunks/14sefb904pl64.js +0 -21
  717. package/.next/static/chunks/1fer-wulyrjrs.js +0 -3
  718. package/.next/static/chunks/1o7b1x4umy8a6.js +0 -1
  719. package/.next/static/chunks/1q_io1j58aukw.js +0 -1
  720. package/.next/static/chunks/1r7z33e9jk3vp.js +0 -1
  721. package/.next/static/chunks/1t-cgh4477hfo.js +0 -1
  722. package/.next/static/chunks/1u-1po1qesc9f.js +0 -1
  723. package/.next/static/chunks/1u5kegkgm0xoz.js +0 -1
  724. package/.next/static/chunks/24ygzsgd-moqy.js +0 -1
  725. package/.next/static/chunks/26folxgplfa9t.js +0 -68
  726. package/.next/static/chunks/2ocixvjhv34_3.js +0 -1
  727. package/.next/static/chunks/3_lsdgxa-h7ma.css +0 -10
  728. package/.next/static/chunks/3h4ehgq7i44wb.js +0 -6
  729. package/.next/static/chunks/3rmv-sb9w9i3e.js +0 -1
  730. package/.next/static/chunks/3smp1lj103j-l.js +0 -1
  731. package/.next/static/chunks/3ttzomivj48jh.js +0 -2
  732. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0-5bkpj._.js.map → 11mp_@anthropic-ai_sdk_0-_cqh8._.js.map} +0 -0
  733. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_00psb_y._.js.map → 11mp_@anthropic-ai_sdk_00o5o78._.js.map} +0 -0
  734. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_01l5h3i._.js.map → 11mp_@anthropic-ai_sdk_03cp17a._.js.map} +0 -0
  735. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_072r2bd._.js.map → 11mp_@anthropic-ai_sdk_07dk2er._.js.map} +0 -0
  736. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0am8bw2._.js.map → 11mp_@anthropic-ai_sdk_0_e9zpr._.js.map} +0 -0
  737. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0enefn6._.js.map → 11mp_@anthropic-ai_sdk_0_xx_qf._.js.map} +0 -0
  738. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0k3n_5f._.js.map → 11mp_@anthropic-ai_sdk_0aer9lc._.js.map} +0 -0
  739. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0lcfjm4._.js.map → 11mp_@anthropic-ai_sdk_0ax30pe._.js.map} +0 -0
  740. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0lfx9av._.js.map → 11mp_@anthropic-ai_sdk_0gn7vgs._.js.map} +0 -0
  741. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0qau3qw._.js.map → 11mp_@anthropic-ai_sdk_0hye94a._.js.map} +0 -0
  742. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0r1pmvm._.js.map → 11mp_@anthropic-ai_sdk_0ir5cgk._.js.map} +0 -0
  743. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_11t-z2t._.js.map → 11mp_@anthropic-ai_sdk_0je0_pa._.js.map} +0 -0
  744. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_15hyn79._.js.map → 11mp_@anthropic-ai_sdk_0jfgh0o._.js.map} +0 -0
  745. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1_qk07x._.js.map → 11mp_@anthropic-ai_sdk_0mha4x1._.js.map} +0 -0
  746. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1b2929e._.js.map → 11mp_@anthropic-ai_sdk_0n__boa._.js.map} +0 -0
  747. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1e72c89._.js.map → 11mp_@anthropic-ai_sdk_0sqv26_._.js.map} +0 -0
  748. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1eq7asn._.js.map → 11mp_@anthropic-ai_sdk_0wnc6g-._.js.map} +0 -0
  749. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1fhdojs._.js.map → 11mp_@anthropic-ai_sdk_0xh0g59._.js.map} +0 -0
  750. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1htgzmb._.js.map → 11mp_@anthropic-ai_sdk_1-5wyhj._.js.map} +0 -0
  751. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1lh_vwq._.js.map → 11mp_@anthropic-ai_sdk_13ahm3n._.js.map} +0 -0
  752. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1ludf-o._.js.map → 11mp_@anthropic-ai_sdk_13e6aq4._.js.map} +0 -0
  753. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1m3luz3._.js.map → 11mp_@anthropic-ai_sdk_14eg0ld._.js.map} +0 -0
  754. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1x1iz3d._.js.map → 11mp_@anthropic-ai_sdk_15md1n2._.js.map} +0 -0
  755. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1xsmwlh._.js.map → 11mp_@anthropic-ai_sdk_16av8b9._.js.map} +0 -0
  756. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_202spah._.js.map → 11mp_@anthropic-ai_sdk_16hjhv1._.js.map} +0 -0
  757. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_215hw9u._.js.map → 11mp_@anthropic-ai_sdk_16txvf7._.js.map} +0 -0
  758. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_0d2_lq6._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_00kwqu5._.js.map} +0 -0
  759. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_0n-i0pd._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_01j2nrd._.js.map} +0 -0
  760. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_13pos4j._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_05ybj3t._.js.map} +0 -0
  761. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_17b4pqr._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_0adt7jj._.js.map} +0 -0
  762. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_1bkcmom._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_0bnl14w._.js.map} +0 -0
  763. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_1hlj_3l._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_0f557t9._.js.map} +0 -0
  764. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_1ip-sor._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_0ra6giw._.js.map} +0 -0
  765. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_1pex5o1._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_107cqfx._.js.map} +0 -0
  766. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_1s8lc8_._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_1377sl6._.js.map} +0 -0
  767. /package/.next/server/chunks/{[root-of-the-server]__0e59y5j._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_1_2hcok._.js.map} +0 -0
  768. /package/.next/server/chunks/{[root-of-the-server]__11s76m8._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_1g--m6y._.js.map} +0 -0
  769. /package/.next/server/chunks/{ssr/0_nd_mermaid_dist_mermaid_core_mjs_0vv_0i3._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_1geopi5._.js.map} +0 -0
  770. /package/.next/server/chunks/{ssr/1u84_katex_dist_katex_mjs_1z0p1bs._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_1i11dte._.js.map} +0 -0
  771. /package/.next/server/chunks/{ssr/node_modules__pnpm_09_i2jk._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_1mj3_qk._.js.map} +0 -0
  772. /package/.next/server/chunks/{ssr/node_modules__pnpm_0dwi7mu._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_1qgy210._.js.map} +0 -0
  773. /package/.next/server/chunks/{ssr/node_modules__pnpm_1yq90z7._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_1rkng9q._.js.map} +0 -0
  774. /package/.next/server/chunks/ssr/{node_modules__pnpm_04khl_s._.js.map → node_modules__pnpm_01bjcv9._.js.map} +0 -0
  775. /package/.next/server/chunks/ssr/{node_modules__pnpm_08sqeu2._.js.map → node_modules__pnpm_03qrzdb._.js.map} +0 -0
  776. /package/.next/server/chunks/ssr/{node_modules__pnpm_104pzhc._.js.map → node_modules__pnpm_06d-fdo._.js.map} +0 -0
  777. /package/.next/server/chunks/ssr/{node_modules__pnpm_1xzf8g_._.js.map → node_modules__pnpm_0ctisl0._.js.map} +0 -0
  778. /package/.next/server/chunks/ssr/{node_modules__pnpm_0og06fy._.js.map → node_modules__pnpm_0fwp8jm._.js.map} +0 -0
  779. /package/.next/server/chunks/ssr/{node_modules__pnpm_0a9b2ei._.js.map → node_modules__pnpm_0kpu0-2._.js.map} +0 -0
  780. /package/.next/server/chunks/ssr/{node_modules__pnpm_0jpv2b6._.js.map → node_modules__pnpm_0vry74x._.js.map} +0 -0
  781. /package/.next/server/chunks/ssr/{node_modules__pnpm_0fd3pr1._.js.map → node_modules__pnpm_0ycbjbd._.js.map} +0 -0
  782. /package/.next/server/chunks/ssr/{node_modules__pnpm_1l8k8w1._.js.map → node_modules__pnpm_1-76qxg._.js.map} +0 -0
  783. /package/.next/server/chunks/ssr/{node_modules__pnpm_0ah02mu._.js.map → node_modules__pnpm_1-r94f7._.js.map} +0 -0
  784. /package/.next/server/chunks/ssr/{node_modules__pnpm_0f77_ng._.js.map → node_modules__pnpm_17i6z2d._.js.map} +0 -0
  785. /package/.next/server/chunks/ssr/{node_modules__pnpm_0ttvopp._.js.map → node_modules__pnpm_192f222._.js.map} +0 -0
  786. /package/.next/server/chunks/ssr/{node_modules__pnpm_07t_e8c._.js.map → node_modules__pnpm_1a48_nl._.js.map} +0 -0
  787. /package/.next/server/chunks/ssr/{node_modules__pnpm_195j8p_._.js.map → node_modules__pnpm_1aa37e1._.js.map} +0 -0
  788. /package/.next/server/chunks/ssr/{node_modules__pnpm_0cj8ryj._.js.map → node_modules__pnpm_1f440kx._.js.map} +0 -0
  789. /package/.next/server/chunks/ssr/{node_modules__pnpm_0u3u82f._.js.map → node_modules__pnpm_1fn3ejy._.js.map} +0 -0
  790. /package/.next/server/chunks/ssr/{node_modules__pnpm_0ts89ne._.js.map → node_modules__pnpm_1min2jl._.js.map} +0 -0
  791. /package/.next/server/chunks/ssr/{node_modules__pnpm_1woddr6._.js.map → node_modules__pnpm_1q_hhr3._.js.map} +0 -0
  792. /package/.next/server/chunks/ssr/{node_modules__pnpm_1x0t5_z._.js.map → node_modules__pnpm_1qmkxyo._.js.map} +0 -0
  793. /package/.next/server/chunks/ssr/{node_modules__pnpm_0gifu-u._.js.map → node_modules__pnpm_1qp_jvj._.js.map} +0 -0
  794. /package/.next/server/chunks/ssr/{node_modules__pnpm_0y35hs4._.js.map → node_modules__pnpm_1ssjj4u._.js.map} +0 -0
  795. /package/.next/server/chunks/ssr/{node_modules__pnpm_0qc3gsk._.js.map → node_modules__pnpm_1txccoj._.js.map} +0 -0
  796. /package/.next/server/chunks/ssr/{node_modules__pnpm_1w0f1m5._.js.map → node_modules__pnpm_1uwkcin._.js.map} +0 -0
  797. /package/.next/server/chunks/ssr/{node_modules__pnpm_0286-tg._.js.map → node_modules__pnpm_1ygal0c._.js.map} +0 -0
  798. /package/.next/static/{uJ5RYxgFnE5svAvnuLDXN → Q29Tn_NjyVms0d3pKn4Yx}/_buildManifest.js +0 -0
  799. /package/.next/static/{uJ5RYxgFnE5svAvnuLDXN → Q29Tn_NjyVms0d3pKn4Yx}/_clientMiddlewareManifest.js +0 -0
  800. /package/.next/static/{uJ5RYxgFnE5svAvnuLDXN → Q29Tn_NjyVms0d3pKn4Yx}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../node_modules/.pnpm/%40swc%2Bhelpers%400.5.23/node_modules/%40swc/helpers/cjs/_interop_require_default.cjs","../../../../node_modules/.pnpm/next%4016.3.6_%40babel%2Bcore%407.29.7_%40types%2Bnode%4022.20.4_react-dom%4019.3.0_react%4019.3.0__react%4019.3.0/node_modules/next/src/shared/lib/encode-uri-path.ts","../../../../node_modules/.pnpm/next%4016.3.6_%40babel%2Bcore%407.29.7_%40types%2Bnode%4022.20.4_react-dom%4019.3.0_react%4019.3.0__react%4019.3.0/node_modules/next/src/shared/lib/lazy-dynamic/dynamic-bailout-to-csr.tsx","../../../../node_modules/.pnpm/next%4016.3.6_%40babel%2Bcore%407.29.7_%40types%2Bnode%4022.20.4_react-dom%4019.3.0_react%4019.3.0__react%4019.3.0/node_modules/next/src/shared/lib/lazy-dynamic/preload-chunks.tsx","../../../../node_modules/.pnpm/next%4016.3.6_%40babel%2Bcore%407.29.7_%40types%2Bnode%4022.20.4_react-dom%4019.3.0_react%4019.3.0__react%4019.3.0/node_modules/next/src/shared/lib/lazy-dynamic/loadable.tsx","../../../../node_modules/.pnpm/next%4016.3.6_%40babel%2Bcore%407.29.7_%40types%2Bnode%4022.20.4_react-dom%4019.3.0_react%4019.3.0__react%4019.3.0/node_modules/next/src/shared/lib/app-dynamic.tsx","../../../../src/components/explorer/FileTree.tsx","../../../../src/components/explorer/FileTreemap.tsx","../../../../src/components/explorer/FileDetail.tsx","../../../../src/components/explorer/ExplorerTab.tsx","../../../../src/app/%28app%29/explorer/page.tsx","../../../../node_modules/.pnpm/lucide-react%401.48.0_react%4019.3.0/node_modules/lucide-react/src/icons/external-link.ts","../../../../node_modules/.pnpm/lucide-react%401.48.0_react%4019.3.0/node_modules/lucide-react/src/icons/flame.ts","../../../../node_modules/.pnpm/lucide-react%401.48.0_react%4019.3.0/node_modules/lucide-react/src/icons/square-stack.ts","../../../../node_modules/.pnpm/lucide-react%401.48.0_react%4019.3.0/node_modules/lucide-react/src/icons/tree-pine.ts"],"sourcesContent":["\"use strict\";\n\nfunction _interop_require_default(obj) {\n return obj && obj.__esModule ? obj : { default: obj };\n}\nexports._ = _interop_require_default;\n","export function encodeURIPath(file: string) {\n return file\n .split('/')\n .map((p) => encodeURIComponent(p))\n .join('/')\n}\n","'use client'\n\nimport type { ReactElement } from 'react'\nimport { BailoutToCSRError } from './bailout-to-csr'\n\ninterface BailoutToCSRProps {\n reason: string\n children: ReactElement\n}\n\n/**\n * If rendered on the server, this component throws an error\n * to signal Next.js that it should bail out to client-side rendering instead.\n */\nexport function BailoutToCSR({ reason, children }: BailoutToCSRProps) {\n if (typeof window === 'undefined') {\n throw new BailoutToCSRError(reason)\n }\n\n return children\n}\n","'use client'\n\nimport { preload } from 'react-dom'\n\nimport { workAsyncStorage } from '../../../server/app-render/work-async-storage.external'\nimport { encodeURIPath } from '../encode-uri-path'\nimport { getAssetTokenQuery } from '../deployment-id'\n\nexport function PreloadChunks({\n moduleIds,\n}: {\n moduleIds: string[] | undefined\n}) {\n // Early return in client compilation and only load requestStore on server side\n if (typeof window !== 'undefined') {\n return null\n }\n\n const workStore = workAsyncStorage.getStore()\n if (workStore === undefined) {\n return null\n }\n\n const allFiles = []\n\n // Search the current dynamic call unique key id in react loadable manifest,\n // and find the corresponding CSS files to preload\n if (workStore.reactLoadableManifest && moduleIds) {\n const manifest = workStore.reactLoadableManifest\n for (const key of moduleIds) {\n if (!manifest[key]) continue\n const chunks = manifest[key].files\n allFiles.push(...chunks)\n }\n }\n\n if (allFiles.length === 0) {\n return null\n }\n\n const query = getAssetTokenQuery()\n\n return (\n <>\n {allFiles.map((chunk) => {\n const href = `${workStore.assetPrefix}/_next/${encodeURIPath(chunk)}${query}`\n const isCss = chunk.endsWith('.css')\n // If it's stylesheet we use `precedence` o help hoist with React Float.\n // For stylesheets we actually need to render the CSS because nothing else is going to do it so it needs to be part of the component tree.\n // The `preload` for stylesheet is not optional.\n if (isCss) {\n return (\n <link\n key={chunk}\n // @ts-ignore\n precedence=\"dynamic\"\n href={href}\n rel=\"stylesheet\"\n as=\"style\"\n nonce={workStore.nonce}\n />\n )\n } else {\n // If it's script we use ReactDOM.preload to preload the resources\n preload(href, {\n as: 'script',\n fetchPriority: 'low',\n nonce: workStore.nonce,\n })\n return null\n }\n })}\n </>\n )\n}\n","import { Suspense, Fragment, lazy } from 'react'\nimport { BailoutToCSR } from './dynamic-bailout-to-csr'\nimport type { ComponentModule } from './types'\nimport { PreloadChunks } from './preload-chunks'\n\n// Normalize loader to return the module as form { default: Component } for `React.lazy`.\n// Also for backward compatible since next/dynamic allows to resolve a component directly with loader\n// Client component reference proxy need to be converted to a module.\nfunction convertModule<P>(\n mod: React.ComponentType<P> | ComponentModule<P> | undefined\n): {\n default: React.ComponentType<P>\n} {\n // Check \"default\" prop before accessing it, as it could be client reference proxy that could break it reference.\n // Cases:\n // mod: { default: Component }\n // mod: Component\n // mod: { default: proxy(Component) }\n // mod: proxy(Component)\n const hasDefault = mod && 'default' in mod\n return {\n default: hasDefault\n ? (mod as ComponentModule<P>).default\n : (mod as React.ComponentType<P>),\n }\n}\n\nconst defaultOptions = {\n loader: () => Promise.resolve(convertModule(() => null)),\n loading: null,\n ssr: true,\n}\n\ninterface LoadableOptions {\n loader?: () => Promise<React.ComponentType<any> | ComponentModule<any>>\n loading?: React.ComponentType<any> | null\n ssr?: boolean\n modules?: string[]\n}\n\nfunction Loadable(options: LoadableOptions) {\n const opts = { ...defaultOptions, ...options }\n const Lazy = lazy(() => opts.loader().then(convertModule))\n const Loading = opts.loading\n\n function LoadableComponent(props: any) {\n const fallbackElement = Loading ? (\n <Loading isLoading={true} pastDelay={true} error={null} />\n ) : null\n\n // If it's non-SSR or provided a loading component, wrap it in a suspense boundary\n const hasSuspenseBoundary = !opts.ssr || !!opts.loading\n const Wrap = hasSuspenseBoundary ? Suspense : Fragment\n const wrapProps = hasSuspenseBoundary ? { fallback: fallbackElement } : {}\n const children = opts.ssr ? (\n <>\n {/* During SSR, we need to preload the CSS from the dynamic component to avoid flash of unstyled content */}\n {typeof window === 'undefined' ? (\n <PreloadChunks moduleIds={opts.modules} />\n ) : null}\n <Lazy {...props} />\n </>\n ) : (\n <BailoutToCSR reason=\"next/dynamic\">\n <Lazy {...props} />\n </BailoutToCSR>\n )\n\n return <Wrap {...wrapProps}>{children}</Wrap>\n }\n\n LoadableComponent.displayName = 'LoadableComponent'\n\n return LoadableComponent\n}\n\nexport default Loadable\n","import type React from 'react'\nimport type { JSX } from 'react'\nimport Loadable from './lazy-dynamic/loadable'\n\nimport type {\n LoadableGeneratedOptions,\n DynamicOptionsLoadingProps,\n Loader,\n LoaderComponent,\n} from './lazy-dynamic/types'\n\nexport {\n type LoadableGeneratedOptions,\n type DynamicOptionsLoadingProps,\n type Loader,\n type LoaderComponent,\n}\n\nexport type DynamicOptions<P = {}> = LoadableGeneratedOptions & {\n loading?: () => JSX.Element | null\n loader?: Loader<P>\n loadableGenerated?: LoadableGeneratedOptions\n modules?: string[]\n ssr?: boolean\n}\n\nexport type LoadableOptions<P = {}> = DynamicOptions<P>\n\nexport type LoadableFn<P = {}> = (\n opts: LoadableOptions<P>\n) => React.ComponentType<P>\n\nexport type LoadableComponent<P = {}> = React.ComponentType<P>\n\nexport default function dynamic<P = {}>(\n dynamicOptions: DynamicOptions<P> | Loader<P>,\n options?: DynamicOptions<P>\n): React.ComponentType<P> {\n const loadableOptions: LoadableOptions<P> = {}\n\n if (typeof dynamicOptions === 'function') {\n loadableOptions.loader = dynamicOptions\n }\n\n const mergedOptions = {\n ...loadableOptions,\n ...options,\n }\n\n return Loadable({\n ...mergedOptions,\n modules: mergedOptions.loadableGenerated?.modules,\n })\n}\n","\"use client\"\n\nimport { useMemo, useState } from \"react\"\nimport { FileText, Folder, FolderOpen, ChevronRight } from \"lucide-react\"\nimport { cn } from \"@/lib/utils\"\nimport { ScrollArea } from \"@/components/ui/scroll-area\"\nimport { Collapsible, CollapsibleContent, CollapsibleTrigger } from \"@/components/ui/collapsible\"\nimport type { ExplorerFile } from \"@/types\"\n\ninterface TreeNode {\n name: string\n children: TreeNode[]\n file?: ExplorerFile\n folderPath: string // full path for stable keys\n}\n\nfunction buildTree(files: ExplorerFile[]): TreeNode[] {\n const root: TreeNode = { name: \"\", children: [], folderPath: \"\" }\n for (const file of files) {\n const parts = file.path.replace(/\\\\/g, \"/\").split(\"/\")\n let node = root\n let currentPath = \"\"\n for (let i = 0; i < parts.length - 1; i++) {\n currentPath = currentPath ? `${currentPath}/${parts[i]}` : parts[i]\n let child = node.children.find((c) => c.name === parts[i] && !c.file)\n if (!child) {\n child = { name: parts[i], children: [], folderPath: currentPath }\n node.children.push(child)\n }\n node = child\n }\n node.children.push({ name: parts[parts.length - 1], children: [], file, folderPath: file.path })\n }\n return root.children\n}\n\nfunction getHeatmapClass(mtime: string): string {\n const daysDiff = (Date.now() - new Date(mtime).getTime()) / (1000 * 60 * 60 * 24)\n if (daysDiff <= 7) return \"text-green-400\"\n if (daysDiff <= 28) return \"text-yellow-400/70\"\n return \"text-muted\"\n}\n\ninterface TreeNodeRowProps {\n node: TreeNode\n depth: number\n selectedPath: string | null\n onSelect: (path: string) => void\n heatmap: boolean\n defaultOpen?: boolean\n}\n\nfunction TreeNodeRow({ node, depth, selectedPath, onSelect, heatmap, defaultOpen = false }: TreeNodeRowProps) {\n const [open, setOpen] = useState(defaultOpen)\n const indent = depth * 12\n\n if (node.file) {\n const isSelected = node.file.path === selectedPath\n const colorClass = heatmap ? getHeatmapClass(node.file.mtime) : \"text-muted\"\n return (\n <button\n onClick={() => onSelect(node.file!.path)}\n className={cn(\n \"w-full flex flex-col gap-0.5 px-2 py-1.5 text-left hover:bg-surface2 transition-colors rounded-sm\",\n isSelected && \"bg-surface2 ring-1 ring-inset ring-accent/30\"\n )}\n style={{ paddingLeft: indent + 8 }}\n >\n <div className=\"flex items-center gap-1.5\">\n <FileText className={cn(\"w-3.5 h-3.5 shrink-0\", colorClass)} />\n <span className=\"text-xs text-txt truncate\">{node.name}</span>\n </div>\n {node.file.description && (\n <p className=\"text-[10px] text-muted leading-tight truncate\" style={{ paddingLeft: 20 }}>\n {node.file.description}\n </p>\n )}\n </button>\n )\n }\n\n return (\n <Collapsible open={open} onOpenChange={setOpen}>\n <CollapsibleTrigger asChild>\n <button\n className=\"w-full flex items-center gap-1.5 px-2 py-1 text-left hover:bg-surface2 transition-colors rounded-sm\"\n style={{ paddingLeft: indent + 8 }}\n >\n <ChevronRight\n className={cn(\"w-3 h-3 text-muted shrink-0 transition-transform duration-200\", open && \"rotate-90\")}\n />\n {open\n ? <FolderOpen className=\"w-3.5 h-3.5 text-accent shrink-0\" />\n : <Folder className=\"w-3.5 h-3.5 text-muted shrink-0\" />\n }\n <span className=\"text-xs text-txt font-medium\">{node.name}</span>\n </button>\n </CollapsibleTrigger>\n <CollapsibleContent>\n {node.children.map((child) => (\n <TreeNodeRow\n key={child.folderPath}\n node={child}\n depth={depth + 1}\n selectedPath={selectedPath}\n onSelect={onSelect}\n heatmap={heatmap}\n />\n ))}\n </CollapsibleContent>\n </Collapsible>\n )\n}\n\ninterface FileTreeProps {\n files: ExplorerFile[]\n selectedPath: string | null\n onSelect: (path: string) => void\n heatmap: boolean\n}\n\nexport function FileTree({ files, selectedPath, onSelect, heatmap }: FileTreeProps) {\n const tree = useMemo(() => buildTree(files), [files])\n\n return (\n <ScrollArea className=\"flex-1\">\n <div className=\"p-2\">\n {tree.map((node) => (\n <TreeNodeRow\n key={node.folderPath}\n node={node}\n depth={0}\n selectedPath={selectedPath}\n onSelect={onSelect}\n heatmap={heatmap}\n defaultOpen={true}\n />\n ))}\n </div>\n </ScrollArea>\n )\n}\n","\"use client\"\n\nimport dynamic from \"next/dynamic\"\nimport { useMemo } from \"react\"\nimport type { ExplorerFile } from \"@/types\"\n\n// ECharts uses browser APIs — must be dynamically imported with ssr: false\nconst ReactECharts = dynamic(() => import(\"echarts-for-react\"), { ssr: false })\n\ninterface TreemapNode {\n name: string\n value?: number\n path?: string\n itemStyle?: { color: string }\n children?: TreemapNode[]\n}\n\ninterface FileTreemapProps {\n files: ExplorerFile[]\n onSelect: (path: string) => void\n}\n\nfunction freshnessColor(mtime: string): string {\n const age = Date.now() - new Date(mtime).getTime()\n const days = age / (1000 * 60 * 60 * 24)\n if (days <= 7) return \"#059669\" // emerald-600 — recent (readable on dark)\n if (days <= 28) return \"#b45309\" // amber-700 — mid\n return \"#334155\" // slate-700 — old\n}\n\nfunction buildTreemapData(files: ExplorerFile[]): TreemapNode[] {\n const root: TreemapNode[] = []\n const folderMap = new Map<string, TreemapNode>()\n\n // Normalize to forward slashes (paths may have backslashes on Windows/WSL)\n // and skip root-level files (no folder) — they'd appear as orphan tiles.\n const sorted = [...files]\n .map((f) => ({ ...f, path: f.path.replace(/\\\\/g, \"/\") }))\n .filter((f) => f.path.includes(\"/\"))\n .sort((a, b) => a.path.localeCompare(b.path))\n\n for (const file of sorted) {\n const parts = file.path.split(\"/\")\n const fileName = parts[parts.length - 1].replace(/\\.md$/i, \"\")\n\n const leaf: TreemapNode = {\n name: fileName,\n value: 1,\n path: file.path,\n itemStyle: { color: freshnessColor(file.mtime) },\n }\n\n if (parts.length === 1) {\n // Top-level file\n root.push(leaf)\n } else {\n // Ensure each ancestor folder exists\n for (let depth = 1; depth < parts.length; depth++) {\n const folderPath = parts.slice(0, depth).join(\"/\")\n if (!folderMap.has(folderPath)) {\n const folderNode: TreemapNode = {\n name: parts[depth - 1],\n // value will be summed up after tree is built\n children: [],\n }\n folderMap.set(folderPath, folderNode)\n\n if (depth === 1) {\n root.push(folderNode)\n } else {\n const parentPath = parts.slice(0, depth - 1).join(\"/\")\n const parent = folderMap.get(parentPath)\n if (parent) parent.children!.push(folderNode)\n }\n }\n }\n\n // Attach leaf to its immediate parent folder\n const parentPath = parts.slice(0, parts.length - 1).join(\"/\")\n const parent = folderMap.get(parentPath)\n if (parent) parent.children!.push(leaf)\n }\n }\n\n // Give each folder a value = number of descendant files so ECharts sizes it correctly\n function sumValues(node: TreemapNode): number {\n if (!node.children || node.children.length === 0) return node.value ?? 1\n const total = node.children.reduce((acc, child) => acc + sumValues(child), 0)\n node.value = total\n return total\n }\n root.forEach(sumValues)\n\n return root\n}\n\nexport function FileTreemap({ files, onSelect }: FileTreemapProps) {\n const treeData = useMemo(() => buildTreemapData(files), [files])\n\n const option = useMemo(\n () => ({\n backgroundColor: \"transparent\",\n tooltip: {\n backgroundColor: \"#1e293b\",\n borderColor: \"#334155\",\n borderWidth: 1,\n padding: [6, 10],\n textStyle: { color: \"#f1f5f9\", fontSize: 12 },\n formatter: (info: { name: string; data: TreemapNode }) => {\n const { name, data } = info\n return data.path\n ? `<span style=\"color:#94a3b8;font-size:11px\">${data.path}</span>`\n : `<span style=\"font-weight:600\">${name}/</span>`\n },\n },\n series: [\n {\n type: \"treemap\",\n data: treeData,\n roam: false,\n leafDepth: 1,\n width: \"100%\",\n height: \"100%\",\n top: 4,\n bottom: 36,\n left: 4,\n right: 4,\n squareRatio: 0.7,\n breadcrumb: {\n show: true,\n bottom: 4,\n height: 26,\n gap: 6,\n itemStyle: {\n color: \"#1e293b\",\n borderColor: \"#334155\",\n borderWidth: 1,\n shadowBlur: 0,\n textStyle: { color: \"#94a3b8\", fontSize: 11, fontFamily: \"inherit\" },\n },\n emptyItemWidth: 20,\n },\n // labels on leaf nodes\n label: {\n show: true,\n formatter: \"{b}\",\n fontSize: 12,\n fontWeight: 500,\n color: \"#f1f5f9\",\n textShadowBlur: 3,\n textShadowColor: \"rgba(0,0,0,0.8)\",\n overflow: \"truncate\",\n padding: [4, 6],\n },\n // labels on folder header bar\n upperLabel: {\n show: true,\n height: 24,\n fontSize: 12,\n fontWeight: 700,\n color: \"#f8fafc\",\n backgroundColor: \"rgba(15,23,42,0.85)\",\n borderRadius: [4, 4, 0, 0],\n padding: [4, 8],\n textShadowBlur: 0,\n },\n itemStyle: {\n borderColor: \"#0f172a\",\n borderWidth: 1,\n gapWidth: 1,\n },\n emphasis: {\n label: { color: \"#ffffff\", fontWeight: 700 },\n upperLabel: { color: \"#ffffff\", backgroundColor: \"rgba(99,102,241,0.9)\" },\n itemStyle: { borderColor: \"#6366f1\", borderWidth: 2 },\n },\n levels: [\n {\n // top-level folders — large colored blocks\n color: [\"#1e3a5f\", \"#1a3a2e\", \"#3b2a1a\", \"#2d1b4e\", \"#1a2e3b\", \"#3b1a1a\"],\n itemStyle: {\n borderColor: \"#0f172a\",\n borderWidth: 3,\n gapWidth: 4,\n },\n upperLabel: {\n show: true,\n height: 28,\n fontSize: 13,\n fontWeight: 700,\n color: \"#f8fafc\",\n backgroundColor: \"rgba(15,23,42,0.9)\",\n },\n },\n {\n // sub-folders\n itemStyle: {\n borderColor: \"#0f172a\",\n borderWidth: 2,\n gapWidth: 2,\n },\n upperLabel: { show: true },\n },\n {\n // leaf files — color comes from itemStyle.color set per-node (freshness)\n itemStyle: {\n borderColor: \"rgba(15,23,42,0.6)\",\n borderWidth: 1,\n gapWidth: 1,\n },\n },\n ],\n },\n ],\n }),\n [treeData]\n )\n\n function handleClick(params: { data?: TreemapNode }) {\n if (!params?.data?.path) return\n onSelect(params.data.path)\n }\n\n if (files.length === 0) {\n return (\n <div className=\"flex-1 flex items-center justify-center text-muted text-sm h-full\">\n No files to display\n </div>\n )\n }\n\n return (\n <ReactECharts\n option={option}\n onEvents={{ click: handleClick }}\n style={{ height: \"100%\", width: \"100%\" }}\n opts={{ renderer: \"canvas\" }}\n notMerge\n />\n )\n}\n","\"use client\"\n\nimport { useState, useEffect } from \"react\"\nimport { FileText, RefreshCw, ExternalLink } from \"lucide-react\"\nimport { Button } from \"@/components/ui/button\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { cn } from \"@/lib/utils\"\nimport type { ExplorerFile } from \"@/types\"\n\nconst SOURCE_LABEL: Record<ExplorerFile['source'], string> = { ai: 'AI', extracted: 'Auto' }\nconst SOURCE_VARIANT: Record<ExplorerFile['source'], 'default' | 'secondary'> = { ai: 'default', extracted: 'secondary' }\n\ninterface FileDetailProps {\n file: ExplorerFile | null\n root: string\n onEnriched: (path: string, description: string) => void\n onOpenDoc: (path: string) => Promise<void>\n}\n\nexport function FileDetail({ file, root, onEnriched, onOpenDoc }: FileDetailProps) {\n const [enriching, setEnriching] = useState(false)\n const [flashGreen, setFlashGreen] = useState(false)\n const [error, setError] = useState<string | null>(null)\n\n useEffect(() => {\n setEnriching(false)\n setFlashGreen(false)\n setError(null)\n }, [file?.path])\n\n if (!file) {\n return (\n <div className=\"flex-1 flex items-center justify-center text-muted text-sm\">\n Select a file to see details\n </div>\n )\n }\n\n const parts = file.path.split(\"/\")\n\n async function handleEnrich() {\n setEnriching(true)\n setError(null)\n try {\n const res = await fetch(\"/api/explorer\", {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({ path: file!.path, ...(root ? { root } : {}) }),\n })\n const data = await res.json()\n if (res.ok) {\n onEnriched(file!.path, data.description)\n setFlashGreen(true)\n setTimeout(() => setFlashGreen(false), 1500)\n } else {\n setError(data.error ?? 'Enrichment failed')\n }\n } finally {\n setEnriching(false)\n }\n }\n\n return (\n <div className=\"flex-1 p-6 flex flex-col gap-4 overflow-auto\">\n <div className=\"flex items-center gap-1.5 text-xs text-muted flex-wrap\">\n <FileText className=\"w-3.5 h-3.5 shrink-0\" />\n {parts.map((part, i) => (\n <span key={i} className=\"flex items-center gap-1.5\">\n {i > 0 && <span className=\"text-muted\">/</span>}\n <span className={i === parts.length - 1 ? \"text-txt font-medium\" : \"\"}>\n {part}\n </span>\n </span>\n ))}\n </div>\n\n <p className={cn(\"text-sm leading-relaxed transition-colors duration-500\", flashGreen ? \"text-green-400\" : \"text-txt\")}>\n {file.description || (\n <span className=\"text-muted italic\">\n No description yet — click Re-enrich to generate one\n </span>\n )}\n </p>\n\n {error && (\n <p className=\"text-xs text-red-400\">{error}</p>\n )}\n\n <div className=\"flex items-center gap-2 text-xs text-muted\">\n <Badge variant={SOURCE_VARIANT[file.source]} className=\"text-[10px]\">\n {SOURCE_LABEL[file.source]}\n </Badge>\n <span>Updated {new Date(file.updatedAt).toLocaleDateString()}</span>\n <span className=\"ml-auto\">Modified {new Date(file.mtime).toLocaleDateString()}</span>\n </div>\n\n <div className=\"flex gap-2 pt-2\">\n <Button variant=\"outline\" size=\"sm\" onClick={handleEnrich} disabled={enriching}>\n <RefreshCw className={`w-3 h-3 mr-1.5 ${enriching ? \"animate-spin\" : \"\"}`} />\n Re-enrich\n </Button>\n <Button variant=\"outline\" size=\"sm\" onClick={() => onOpenDoc(file.path)}>\n <ExternalLink className=\"w-3 h-3 mr-1.5\" />\n Open in Docs\n </Button>\n </div>\n </div>\n )\n}\n","\"use client\"\n\nimport { useState, useEffect, useMemo } from \"react\"\nimport { useRouter } from \"next/navigation\"\nimport { TreePine, SquareStack, Flame, type LucideIcon } from \"lucide-react\"\nimport { Input } from \"@/components/ui/input\"\nimport { Button } from \"@/components/ui/button\"\nimport { cn } from \"@/lib/utils\"\nimport { FileTree } from \"./FileTree\"\nimport { FileTreemap } from \"./FileTreemap\"\nimport { FileDetail } from \"./FileDetail\"\nimport type { ExplorerFile } from \"@/types\"\n\ntype ViewMode = \"tree\" | \"treemap\" | \"heatmap\"\ntype SortMode = \"name\" | \"mtime\" | \"updated\"\n\ninterface ExplorerTabProps {\n files: ExplorerFile[]\n loading: boolean\n view: ViewMode\n root: string\n onEnriched: (path: string, description: string) => void\n onOpenDoc: (path: string) => Promise<void>\n}\n\nconst VIEWS: { id: ViewMode; Icon: LucideIcon; label: string }[] = [\n { id: \"tree\", Icon: TreePine, label: \"Tree\" },\n { id: \"treemap\", Icon: SquareStack, label: \"Treemap\" },\n { id: \"heatmap\", Icon: Flame, label: \"Heatmap\" },\n]\n\nexport function ExplorerTab({ files, loading, view, root, onEnriched, onOpenDoc }: ExplorerTabProps) {\n const router = useRouter()\n const [search, setSearch] = useState(\"\")\n const [selectedPath, setSelectedPath] = useState<string | null>(null)\n const [activeSection, setActiveSection] = useState<string>(\"all\")\n const [sort, setSort] = useState<SortMode>(\"name\")\n const [missingOnly, setMissingOnly] = useState(false)\n\n const selectedFile = files.find((f) => f.path === selectedPath) ?? null\n\n const sections = useMemo(\n () => [\"all\", ...[...new Set(files.map(f => f.section))].sort()],\n [files]\n )\n\n const filteredFiles = useMemo(() => {\n let result = files\n\n if (search) {\n const q = search.toLowerCase()\n result = result.filter(\n f => f.path.toLowerCase().includes(q) || f.description.toLowerCase().includes(q)\n )\n }\n\n if (activeSection !== \"all\") {\n result = result.filter(f => f.section === activeSection)\n }\n\n if (missingOnly) {\n result = result.filter(f => !f.description.trim())\n }\n\n return [...result].sort((a, b) => {\n if (sort === \"mtime\") return b.mtime.localeCompare(a.mtime)\n if (sort === \"updated\") return b.updatedAt.localeCompare(a.updatedAt)\n return a.path.localeCompare(b.path)\n })\n }, [files, search, activeSection, missingOnly, sort])\n\n // Clear selection when the selected file is filtered out\n useEffect(() => {\n if (selectedPath !== null && !filteredFiles.find(f => f.path === selectedPath)) {\n setSelectedPath(null)\n }\n }, [filteredFiles, selectedPath])\n\n // Reset section filter when search changes\n useEffect(() => {\n setActiveSection(\"all\")\n }, [search])\n\n function setView(v: ViewMode) {\n router.push(`/explorer?view=${v}`)\n }\n\n return (\n <div className=\"flex flex-col h-full\">\n {/* Header row 1 */}\n <div className=\"flex items-center gap-3 px-4 py-3 border-b border-border shrink-0\">\n <span className=\"font-display font-semibold text-txt text-sm shrink-0\">Explorer</span>\n <Input\n id=\"explorer-search\"\n placeholder=\"Search files and descriptions…\"\n value={search}\n onChange={(e) => setSearch(e.target.value)}\n className=\"flex-1 h-7 text-xs\"\n />\n <div className=\"flex items-center gap-1 shrink-0\">\n {VIEWS.map(({ id, Icon, label }) => (\n <Button\n key={id}\n variant={view === id ? \"secondary\" : \"ghost\"}\n size=\"sm\"\n className=\"h-7 px-2 text-xs gap-1\"\n onClick={() => setView(id)}\n >\n <Icon className=\"w-3 h-3\" />\n {label}\n </Button>\n ))}\n <select\n value={sort}\n onChange={e => setSort(e.target.value as SortMode)}\n className=\"h-7 px-2 text-xs bg-surface2 border border-border rounded-sm text-txt focus:outline-hidden focus:border-accent ml-1\"\n >\n <option value=\"name\">Name</option>\n <option value=\"mtime\">Modified</option>\n <option value=\"updated\">Described</option>\n </select>\n <button\n onClick={() => setMissingOnly(v => !v)}\n className={cn(\n \"h-7 px-2 rounded-sm text-xs transition-colors border ml-1\",\n missingOnly\n ? \"bg-amber/20 text-amber border-amber/40\"\n : \"bg-surface2 text-muted border-border hover:text-txt\"\n )}\n >\n No desc\n </button>\n </div>\n </div>\n\n {/* Header row 2: section pills */}\n {sections.length > 2 && (\n <div className=\"flex items-center gap-1 px-4 py-2 border-b border-border overflow-x-auto shrink-0\">\n {sections.map(s => (\n <button\n key={s}\n onClick={() => setActiveSection(s)}\n className={cn(\n \"px-2.5 py-0.5 rounded-full text-xs whitespace-nowrap transition-colors\",\n activeSection === s\n ? \"bg-accent text-white\"\n : \"bg-surface2 text-muted hover:text-txt\"\n )}\n >\n {s === \"all\" ? \"All\" : s}\n </button>\n ))}\n </div>\n )}\n\n {/* Content */}\n {loading ? (\n <div className=\"flex-1 flex items-center justify-center text-muted text-sm\">\n Loading…\n </div>\n ) : view === \"treemap\" ? (\n <div className=\"flex-1 flex overflow-hidden\">\n <div className=\"flex-1 overflow-hidden\">\n <FileTreemap files={filteredFiles} onSelect={setSelectedPath} />\n </div>\n {selectedPath && selectedFile && (\n <div className=\"w-80 border-l border-border shrink-0\">\n <FileDetail\n file={selectedFile}\n root={root}\n onEnriched={onEnriched}\n onOpenDoc={onOpenDoc}\n />\n </div>\n )}\n </div>\n ) : (\n <div className=\"flex-1 flex overflow-hidden\">\n <div className=\"w-72 border-r border-border flex flex-col overflow-hidden\">\n {filteredFiles.length === 0 ? (\n <div className=\"flex-1 flex items-center justify-center text-muted text-sm\">\n No files match your search\n </div>\n ) : (\n <FileTree\n files={filteredFiles}\n selectedPath={selectedPath}\n onSelect={setSelectedPath}\n heatmap={view === \"heatmap\"}\n />\n )}\n </div>\n <FileDetail\n file={selectedFile}\n root={root}\n onEnriched={onEnriched}\n onOpenDoc={onOpenDoc}\n />\n </div>\n )}\n </div>\n )\n}\n","\"use client\"\n\nimport { Suspense, useCallback, useEffect, useState } from \"react\"\nimport { useSearchParams } from \"next/navigation\"\nimport { useApp } from \"@/context/AppContext\"\nimport { ExplorerTab } from \"@/components/explorer/ExplorerTab\"\nimport type { ExplorerFile } from \"@/types\"\n\nfunction ExplorerContent() {\n const { rootParam, activeProject, openDoc } = useApp()\n const searchParams = useSearchParams()\n const view = (searchParams.get(\"view\") as \"tree\" | \"treemap\" | \"heatmap\") || \"tree\"\n const [files, setFiles] = useState<ExplorerFile[]>([])\n const [loading, setLoading] = useState(true)\n\n const fetchFiles = useCallback(async () => {\n setLoading(true)\n try {\n const res = await fetch(`/api/explorer${rootParam}`)\n const data = await res.json()\n setFiles(Array.isArray(data) ? data : [])\n } finally {\n setLoading(false)\n }\n }, [rootParam])\n\n useEffect(() => {\n fetchFiles()\n }, [fetchFiles])\n\n function handleEnriched(path: string, description: string) {\n setFiles((prev) =>\n prev.map((f) =>\n f.path === path\n ? { ...f, description, source: \"ai\" as const, updatedAt: new Date().toISOString() }\n : f\n )\n )\n }\n\n return (\n <ExplorerTab\n files={files}\n loading={loading}\n view={view}\n root={activeProject}\n onEnriched={handleEnriched}\n onOpenDoc={openDoc}\n />\n )\n}\n\nexport default function ExplorerPage() {\n return (\n <div className=\"flex flex-col h-full\">\n <Suspense\n fallback={\n <div className=\"flex-1 flex items-center justify-center text-muted-foreground text-sm\">\n Loading…\n </div>\n }\n >\n <ExplorerContent />\n </Suspense>\n </div>\n )\n}\n","import createLucideIcon from '../createLucideIcon';\nimport type { LucideIconNode, LucideIconData } from '../types';\n\nexport const __iconData: LucideIconData = {\n name: 'external-link',\n size: 24,\n node: [\n ['path', { d: 'M15 3h6v6', key: '1q9fwt' }],\n ['path', { d: 'M10 14 21 3', key: 'gplh6r' }],\n ['path', { d: 'M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6', key: 'a6xqqp' }],\n ],\n};\n\n/**\n * @deprecated Access `__iconData` instead.\n */\nexport const __iconNode: LucideIconNode[] = __iconData.node;\n\n/**\n * @component @name ExternalLink\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTUgM2g2djYiIC8+CiAgPHBhdGggZD0iTTEwIDE0IDIxIDMiIC8+CiAgPHBhdGggZD0iTTE4IDEzdjZhMiAyIDAgMCAxLTIgMkg1YTIgMiAwIDAgMS0yLTJWOGEyIDIgMCAwIDEgMi0yaDYiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/external-link\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ExternalLink = createLucideIcon(__iconData);\n\nexport default ExternalLink;\n","import createLucideIcon from '../createLucideIcon';\nimport type { LucideIconNode, LucideIconData } from '../types';\n\nexport const __iconData: LucideIconData = {\n name: 'flame',\n size: 24,\n node: [\n [\n 'path',\n {\n d: 'M12 3q1 4 4 6.5t3 5.5a1 1 0 0 1-14 0 5 5 0 0 1 1-3 1 1 0 0 0 5 0c0-2-1.5-3-1.5-5q0-2 2.5-4',\n key: '1slcih',\n },\n ],\n ],\n};\n\n/**\n * @deprecated Access `__iconData` instead.\n */\nexport const __iconNode: LucideIconNode[] = __iconData.node;\n\n/**\n * @component @name Flame\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTIgM3ExIDQgNCA2LjV0MyA1LjVhMSAxIDAgMCAxLTE0IDAgNSA1IDAgMCAxIDEtMyAxIDEgMCAwIDAgNSAwYzAtMi0xLjUtMy0xLjUtNXEwLTIgMi41LTQiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/flame\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Flame = createLucideIcon(__iconData);\n\nexport default Flame;\n","import createLucideIcon from '../createLucideIcon';\nimport type { LucideIconNode, LucideIconData } from '../types';\n\nexport const __iconData: LucideIconData = {\n name: 'square-stack',\n size: 24,\n node: [\n ['path', { d: 'M4 10c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h4c1.1 0 2 .9 2 2', key: '4i38lg' }],\n ['path', { d: 'M10 16c-1.1 0-2-.9-2-2v-4c0-1.1.9-2 2-2h4c1.1 0 2 .9 2 2', key: 'mlte4a' }],\n ['rect', { width: '8', height: '8', x: '14', y: '14', rx: '2', key: '1fa9i4' }],\n ],\n};\n\n/**\n * @deprecated Access `__iconData` instead.\n */\nexport const __iconNode: LucideIconNode[] = __iconData.node;\n\n/**\n * @component @name SquareStack\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNNCAxMGMtMS4xIDAtMi0uOS0yLTJWNGMwLTEuMS45LTIgMi0yaDRjMS4xIDAgMiAuOSAyIDIiIC8+CiAgPHBhdGggZD0iTTEwIDE2Yy0xLjEgMC0yLS45LTItMnYtNGMwLTEuMS45LTIgMi0yaDRjMS4xIDAgMiAuOSAyIDIiIC8+CiAgPHJlY3Qgd2lkdGg9IjgiIGhlaWdodD0iOCIgeD0iMTQiIHk9IjE0IiByeD0iMiIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/square-stack\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst SquareStack = createLucideIcon(__iconData);\n\nexport default SquareStack;\n","import createLucideIcon from '../createLucideIcon';\nimport type { LucideIconNode, LucideIconData } from '../types';\n\nexport const __iconData: LucideIconData = {\n name: 'tree-pine',\n size: 24,\n node: [\n [\n 'path',\n {\n d: 'm17 14 3 3.3a1 1 0 0 1-.7 1.7H4.7a1 1 0 0 1-.7-1.7L7 14h-.3a1 1 0 0 1-.7-1.7L9 9h-.2A1 1 0 0 1 8 7.3L12 3l4 4.3a1 1 0 0 1-.8 1.7H15l3 3.3a1 1 0 0 1-.7 1.7H17Z',\n key: 'cpyugq',\n },\n ],\n ['path', { d: 'M12 22v-3', key: 'kmzjlo' }],\n ],\n};\n\n/**\n * @deprecated Access `__iconData` instead.\n */\nexport const __iconNode: LucideIconNode[] = __iconData.node;\n\n/**\n * @component @name TreePine\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJtMTcgMTQgMyAzLjNhMSAxIDAgMCAxLS43IDEuN0g0LjdhMSAxIDAgMCAxLS43LTEuN0w3IDE0aC0uM2ExIDEgMCAwIDEtLjctMS43TDkgOWgtLjJBMSAxIDAgMCAxIDggNy4zTDEyIDNsNCA0LjNhMSAxIDAgMCAxLS44IDEuN0gxNWwzIDMuM2ExIDEgMCAwIDEtLjcgMS43SDE3WiIgLz4KICA8cGF0aCBkPSJNMTIgMjJ2LTMiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/tree-pine\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst TreePine = createLucideIcon(__iconData);\n\nexport default TreePine;\n"],"names":["_interop_require_default","obj","__esModule","default","exports","_","encodeURIPath","file","split","map","p","encodeURIComponent","join","BailoutToCSR","reason","children","window","BailoutToCSRError","PreloadChunks","moduleIds","workStore","workAsyncStorage","getStore","undefined","allFiles","reactLoadableManifest","manifest","key","chunks","files","push","length","query","getAssetTokenQuery","chunk","href","assetPrefix","isCss","endsWith","link","precedence","rel","as","nonce","preload","fetchPriority","convertModule","mod","hasDefault","defaultOptions","loader","Promise","resolve","loading","ssr","Loadable","options","opts","Lazy","lazy","then","Loading","LoadableComponent","props","fallbackElement","isLoading","pastDelay","error","hasSuspenseBoundary","Wrap","Suspense","Fragment","wrapProps","fallback","modules","displayName","dynamic","dynamicOptions","loadableOptions","mergedOptions","loadableGenerated","node","d"],"mappings":"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","ignoreList":[0,1,2,3,4,5,11,12,13,14]}
1
+ {"version":3,"sources":["../../../../node_modules/.pnpm/%40swc%2Bhelpers%400.5.23/node_modules/%40swc/helpers/cjs/_interop_require_default.cjs","../../../../node_modules/.pnpm/next%4016.3.6_%40babel%2Bcore%407.29.7_%40types%2Bnode%4022.20.4_react-dom%4019.3.0_react%4019.3.0__react%4019.3.0/node_modules/next/src/shared/lib/encode-uri-path.ts","../../../../node_modules/.pnpm/next%4016.3.6_%40babel%2Bcore%407.29.7_%40types%2Bnode%4022.20.4_react-dom%4019.3.0_react%4019.3.0__react%4019.3.0/node_modules/next/src/shared/lib/lazy-dynamic/dynamic-bailout-to-csr.tsx","../../../../node_modules/.pnpm/next%4016.3.6_%40babel%2Bcore%407.29.7_%40types%2Bnode%4022.20.4_react-dom%4019.3.0_react%4019.3.0__react%4019.3.0/node_modules/next/src/shared/lib/lazy-dynamic/preload-chunks.tsx","../../../../node_modules/.pnpm/next%4016.3.6_%40babel%2Bcore%407.29.7_%40types%2Bnode%4022.20.4_react-dom%4019.3.0_react%4019.3.0__react%4019.3.0/node_modules/next/src/shared/lib/lazy-dynamic/loadable.tsx","../../../../node_modules/.pnpm/next%4016.3.6_%40babel%2Bcore%407.29.7_%40types%2Bnode%4022.20.4_react-dom%4019.3.0_react%4019.3.0__react%4019.3.0/node_modules/next/src/shared/lib/app-dynamic.tsx","../../../../src/components/explorer/FileTree.tsx","../../../../src/components/explorer/FileTreemap.tsx","../../../../src/components/explorer/FileDetail.tsx","../../../../src/components/explorer/ExplorerTab.tsx","../../../../src/app/%28app%29/explorer/page.tsx","../../../../node_modules/.pnpm/lucide-react%401.48.0_react%4019.3.0/node_modules/lucide-react/src/icons/external-link.ts","../../../../node_modules/.pnpm/lucide-react%401.48.0_react%4019.3.0/node_modules/lucide-react/src/icons/flame.ts","../../../../node_modules/.pnpm/lucide-react%401.48.0_react%4019.3.0/node_modules/lucide-react/src/icons/square-stack.ts","../../../../node_modules/.pnpm/lucide-react%401.48.0_react%4019.3.0/node_modules/lucide-react/src/icons/tree-pine.ts"],"sourcesContent":["\"use strict\";\n\nfunction _interop_require_default(obj) {\n return obj && obj.__esModule ? obj : { default: obj };\n}\nexports._ = _interop_require_default;\n","export function encodeURIPath(file: string) {\n return file\n .split('/')\n .map((p) => encodeURIComponent(p))\n .join('/')\n}\n","'use client'\n\nimport type { ReactElement } from 'react'\nimport { BailoutToCSRError } from './bailout-to-csr'\n\ninterface BailoutToCSRProps {\n reason: string\n children: ReactElement\n}\n\n/**\n * If rendered on the server, this component throws an error\n * to signal Next.js that it should bail out to client-side rendering instead.\n */\nexport function BailoutToCSR({ reason, children }: BailoutToCSRProps) {\n if (typeof window === 'undefined') {\n throw new BailoutToCSRError(reason)\n }\n\n return children\n}\n","'use client'\n\nimport { preload } from 'react-dom'\n\nimport { workAsyncStorage } from '../../../server/app-render/work-async-storage.external'\nimport { encodeURIPath } from '../encode-uri-path'\nimport { getAssetTokenQuery } from '../deployment-id'\n\nexport function PreloadChunks({\n moduleIds,\n}: {\n moduleIds: string[] | undefined\n}) {\n // Early return in client compilation and only load requestStore on server side\n if (typeof window !== 'undefined') {\n return null\n }\n\n const workStore = workAsyncStorage.getStore()\n if (workStore === undefined) {\n return null\n }\n\n const allFiles = []\n\n // Search the current dynamic call unique key id in react loadable manifest,\n // and find the corresponding CSS files to preload\n if (workStore.reactLoadableManifest && moduleIds) {\n const manifest = workStore.reactLoadableManifest\n for (const key of moduleIds) {\n if (!manifest[key]) continue\n const chunks = manifest[key].files\n allFiles.push(...chunks)\n }\n }\n\n if (allFiles.length === 0) {\n return null\n }\n\n const query = getAssetTokenQuery()\n\n return (\n <>\n {allFiles.map((chunk) => {\n const href = `${workStore.assetPrefix}/_next/${encodeURIPath(chunk)}${query}`\n const isCss = chunk.endsWith('.css')\n // If it's stylesheet we use `precedence` o help hoist with React Float.\n // For stylesheets we actually need to render the CSS because nothing else is going to do it so it needs to be part of the component tree.\n // The `preload` for stylesheet is not optional.\n if (isCss) {\n return (\n <link\n key={chunk}\n // @ts-ignore\n precedence=\"dynamic\"\n href={href}\n rel=\"stylesheet\"\n as=\"style\"\n nonce={workStore.nonce}\n />\n )\n } else {\n // If it's script we use ReactDOM.preload to preload the resources\n preload(href, {\n as: 'script',\n fetchPriority: 'low',\n nonce: workStore.nonce,\n })\n return null\n }\n })}\n </>\n )\n}\n","import { Suspense, Fragment, lazy } from 'react'\nimport { BailoutToCSR } from './dynamic-bailout-to-csr'\nimport type { ComponentModule } from './types'\nimport { PreloadChunks } from './preload-chunks'\n\n// Normalize loader to return the module as form { default: Component } for `React.lazy`.\n// Also for backward compatible since next/dynamic allows to resolve a component directly with loader\n// Client component reference proxy need to be converted to a module.\nfunction convertModule<P>(\n mod: React.ComponentType<P> | ComponentModule<P> | undefined\n): {\n default: React.ComponentType<P>\n} {\n // Check \"default\" prop before accessing it, as it could be client reference proxy that could break it reference.\n // Cases:\n // mod: { default: Component }\n // mod: Component\n // mod: { default: proxy(Component) }\n // mod: proxy(Component)\n const hasDefault = mod && 'default' in mod\n return {\n default: hasDefault\n ? (mod as ComponentModule<P>).default\n : (mod as React.ComponentType<P>),\n }\n}\n\nconst defaultOptions = {\n loader: () => Promise.resolve(convertModule(() => null)),\n loading: null,\n ssr: true,\n}\n\ninterface LoadableOptions {\n loader?: () => Promise<React.ComponentType<any> | ComponentModule<any>>\n loading?: React.ComponentType<any> | null\n ssr?: boolean\n modules?: string[]\n}\n\nfunction Loadable(options: LoadableOptions) {\n const opts = { ...defaultOptions, ...options }\n const Lazy = lazy(() => opts.loader().then(convertModule))\n const Loading = opts.loading\n\n function LoadableComponent(props: any) {\n const fallbackElement = Loading ? (\n <Loading isLoading={true} pastDelay={true} error={null} />\n ) : null\n\n // If it's non-SSR or provided a loading component, wrap it in a suspense boundary\n const hasSuspenseBoundary = !opts.ssr || !!opts.loading\n const Wrap = hasSuspenseBoundary ? Suspense : Fragment\n const wrapProps = hasSuspenseBoundary ? { fallback: fallbackElement } : {}\n const children = opts.ssr ? (\n <>\n {/* During SSR, we need to preload the CSS from the dynamic component to avoid flash of unstyled content */}\n {typeof window === 'undefined' ? (\n <PreloadChunks moduleIds={opts.modules} />\n ) : null}\n <Lazy {...props} />\n </>\n ) : (\n <BailoutToCSR reason=\"next/dynamic\">\n <Lazy {...props} />\n </BailoutToCSR>\n )\n\n return <Wrap {...wrapProps}>{children}</Wrap>\n }\n\n LoadableComponent.displayName = 'LoadableComponent'\n\n return LoadableComponent\n}\n\nexport default Loadable\n","import type React from 'react'\nimport type { JSX } from 'react'\nimport Loadable from './lazy-dynamic/loadable'\n\nimport type {\n LoadableGeneratedOptions,\n DynamicOptionsLoadingProps,\n Loader,\n LoaderComponent,\n} from './lazy-dynamic/types'\n\nexport {\n type LoadableGeneratedOptions,\n type DynamicOptionsLoadingProps,\n type Loader,\n type LoaderComponent,\n}\n\nexport type DynamicOptions<P = {}> = LoadableGeneratedOptions & {\n loading?: () => JSX.Element | null\n loader?: Loader<P>\n loadableGenerated?: LoadableGeneratedOptions\n modules?: string[]\n ssr?: boolean\n}\n\nexport type LoadableOptions<P = {}> = DynamicOptions<P>\n\nexport type LoadableFn<P = {}> = (\n opts: LoadableOptions<P>\n) => React.ComponentType<P>\n\nexport type LoadableComponent<P = {}> = React.ComponentType<P>\n\nexport default function dynamic<P = {}>(\n dynamicOptions: DynamicOptions<P> | Loader<P>,\n options?: DynamicOptions<P>\n): React.ComponentType<P> {\n const loadableOptions: LoadableOptions<P> = {}\n\n if (typeof dynamicOptions === 'function') {\n loadableOptions.loader = dynamicOptions\n }\n\n const mergedOptions = {\n ...loadableOptions,\n ...options,\n }\n\n return Loadable({\n ...mergedOptions,\n modules: mergedOptions.loadableGenerated?.modules,\n })\n}\n","\"use client\"\n\nimport { useMemo, useState } from \"react\"\nimport { FileText, Folder, FolderOpen, ChevronRight } from \"lucide-react\"\nimport { cn } from \"@/lib/utils\"\nimport { ScrollArea } from \"@/components/ui/scroll-area\"\nimport { Collapsible, CollapsibleContent, CollapsibleTrigger } from \"@/components/ui/collapsible\"\nimport type { ExplorerFile } from \"@/types\"\n\ninterface TreeNode {\n name: string\n children: TreeNode[]\n file?: ExplorerFile\n folderPath: string // full path for stable keys\n}\n\nfunction buildTree(files: ExplorerFile[]): TreeNode[] {\n const root: TreeNode = { name: \"\", children: [], folderPath: \"\" }\n for (const file of files) {\n const parts = file.path.replace(/\\\\/g, \"/\").split(\"/\")\n let node = root\n let currentPath = \"\"\n for (let i = 0; i < parts.length - 1; i++) {\n currentPath = currentPath ? `${currentPath}/${parts[i]}` : parts[i]\n let child = node.children.find((c) => c.name === parts[i] && !c.file)\n if (!child) {\n child = { name: parts[i], children: [], folderPath: currentPath }\n node.children.push(child)\n }\n node = child\n }\n node.children.push({ name: parts[parts.length - 1], children: [], file, folderPath: file.path })\n }\n return root.children\n}\n\nfunction getHeatmapClass(mtime: string): string {\n const daysDiff = (Date.now() - new Date(mtime).getTime()) / (1000 * 60 * 60 * 24)\n if (daysDiff <= 7) return \"text-green-400\"\n if (daysDiff <= 28) return \"text-yellow-400/70\"\n return \"text-muted\"\n}\n\ninterface TreeNodeRowProps {\n node: TreeNode\n depth: number\n selectedPath: string | null\n onSelect: (path: string) => void\n heatmap: boolean\n defaultOpen?: boolean\n}\n\nfunction TreeNodeRow({ node, depth, selectedPath, onSelect, heatmap, defaultOpen = false }: TreeNodeRowProps) {\n const [open, setOpen] = useState(defaultOpen)\n const indent = depth * 12\n\n if (node.file) {\n const isSelected = node.file.path === selectedPath\n const colorClass = heatmap ? getHeatmapClass(node.file.mtime) : \"text-muted\"\n return (\n <button\n onClick={() => onSelect(node.file!.path)}\n className={cn(\n \"w-full flex flex-col gap-0.5 px-2 py-1.5 text-left hover:bg-surface2 transition-colors rounded-sm\",\n isSelected && \"bg-surface2 ring-1 ring-inset ring-accent/30\"\n )}\n style={{ paddingLeft: indent + 8 }}\n >\n <div className=\"flex items-center gap-1.5\">\n <FileText className={cn(\"w-3.5 h-3.5 shrink-0\", colorClass)} />\n <span className=\"text-xs text-txt truncate\">{node.name}</span>\n </div>\n {node.file.description && (\n <p className=\"text-[10px] text-muted leading-tight truncate\" style={{ paddingLeft: 20 }}>\n {node.file.description}\n </p>\n )}\n </button>\n )\n }\n\n return (\n <Collapsible open={open} onOpenChange={setOpen}>\n <CollapsibleTrigger asChild>\n <button\n className=\"w-full flex items-center gap-1.5 px-2 py-1 text-left hover:bg-surface2 transition-colors rounded-sm\"\n style={{ paddingLeft: indent + 8 }}\n >\n <ChevronRight\n className={cn(\"w-3 h-3 text-muted shrink-0 transition-transform duration-200\", open && \"rotate-90\")}\n />\n {open\n ? <FolderOpen className=\"w-3.5 h-3.5 text-accent shrink-0\" />\n : <Folder className=\"w-3.5 h-3.5 text-muted shrink-0\" />\n }\n <span className=\"text-xs text-txt font-medium\">{node.name}</span>\n </button>\n </CollapsibleTrigger>\n <CollapsibleContent>\n {node.children.map((child) => (\n <TreeNodeRow\n key={child.folderPath}\n node={child}\n depth={depth + 1}\n selectedPath={selectedPath}\n onSelect={onSelect}\n heatmap={heatmap}\n />\n ))}\n </CollapsibleContent>\n </Collapsible>\n )\n}\n\ninterface FileTreeProps {\n files: ExplorerFile[]\n selectedPath: string | null\n onSelect: (path: string) => void\n heatmap: boolean\n}\n\nexport function FileTree({ files, selectedPath, onSelect, heatmap }: FileTreeProps) {\n const tree = useMemo(() => buildTree(files), [files])\n\n return (\n <ScrollArea className=\"flex-1\">\n <div className=\"p-2\">\n {tree.map((node) => (\n <TreeNodeRow\n key={node.folderPath}\n node={node}\n depth={0}\n selectedPath={selectedPath}\n onSelect={onSelect}\n heatmap={heatmap}\n defaultOpen={true}\n />\n ))}\n </div>\n </ScrollArea>\n )\n}\n","\"use client\"\n\nimport dynamic from \"next/dynamic\"\nimport { useMemo } from \"react\"\nimport type { ExplorerFile } from \"@/types\"\n\n// ECharts uses browser APIs — must be dynamically imported with ssr: false\nconst ReactECharts = dynamic(() => import(\"echarts-for-react\"), { ssr: false })\n\ninterface TreemapNode {\n name: string\n value?: number\n path?: string\n itemStyle?: { color: string }\n children?: TreemapNode[]\n}\n\ninterface FileTreemapProps {\n files: ExplorerFile[]\n onSelect: (path: string) => void\n}\n\nfunction freshnessColor(mtime: string): string {\n const age = Date.now() - new Date(mtime).getTime()\n const days = age / (1000 * 60 * 60 * 24)\n if (days <= 7) return \"#059669\" // emerald-600 — recent (readable on dark)\n if (days <= 28) return \"#b45309\" // amber-700 — mid\n return \"#334155\" // slate-700 — old\n}\n\nfunction buildTreemapData(files: ExplorerFile[]): TreemapNode[] {\n const root: TreemapNode[] = []\n const folderMap = new Map<string, TreemapNode>()\n\n // Normalize to forward slashes (paths may have backslashes on Windows/WSL)\n // and skip root-level files (no folder) — they'd appear as orphan tiles.\n const sorted = [...files]\n .map((f) => ({ ...f, path: f.path.replace(/\\\\/g, \"/\") }))\n .filter((f) => f.path.includes(\"/\"))\n .sort((a, b) => a.path.localeCompare(b.path))\n\n for (const file of sorted) {\n const parts = file.path.split(\"/\")\n const fileName = parts[parts.length - 1].replace(/\\.md$/i, \"\")\n\n const leaf: TreemapNode = {\n name: fileName,\n value: 1,\n path: file.path,\n itemStyle: { color: freshnessColor(file.mtime) },\n }\n\n if (parts.length === 1) {\n // Top-level file\n root.push(leaf)\n } else {\n // Ensure each ancestor folder exists\n for (let depth = 1; depth < parts.length; depth++) {\n const folderPath = parts.slice(0, depth).join(\"/\")\n if (!folderMap.has(folderPath)) {\n const folderNode: TreemapNode = {\n name: parts[depth - 1],\n // value will be summed up after tree is built\n children: [],\n }\n folderMap.set(folderPath, folderNode)\n\n if (depth === 1) {\n root.push(folderNode)\n } else {\n const parentPath = parts.slice(0, depth - 1).join(\"/\")\n const parent = folderMap.get(parentPath)\n if (parent) parent.children!.push(folderNode)\n }\n }\n }\n\n // Attach leaf to its immediate parent folder\n const parentPath = parts.slice(0, parts.length - 1).join(\"/\")\n const parent = folderMap.get(parentPath)\n if (parent) parent.children!.push(leaf)\n }\n }\n\n // Give each folder a value = number of descendant files so ECharts sizes it correctly\n function sumValues(node: TreemapNode): number {\n if (!node.children || node.children.length === 0) return node.value ?? 1\n const total = node.children.reduce((acc, child) => acc + sumValues(child), 0)\n node.value = total\n return total\n }\n root.forEach(sumValues)\n\n return root\n}\n\nexport function FileTreemap({ files, onSelect }: FileTreemapProps) {\n const treeData = useMemo(() => buildTreemapData(files), [files])\n\n const option = useMemo(\n () => ({\n backgroundColor: \"transparent\",\n tooltip: {\n backgroundColor: \"#1e293b\",\n borderColor: \"#334155\",\n borderWidth: 1,\n padding: [6, 10],\n textStyle: { color: \"#f1f5f9\", fontSize: 12 },\n formatter: (info: { name: string; data: TreemapNode }) => {\n const { name, data } = info\n return data.path\n ? `<span style=\"color:#94a3b8;font-size:11px\">${data.path}</span>`\n : `<span style=\"font-weight:600\">${name}/</span>`\n },\n },\n series: [\n {\n type: \"treemap\",\n data: treeData,\n roam: false,\n leafDepth: 1,\n width: \"100%\",\n height: \"100%\",\n top: 4,\n bottom: 36,\n left: 4,\n right: 4,\n squareRatio: 0.7,\n breadcrumb: {\n show: true,\n bottom: 4,\n height: 26,\n gap: 6,\n itemStyle: {\n color: \"#1e293b\",\n borderColor: \"#334155\",\n borderWidth: 1,\n shadowBlur: 0,\n textStyle: { color: \"#94a3b8\", fontSize: 11, fontFamily: \"inherit\" },\n },\n emptyItemWidth: 20,\n },\n // labels on leaf nodes\n label: {\n show: true,\n formatter: \"{b}\",\n fontSize: 12,\n fontWeight: 500,\n color: \"#f1f5f9\",\n textShadowBlur: 3,\n textShadowColor: \"rgba(0,0,0,0.8)\",\n overflow: \"truncate\",\n padding: [4, 6],\n },\n // labels on folder header bar\n upperLabel: {\n show: true,\n height: 24,\n fontSize: 12,\n fontWeight: 700,\n color: \"#f8fafc\",\n backgroundColor: \"rgba(15,23,42,0.85)\",\n borderRadius: [4, 4, 0, 0],\n padding: [4, 8],\n textShadowBlur: 0,\n },\n itemStyle: {\n borderColor: \"#0f172a\",\n borderWidth: 1,\n gapWidth: 1,\n },\n emphasis: {\n label: { color: \"#ffffff\", fontWeight: 700 },\n upperLabel: { color: \"#ffffff\", backgroundColor: \"rgba(99,102,241,0.9)\" },\n itemStyle: { borderColor: \"#6366f1\", borderWidth: 2 },\n },\n levels: [\n {\n // top-level folders — large colored blocks\n color: [\"#1e3a5f\", \"#1a3a2e\", \"#3b2a1a\", \"#2d1b4e\", \"#1a2e3b\", \"#3b1a1a\"],\n itemStyle: {\n borderColor: \"#0f172a\",\n borderWidth: 3,\n gapWidth: 4,\n },\n upperLabel: {\n show: true,\n height: 28,\n fontSize: 13,\n fontWeight: 700,\n color: \"#f8fafc\",\n backgroundColor: \"rgba(15,23,42,0.9)\",\n },\n },\n {\n // sub-folders\n itemStyle: {\n borderColor: \"#0f172a\",\n borderWidth: 2,\n gapWidth: 2,\n },\n upperLabel: { show: true },\n },\n {\n // leaf files — color comes from itemStyle.color set per-node (freshness)\n itemStyle: {\n borderColor: \"rgba(15,23,42,0.6)\",\n borderWidth: 1,\n gapWidth: 1,\n },\n },\n ],\n },\n ],\n }),\n [treeData]\n )\n\n function handleClick(params: { data?: TreemapNode }) {\n if (!params?.data?.path) return\n onSelect(params.data.path)\n }\n\n if (files.length === 0) {\n return (\n <div className=\"flex-1 flex items-center justify-center text-muted text-sm h-full\">\n No files to display\n </div>\n )\n }\n\n return (\n <ReactECharts\n option={option}\n onEvents={{ click: handleClick }}\n style={{ height: \"100%\", width: \"100%\" }}\n opts={{ renderer: \"canvas\" }}\n notMerge\n />\n )\n}\n","\"use client\"\n\nimport { useState, useEffect } from \"react\"\nimport { FileText, RefreshCw, ExternalLink } from \"lucide-react\"\nimport { Button } from \"@/components/ui/button\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { cn } from \"@/lib/utils\"\nimport type { ExplorerFile } from \"@/types\"\n\nconst SOURCE_LABEL: Record<ExplorerFile['source'], string> = { ai: 'AI', extracted: 'Auto' }\nconst SOURCE_VARIANT: Record<ExplorerFile['source'], 'default' | 'secondary'> = { ai: 'default', extracted: 'secondary' }\n\ninterface FileDetailProps {\n file: ExplorerFile | null\n root: string\n onEnriched: (path: string, description: string) => void\n onOpenDoc: (path: string) => Promise<void>\n}\n\nexport function FileDetail({ file, root, onEnriched, onOpenDoc }: FileDetailProps) {\n const [enriching, setEnriching] = useState(false)\n const [flashGreen, setFlashGreen] = useState(false)\n const [error, setError] = useState<string | null>(null)\n\n useEffect(() => {\n setEnriching(false)\n setFlashGreen(false)\n setError(null)\n }, [file?.path])\n\n if (!file) {\n return (\n <div className=\"flex-1 flex items-center justify-center text-muted text-sm\">\n Select a file to see details\n </div>\n )\n }\n\n const parts = file.path.split(\"/\")\n\n async function handleEnrich() {\n setEnriching(true)\n setError(null)\n try {\n const res = await fetch(\"/api/explorer\", {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({ path: file!.path, ...(root ? { root } : {}) }),\n })\n const data = await res.json()\n if (res.ok) {\n onEnriched(file!.path, data.description)\n setFlashGreen(true)\n setTimeout(() => setFlashGreen(false), 1500)\n } else {\n setError(data.error ?? 'Enrichment failed')\n }\n } finally {\n setEnriching(false)\n }\n }\n\n return (\n <div className=\"flex-1 p-6 flex flex-col gap-4 overflow-auto\">\n <div className=\"flex items-center gap-1.5 text-xs text-muted flex-wrap\">\n <FileText className=\"w-3.5 h-3.5 shrink-0\" />\n {parts.map((part, i) => (\n <span key={i} className=\"flex items-center gap-1.5\">\n {i > 0 && <span className=\"text-muted\">/</span>}\n <span className={i === parts.length - 1 ? \"text-txt font-medium\" : \"\"}>\n {part}\n </span>\n </span>\n ))}\n </div>\n\n <p className={cn(\"text-sm leading-relaxed transition-colors duration-500\", flashGreen ? \"text-green-400\" : \"text-txt\")}>\n {file.description || (\n <span className=\"text-muted italic\">\n No description yet — click Re-enrich to generate one\n </span>\n )}\n </p>\n\n {error && (\n <p className=\"text-xs text-red-400\">{error}</p>\n )}\n\n <div className=\"flex items-center gap-2 text-xs text-muted\">\n <Badge variant={SOURCE_VARIANT[file.source]} className=\"text-[10px]\">\n {SOURCE_LABEL[file.source]}\n </Badge>\n <span>Updated {new Date(file.updatedAt).toLocaleDateString()}</span>\n <span className=\"ml-auto\">Modified {new Date(file.mtime).toLocaleDateString()}</span>\n </div>\n\n <div className=\"flex gap-2 pt-2\">\n <Button variant=\"outline\" size=\"sm\" onClick={handleEnrich} disabled={enriching}>\n <RefreshCw className={`w-3 h-3 mr-1.5 ${enriching ? \"animate-spin\" : \"\"}`} />\n Re-enrich\n </Button>\n <Button variant=\"outline\" size=\"sm\" onClick={() => onOpenDoc(file.path)}>\n <ExternalLink className=\"w-3 h-3 mr-1.5\" />\n Open in Docs\n </Button>\n </div>\n </div>\n )\n}\n","\"use client\"\n\nimport { useState, useEffect, useMemo } from \"react\"\nimport { useRouter } from \"next/navigation\"\nimport { TreePine, SquareStack, Flame, type LucideIcon } from \"lucide-react\"\nimport { Input } from \"@/components/ui/input\"\nimport { Button } from \"@/components/ui/button\"\nimport { cn } from \"@/lib/utils\"\nimport { FileTree } from \"./FileTree\"\nimport { FileTreemap } from \"./FileTreemap\"\nimport { FileDetail } from \"./FileDetail\"\nimport type { ExplorerFile } from \"@/types\"\n\ntype ViewMode = \"tree\" | \"treemap\" | \"heatmap\"\ntype SortMode = \"name\" | \"mtime\" | \"updated\"\n\ninterface ExplorerTabProps {\n files: ExplorerFile[]\n loading: boolean\n view: ViewMode\n root: string\n onEnriched: (path: string, description: string) => void\n onOpenDoc: (path: string) => Promise<void>\n}\n\nconst VIEWS: { id: ViewMode; Icon: LucideIcon; label: string }[] = [\n { id: \"tree\", Icon: TreePine, label: \"Tree\" },\n { id: \"treemap\", Icon: SquareStack, label: \"Treemap\" },\n { id: \"heatmap\", Icon: Flame, label: \"Heatmap\" },\n]\n\nexport function ExplorerTab({ files, loading, view, root, onEnriched, onOpenDoc }: ExplorerTabProps) {\n const router = useRouter()\n const [search, setSearch] = useState(\"\")\n const [selectedPath, setSelectedPath] = useState<string | null>(null)\n const [activeSection, setActiveSection] = useState<string>(\"all\")\n const [sort, setSort] = useState<SortMode>(\"name\")\n const [missingOnly, setMissingOnly] = useState(false)\n\n const selectedFile = files.find((f) => f.path === selectedPath) ?? null\n\n const sections = useMemo(\n () => [\"all\", ...[...new Set(files.map(f => f.section))].sort()],\n [files]\n )\n\n const filteredFiles = useMemo(() => {\n let result = files\n\n if (search) {\n const q = search.toLowerCase()\n result = result.filter(\n f => f.path.toLowerCase().includes(q) || f.description.toLowerCase().includes(q)\n )\n }\n\n if (activeSection !== \"all\") {\n result = result.filter(f => f.section === activeSection)\n }\n\n if (missingOnly) {\n result = result.filter(f => !f.description.trim())\n }\n\n return [...result].sort((a, b) => {\n if (sort === \"mtime\") return b.mtime.localeCompare(a.mtime)\n if (sort === \"updated\") return b.updatedAt.localeCompare(a.updatedAt)\n return a.path.localeCompare(b.path)\n })\n }, [files, search, activeSection, missingOnly, sort])\n\n // Clear selection when the selected file is filtered out\n useEffect(() => {\n if (selectedPath !== null && !filteredFiles.find(f => f.path === selectedPath)) {\n setSelectedPath(null)\n }\n }, [filteredFiles, selectedPath])\n\n // Reset section filter when search changes\n useEffect(() => {\n setActiveSection(\"all\")\n }, [search])\n\n function setView(v: ViewMode) {\n router.push(`/explorer?view=${v}`)\n }\n\n return (\n <div className=\"flex flex-col h-full\">\n {/* Header row 1 */}\n <div className=\"flex items-center gap-3 px-4 py-3 border-b border-border shrink-0\">\n <span className=\"font-display font-semibold text-txt text-sm shrink-0\">Explorer</span>\n <Input\n id=\"explorer-search\"\n placeholder=\"Search files and descriptions…\"\n value={search}\n onChange={(e) => setSearch(e.target.value)}\n className=\"flex-1 h-7 text-xs\"\n />\n <div className=\"flex items-center gap-1 shrink-0\">\n {VIEWS.map(({ id, Icon, label }) => (\n <Button\n key={id}\n variant={view === id ? \"secondary\" : \"ghost\"}\n size=\"sm\"\n className=\"h-7 px-2 text-xs gap-1\"\n onClick={() => setView(id)}\n >\n <Icon className=\"w-3 h-3\" />\n {label}\n </Button>\n ))}\n <select\n value={sort}\n onChange={e => setSort(e.target.value as SortMode)}\n className=\"h-7 px-2 text-xs bg-surface2 border border-border rounded-sm text-txt focus:outline-hidden focus:border-accent ml-1\"\n >\n <option value=\"name\">Name</option>\n <option value=\"mtime\">Modified</option>\n <option value=\"updated\">Described</option>\n </select>\n <button\n onClick={() => setMissingOnly(v => !v)}\n className={cn(\n \"h-7 px-2 rounded-sm text-xs transition-colors border ml-1\",\n missingOnly\n ? \"bg-amber/20 text-amber border-amber/40\"\n : \"bg-surface2 text-muted border-border hover:text-txt\"\n )}\n >\n No desc\n </button>\n </div>\n </div>\n\n {/* Header row 2: section pills */}\n {sections.length > 2 && (\n <div className=\"flex items-center gap-1 px-4 py-2 border-b border-border overflow-x-auto shrink-0\">\n {sections.map(s => (\n <button\n key={s}\n onClick={() => setActiveSection(s)}\n className={cn(\n \"px-2.5 py-0.5 rounded-full text-xs whitespace-nowrap transition-colors\",\n activeSection === s\n ? \"bg-accent text-accent-fg\"\n : \"bg-surface2 text-muted hover:text-txt\"\n )}\n >\n {s === \"all\" ? \"All\" : s}\n </button>\n ))}\n </div>\n )}\n\n {/* Content */}\n {loading ? (\n <div className=\"flex-1 flex items-center justify-center text-muted text-sm\">\n Loading…\n </div>\n ) : view === \"treemap\" ? (\n <div className=\"flex-1 flex overflow-hidden\">\n <div className=\"flex-1 overflow-hidden\">\n <FileTreemap files={filteredFiles} onSelect={setSelectedPath} />\n </div>\n {selectedPath && selectedFile && (\n <div className=\"w-80 border-l border-border shrink-0\">\n <FileDetail\n file={selectedFile}\n root={root}\n onEnriched={onEnriched}\n onOpenDoc={onOpenDoc}\n />\n </div>\n )}\n </div>\n ) : (\n <div className=\"flex-1 flex overflow-hidden\">\n <div className=\"w-72 border-r border-border flex flex-col overflow-hidden\">\n {filteredFiles.length === 0 ? (\n <div className=\"flex-1 flex items-center justify-center text-muted text-sm\">\n No files match your search\n </div>\n ) : (\n <FileTree\n files={filteredFiles}\n selectedPath={selectedPath}\n onSelect={setSelectedPath}\n heatmap={view === \"heatmap\"}\n />\n )}\n </div>\n <FileDetail\n file={selectedFile}\n root={root}\n onEnriched={onEnriched}\n onOpenDoc={onOpenDoc}\n />\n </div>\n )}\n </div>\n )\n}\n","\"use client\"\n\nimport { Suspense, useCallback, useEffect, useState } from \"react\"\nimport { useSearchParams } from \"next/navigation\"\nimport { useApp } from \"@/context/AppContext\"\nimport { ExplorerTab } from \"@/components/explorer/ExplorerTab\"\nimport type { ExplorerFile } from \"@/types\"\n\nfunction ExplorerContent() {\n const { rootParam, activeProject, openDoc } = useApp()\n const searchParams = useSearchParams()\n const view = (searchParams.get(\"view\") as \"tree\" | \"treemap\" | \"heatmap\") || \"tree\"\n const [files, setFiles] = useState<ExplorerFile[]>([])\n const [loading, setLoading] = useState(true)\n\n const fetchFiles = useCallback(async () => {\n setLoading(true)\n try {\n const res = await fetch(`/api/explorer${rootParam}`)\n const data = await res.json()\n setFiles(Array.isArray(data) ? data : [])\n } finally {\n setLoading(false)\n }\n }, [rootParam])\n\n useEffect(() => {\n fetchFiles()\n }, [fetchFiles])\n\n function handleEnriched(path: string, description: string) {\n setFiles((prev) =>\n prev.map((f) =>\n f.path === path\n ? { ...f, description, source: \"ai\" as const, updatedAt: new Date().toISOString() }\n : f\n )\n )\n }\n\n return (\n <ExplorerTab\n files={files}\n loading={loading}\n view={view}\n root={activeProject}\n onEnriched={handleEnriched}\n onOpenDoc={openDoc}\n />\n )\n}\n\nexport default function ExplorerPage() {\n return (\n <div className=\"flex flex-col h-full\">\n <Suspense\n fallback={\n <div className=\"flex-1 flex items-center justify-center text-muted-foreground text-sm\">\n Loading…\n </div>\n }\n >\n <ExplorerContent />\n </Suspense>\n </div>\n )\n}\n","import createLucideIcon from '../createLucideIcon';\nimport type { LucideIconNode, LucideIconData } from '../types';\n\nexport const __iconData: LucideIconData = {\n name: 'external-link',\n size: 24,\n node: [\n ['path', { d: 'M15 3h6v6', key: '1q9fwt' }],\n ['path', { d: 'M10 14 21 3', key: 'gplh6r' }],\n ['path', { d: 'M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6', key: 'a6xqqp' }],\n ],\n};\n\n/**\n * @deprecated Access `__iconData` instead.\n */\nexport const __iconNode: LucideIconNode[] = __iconData.node;\n\n/**\n * @component @name ExternalLink\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTUgM2g2djYiIC8+CiAgPHBhdGggZD0iTTEwIDE0IDIxIDMiIC8+CiAgPHBhdGggZD0iTTE4IDEzdjZhMiAyIDAgMCAxLTIgMkg1YTIgMiAwIDAgMS0yLTJWOGEyIDIgMCAwIDEgMi0yaDYiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/external-link\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ExternalLink = createLucideIcon(__iconData);\n\nexport default ExternalLink;\n","import createLucideIcon from '../createLucideIcon';\nimport type { LucideIconNode, LucideIconData } from '../types';\n\nexport const __iconData: LucideIconData = {\n name: 'flame',\n size: 24,\n node: [\n [\n 'path',\n {\n d: 'M12 3q1 4 4 6.5t3 5.5a1 1 0 0 1-14 0 5 5 0 0 1 1-3 1 1 0 0 0 5 0c0-2-1.5-3-1.5-5q0-2 2.5-4',\n key: '1slcih',\n },\n ],\n ],\n};\n\n/**\n * @deprecated Access `__iconData` instead.\n */\nexport const __iconNode: LucideIconNode[] = __iconData.node;\n\n/**\n * @component @name Flame\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTIgM3ExIDQgNCA2LjV0MyA1LjVhMSAxIDAgMCAxLTE0IDAgNSA1IDAgMCAxIDEtMyAxIDEgMCAwIDAgNSAwYzAtMi0xLjUtMy0xLjUtNXEwLTIgMi41LTQiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/flame\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Flame = createLucideIcon(__iconData);\n\nexport default Flame;\n","import createLucideIcon from '../createLucideIcon';\nimport type { LucideIconNode, LucideIconData } from '../types';\n\nexport const __iconData: LucideIconData = {\n name: 'square-stack',\n size: 24,\n node: [\n ['path', { d: 'M4 10c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h4c1.1 0 2 .9 2 2', key: '4i38lg' }],\n ['path', { d: 'M10 16c-1.1 0-2-.9-2-2v-4c0-1.1.9-2 2-2h4c1.1 0 2 .9 2 2', key: 'mlte4a' }],\n ['rect', { width: '8', height: '8', x: '14', y: '14', rx: '2', key: '1fa9i4' }],\n ],\n};\n\n/**\n * @deprecated Access `__iconData` instead.\n */\nexport const __iconNode: LucideIconNode[] = __iconData.node;\n\n/**\n * @component @name SquareStack\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNNCAxMGMtMS4xIDAtMi0uOS0yLTJWNGMwLTEuMS45LTIgMi0yaDRjMS4xIDAgMiAuOSAyIDIiIC8+CiAgPHBhdGggZD0iTTEwIDE2Yy0xLjEgMC0yLS45LTItMnYtNGMwLTEuMS45LTIgMi0yaDRjMS4xIDAgMiAuOSAyIDIiIC8+CiAgPHJlY3Qgd2lkdGg9IjgiIGhlaWdodD0iOCIgeD0iMTQiIHk9IjE0IiByeD0iMiIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/square-stack\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst SquareStack = createLucideIcon(__iconData);\n\nexport default SquareStack;\n","import createLucideIcon from '../createLucideIcon';\nimport type { LucideIconNode, LucideIconData } from '../types';\n\nexport const __iconData: LucideIconData = {\n name: 'tree-pine',\n size: 24,\n node: [\n [\n 'path',\n {\n d: 'm17 14 3 3.3a1 1 0 0 1-.7 1.7H4.7a1 1 0 0 1-.7-1.7L7 14h-.3a1 1 0 0 1-.7-1.7L9 9h-.2A1 1 0 0 1 8 7.3L12 3l4 4.3a1 1 0 0 1-.8 1.7H15l3 3.3a1 1 0 0 1-.7 1.7H17Z',\n key: 'cpyugq',\n },\n ],\n ['path', { d: 'M12 22v-3', key: 'kmzjlo' }],\n ],\n};\n\n/**\n * @deprecated Access `__iconData` instead.\n */\nexport const __iconNode: LucideIconNode[] = __iconData.node;\n\n/**\n * @component @name TreePine\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJtMTcgMTQgMyAzLjNhMSAxIDAgMCAxLS43IDEuN0g0LjdhMSAxIDAgMCAxLS43LTEuN0w3IDE0aC0uM2ExIDEgMCAwIDEtLjctMS43TDkgOWgtLjJBMSAxIDAgMCAxIDggNy4zTDEyIDNsNCA0LjNhMSAxIDAgMCAxLS44IDEuN0gxNWwzIDMuM2ExIDEgMCAwIDEtLjcgMS43SDE3WiIgLz4KICA8cGF0aCBkPSJNMTIgMjJ2LTMiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/tree-pine\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst TreePine = createLucideIcon(__iconData);\n\nexport default TreePine;\n"],"names":["_interop_require_default","obj","__esModule","default","exports","_","encodeURIPath","file","split","map","p","encodeURIComponent","join","BailoutToCSR","reason","children","window","BailoutToCSRError","PreloadChunks","moduleIds","workStore","workAsyncStorage","getStore","undefined","allFiles","reactLoadableManifest","manifest","key","chunks","files","push","length","query","getAssetTokenQuery","chunk","href","assetPrefix","isCss","endsWith","link","precedence","rel","as","nonce","preload","fetchPriority","convertModule","mod","hasDefault","defaultOptions","loader","Promise","resolve","loading","ssr","Loadable","options","opts","Lazy","lazy","then","Loading","LoadableComponent","props","fallbackElement","isLoading","pastDelay","error","hasSuspenseBoundary","Wrap","Suspense","Fragment","wrapProps","fallback","modules","displayName","dynamic","dynamicOptions","loadableOptions","mergedOptions","loadableGenerated","node","d"],"mappings":"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","ignoreList":[0,1,2,3,4,5,11,12,13,14]}
@@ -0,0 +1,3 @@
1
+ module.exports=[763747,a=>{"use strict";var b=a.i(256857);let c={name:"ellipsis",size:24,node:[["circle",{cx:"12",cy:"12",r:"1",key:"41hilf"}],["circle",{cx:"19",cy:"12",r:"1",key:"1wjl8i"}],["circle",{cx:"5",cy:"12",r:"1",key:"1pcz8c"}]],aliases:["more-horizontal"]};c.node;let d=(0,b.default)(c);a.s(["MoreHorizontal",0,d],763747)},717143,a=>{"use strict";var b=a.i(256857);let c={name:"folder-input",size:24,node:[["path",{d:"M2 9V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H20a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2v-1",key:"fm4g5t"}],["path",{d:"M2 13h10",key:"pgb2dq"}],["path",{d:"m9 16 3-3-3-3",key:"6m91ic"}]]};c.node;let d=(0,b.default)(c);a.s(["FolderInput",0,d],717143)},553415,a=>{"use strict";var b=a.i(256857);let c={name:"list-tree",size:24,node:[["path",{d:"M8 5h13",key:"1pao27"}],["path",{d:"M13 12h8",key:"h98zly"}],["path",{d:"M13 19h8",key:"c3s6r1"}],["path",{d:"M3 10a2 2 0 0 0 2 2h3",key:"1npucw"}],["path",{d:"M3 5v12a2 2 0 0 0 2 2h3",key:"x1gjn2"}]]};c.node;let d=(0,b.default)(c);a.s(["ListTree",0,d],553415)},441852,a=>{"use strict";var b=a.i(256857);let c={name:"message-square",size:24,node:[["path",{d:"M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z",key:"18887p"}]]};c.node;let d=(0,b.default)(c);a.s(["MessageSquare",0,d],441852)},661661,a=>{"use strict";var b=a.i(256857);let c={name:"pencil",size:24,node:[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}],["path",{d:"m15 5 4 4",key:"1mk7zo"}]]};c.node;let d=(0,b.default)(c);a.s(["Pencil",0,d],661661)},551729,a=>{"use strict";var b=a.i(256857);let c={name:"sparkles",size:24,node:[["path",{d:"M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z",key:"1s2grr"}],["path",{d:"M20 2v4",key:"1rf3ol"}],["path",{d:"M22 4h-4",key:"gwowj6"}],["circle",{cx:"4",cy:"20",r:"2",key:"6kqj1y"}]],aliases:["stars"]};c.node;let d=(0,b.default)(c);a.s(["Sparkles",0,d],551729)},340933,a=>{"use strict";var b=a.i(256857);let c={name:"triangle-alert",size:24,node:[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]],aliases:["alert-triangle"]};c.node;let d=(0,b.default)(c);a.s(["AlertTriangle",0,d],340933)},892678,192698,a=>{"use strict";var b=a.i(256857);let c={name:"user",size:24,node:[["path",{d:"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2",key:"975kel"}],["circle",{cx:"12",cy:"7",r:"4",key:"17ys0d"}]]};c.node;let d=(0,b.default)(c);a.s(["User",0,d],892678);var e=a.i(662145),f=a.i(368114);a.s(["ItemPanelHeader",0,function({kicker:a,title:b,menu:c,properties:d,className:g,children:h}){let i=d.filter(a=>null!==a.value&&void 0!==a.value&&!1!==a.value);return(0,e.jsxs)("header",{"data-item-header":!0,className:(0,f.cn)("flex shrink-0 flex-col gap-2 border-b border-border px-5 pb-4 pt-4",g),children:[(0,e.jsxs)("div",{className:"flex min-h-7 items-center gap-2 pr-8 font-mono text-[11px] text-muted",children:[(0,e.jsx)("div",{className:"flex min-w-0 flex-1 items-center gap-1",children:a}),c]}),(0,e.jsx)("div",{className:"text-base font-semibold leading-snug text-txt",children:b}),i.length>0&&(0,e.jsx)("dl",{className:"grid grid-cols-[88px_minmax(0,1fr)] items-center gap-x-3 gap-y-1.5 text-xs",children:i.map(a=>(0,e.jsxs)("div",{className:"contents",children:[(0,e.jsx)("dt",{className:"text-muted",children:a.label}),(0,e.jsx)("dd",{className:"flex min-w-0 items-center gap-2 text-txt",children:a.value})]},a.label))}),h]})}],192698)},21215,a=>{"use strict";var b=a.i(662145),c=a.i(368114);a.s(["EmptyState",0,function({icon:a,message:d,subMessage:e,bordered:f}){return(0,b.jsxs)("div",{className:(0,c.cn)("text-center py-16 text-muted text-sm",f&&"border border-dashed border-border rounded-xl"),children:[(0,b.jsx)("p",{className:"text-3xl mb-3",children:a}),(0,b.jsx)("p",{children:d}),e&&(0,b.jsx)("p",{className:"text-xs mt-1",children:e})]})}])},787714,a=>{"use strict";var b=a.i(662145),c=a.i(174897),d=a.i(425404),e=a.i(335732),f=a.i(368114);let g=a=>a.stopPropagation(),h="inline-flex min-w-0 items-center gap-1 rounded-sm px-1 -mx-1 text-left outline-hidden hover:bg-surface2 focus-visible:ring-2 focus-visible:ring-accent/60";a.s(["InlineDate",0,function({label:a,value:d,onChange:e,children:i,className:j}){let[k,l]=(0,c.useState)(!1),[m,n]=(0,c.useState)(d??""),o=()=>{l(!1),(m||null)!==d&&e(m||null)};return k?(0,b.jsx)("input",{type:"date",autoFocus:!0,"aria-label":a,value:m,onChange:a=>n(a.target.value),onClick:g,onPointerDown:g,onKeyDown:a=>{g(a),"Enter"===a.key&&(a.preventDefault(),o()),"Escape"===a.key&&(a.preventDefault(),l(!1))},onBlur:o,className:"h-6 rounded-sm border border-accent/60 bg-bg px-1 font-mono text-[11px] text-txt scheme-light outline-hidden dark:scheme-dark"}):(0,b.jsx)("button",{type:"button","aria-label":a,draggable:!1,onClick:a=>{g(a),n(d??""),l(!0)},onKeyDown:g,className:(0,f.cn)(h,j),children:i})},"InlineSelect",0,function({label:a,value:c,options:i,onChange:j,children:k,className:l}){return(0,b.jsxs)(e.DropdownMenu,{children:[(0,b.jsx)(e.DropdownMenuTrigger,{asChild:!0,children:(0,b.jsx)("button",{type:"button","aria-label":a,draggable:!1,onClick:g,onKeyDown:g,onPointerDown:g,className:(0,f.cn)(h,l),children:k})}),(0,b.jsx)(e.DropdownMenuContent,{align:"start",className:"max-h-72 w-48 overflow-y-auto",onClick:g,onKeyDown:g,children:i.map(a=>(0,b.jsxs)(e.DropdownMenuItem,{onSelect:()=>{a.value!==c&&j(a.value)},children:[a.node??a.label,a.value===c&&(0,b.jsx)(d.Check,{className:"ml-auto size-3.5 text-muted","aria-hidden":!0})]},a.value))})]})}])},813722,853775,a=>{"use strict";var b=a.i(662145),c=a.i(795667),d=a.i(892678),e=a.i(368114);function f(a){return"human"===a?"human":a?.startsWith("ai:")?"ai":"none"}function g(a){return"human"===a?"Human":a?.startsWith("ai:")?a.slice(3):"No owner"}a.s(["ownerKind",0,f,"ownerLabel",0,g],853775),a.s(["OwnerChip",0,function({owner:a,className:h}){let i=f(a);if("none"===i)return null;let j="ai"===i?c.Bot:d.User;return(0,b.jsxs)("span",{title:`Owner: ${g(a)}`,className:(0,e.cn)("inline-flex items-center gap-1 text-[11px] text-muted",h),children:[(0,b.jsx)(j,{className:(0,e.cn)("size-3.5 shrink-0","ai"===i&&"text-accent"),"aria-hidden":!0}),g(a)]})}],813722)}];
2
+
3
+ //# sourceMappingURL=_1h0wfpz._.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/ellipsis.ts","../../../../node_modules/.pnpm/lucide-react%401.48.0_react%4019.3.0/node_modules/lucide-react/src/icons/folder-input.ts","../../../../node_modules/.pnpm/lucide-react%401.48.0_react%4019.3.0/node_modules/lucide-react/src/icons/list-tree.ts","../../../../node_modules/.pnpm/lucide-react%401.48.0_react%4019.3.0/node_modules/lucide-react/src/icons/message-square.ts","../../../../node_modules/.pnpm/lucide-react%401.48.0_react%4019.3.0/node_modules/lucide-react/src/icons/pencil.ts","../../../../node_modules/.pnpm/lucide-react%401.48.0_react%4019.3.0/node_modules/lucide-react/src/icons/sparkles.ts","../../../../node_modules/.pnpm/lucide-react%401.48.0_react%4019.3.0/node_modules/lucide-react/src/icons/triangle-alert.ts","../../../../src/components/shared/ItemPanelHeader.tsx","../../../../node_modules/.pnpm/lucide-react%401.48.0_react%4019.3.0/node_modules/lucide-react/src/icons/user.ts","../../../../src/components/shared/EmptyState.tsx","../../../../src/components/shared/InlineProperty.tsx","../../../../src/components/shared/OwnerChip.tsx","../../../../src/lib/owner.ts"],"sourcesContent":["import createLucideIcon from '../createLucideIcon';\nimport type { LucideIconNode, LucideIconData } from '../types';\n\nexport const __iconData: LucideIconData = {\n name: 'ellipsis',\n size: 24,\n node: [\n ['circle', { cx: '12', cy: '12', r: '1', key: '41hilf' }],\n ['circle', { cx: '19', cy: '12', r: '1', key: '1wjl8i' }],\n ['circle', { cx: '5', cy: '12', r: '1', key: '1pcz8c' }],\n ],\n aliases: ['more-horizontal'],\n};\n\n/**\n * @deprecated Access `__iconData` instead.\n */\nexport const __iconNode: LucideIconNode[] = __iconData.node;\n\n/**\n * @component @name Ellipsis\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSIxIiAvPgogIDxjaXJjbGUgY3g9IjE5IiBjeT0iMTIiIHI9IjEiIC8+CiAgPGNpcmNsZSBjeD0iNSIgY3k9IjEyIiByPSIxIiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/ellipsis\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 Ellipsis = createLucideIcon(__iconData);\n\nexport default Ellipsis;\n","import createLucideIcon from '../createLucideIcon';\nimport type { LucideIconNode, LucideIconData } from '../types';\n\nexport const __iconData: LucideIconData = {\n name: 'folder-input',\n size: 24,\n node: [\n [\n 'path',\n {\n d: 'M2 9V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H20a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2v-1',\n key: 'fm4g5t',\n },\n ],\n ['path', { d: 'M2 13h10', key: 'pgb2dq' }],\n ['path', { d: 'm9 16 3-3-3-3', key: '6m91ic' }],\n ],\n};\n\n/**\n * @deprecated Access `__iconData` instead.\n */\nexport const __iconNode: LucideIconNode[] = __iconData.node;\n\n/**\n * @component @name FolderInput\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMiA5VjVhMiAyIDAgMCAxIDItMmgzLjlhMiAyIDAgMCAxIDEuNjkuOWwuODEgMS4yYTIgMiAwIDAgMCAxLjY3LjlIMjBhMiAyIDAgMCAxIDIgMnYxMGEyIDIgMCAwIDEtMiAySDRhMiAyIDAgMCAxLTItMnYtMSIgLz4KICA8cGF0aCBkPSJNMiAxM2gxMCIgLz4KICA8cGF0aCBkPSJtOSAxNiAzLTMtMy0zIiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/folder-input\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 FolderInput = createLucideIcon(__iconData);\n\nexport default FolderInput;\n","import createLucideIcon from '../createLucideIcon';\nimport type { LucideIconNode, LucideIconData } from '../types';\n\nexport const __iconData: LucideIconData = {\n name: 'list-tree',\n size: 24,\n node: [\n ['path', { d: 'M8 5h13', key: '1pao27' }],\n ['path', { d: 'M13 12h8', key: 'h98zly' }],\n ['path', { d: 'M13 19h8', key: 'c3s6r1' }],\n ['path', { d: 'M3 10a2 2 0 0 0 2 2h3', key: '1npucw' }],\n ['path', { d: 'M3 5v12a2 2 0 0 0 2 2h3', key: 'x1gjn2' }],\n ],\n};\n\n/**\n * @deprecated Access `__iconData` instead.\n */\nexport const __iconNode: LucideIconNode[] = __iconData.node;\n\n/**\n * @component @name ListTree\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNOCA1aDEzIiAvPgogIDxwYXRoIGQ9Ik0xMyAxMmg4IiAvPgogIDxwYXRoIGQ9Ik0xMyAxOWg4IiAvPgogIDxwYXRoIGQ9Ik0zIDEwYTIgMiAwIDAgMCAyIDJoMyIgLz4KICA8cGF0aCBkPSJNMyA1djEyYTIgMiAwIDAgMCAyIDJoMyIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/list-tree\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 ListTree = createLucideIcon(__iconData);\n\nexport default ListTree;\n","import createLucideIcon from '../createLucideIcon';\nimport type { LucideIconNode, LucideIconData } from '../types';\n\nexport const __iconData: LucideIconData = {\n name: 'message-square',\n size: 24,\n node: [\n [\n 'path',\n {\n d: 'M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z',\n key: '18887p',\n },\n ],\n ],\n};\n\n/**\n * @deprecated Access `__iconData` instead.\n */\nexport const __iconNode: LucideIconNode[] = __iconData.node;\n\n/**\n * @component @name MessageSquare\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMjIgMTdhMiAyIDAgMCAxLTIgMkg2LjgyOGEyIDIgMCAwIDAtMS40MTQuNTg2bC0yLjIwMiAyLjIwMkEuNzEuNzEgMCAwIDEgMiAyMS4yODZWNWEyIDIgMCAwIDEgMi0yaDE2YTIgMiAwIDAgMSAyIDJ6IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/message-square\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 MessageSquare = createLucideIcon(__iconData);\n\nexport default MessageSquare;\n","import createLucideIcon from '../createLucideIcon';\nimport type { LucideIconNode, LucideIconData } from '../types';\n\nexport const __iconData: LucideIconData = {\n name: 'pencil',\n size: 24,\n node: [\n [\n 'path',\n {\n d: 'M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z',\n key: '1a8usu',\n },\n ],\n ['path', { d: 'm15 5 4 4', key: '1mk7zo' }],\n ],\n};\n\n/**\n * @deprecated Access `__iconData` instead.\n */\nexport const __iconNode: LucideIconNode[] = __iconData.node;\n\n/**\n * @component @name Pencil\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMjEuMTc0IDYuODEyYTEgMSAwIDAgMC0zLjk4Ni0zLjk4N0wzLjg0MiAxNi4xNzRhMiAyIDAgMCAwLS41LjgzbC0xLjMyMSA0LjM1MmEuNS41IDAgMCAwIC42MjMuNjIybDQuMzUzLTEuMzJhMiAyIDAgMCAwIC44My0uNDk3eiIgLz4KICA8cGF0aCBkPSJtMTUgNSA0IDQiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/pencil\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 Pencil = createLucideIcon(__iconData);\n\nexport default Pencil;\n","import createLucideIcon from '../createLucideIcon';\nimport type { LucideIconNode, LucideIconData } from '../types';\n\nexport const __iconData: LucideIconData = {\n name: 'sparkles',\n size: 24,\n node: [\n [\n 'path',\n {\n d: 'M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z',\n key: '1s2grr',\n },\n ],\n ['path', { d: 'M20 2v4', key: '1rf3ol' }],\n ['path', { d: 'M22 4h-4', key: 'gwowj6' }],\n ['circle', { cx: '4', cy: '20', r: '2', key: '6kqj1y' }],\n ],\n aliases: ['stars'],\n};\n\n/**\n * @deprecated Access `__iconData` instead.\n */\nexport const __iconNode: LucideIconNode[] = __iconData.node;\n\n/**\n * @component @name Sparkles\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTEuMDE3IDIuODE0YTEgMSAwIDAgMSAxLjk2NiAwbDEuMDUxIDUuNTU4YTIgMiAwIDAgMCAxLjU5NCAxLjU5NGw1LjU1OCAxLjA1MWExIDEgMCAwIDEgMCAxLjk2NmwtNS41NTggMS4wNTFhMiAyIDAgMCAwLTEuNTk0IDEuNTk0bC0xLjA1MSA1LjU1OGExIDEgMCAwIDEtMS45NjYgMGwtMS4wNTEtNS41NThhMiAyIDAgMCAwLTEuNTk0LTEuNTk0bC01LjU1OC0xLjA1MWExIDEgMCAwIDEgMC0xLjk2Nmw1LjU1OC0xLjA1MWEyIDIgMCAwIDAgMS41OTQtMS41OTR6IiAvPgogIDxwYXRoIGQ9Ik0yMCAydjQiIC8+CiAgPHBhdGggZD0iTTIyIDRoLTQiIC8+CiAgPGNpcmNsZSBjeD0iNCIgY3k9IjIwIiByPSIyIiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/sparkles\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 Sparkles = createLucideIcon(__iconData);\n\nexport default Sparkles;\n","import createLucideIcon from '../createLucideIcon';\nimport type { LucideIconNode, LucideIconData } from '../types';\n\nexport const __iconData: LucideIconData = {\n name: 'triangle-alert',\n size: 24,\n node: [\n [\n 'path',\n {\n d: 'm21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3',\n key: 'wmoenq',\n },\n ],\n ['path', { d: 'M12 9v4', key: 'juzpu7' }],\n ['path', { d: 'M12 17h.01', key: 'p32p05' }],\n ],\n aliases: ['alert-triangle'],\n};\n\n/**\n * @deprecated Access `__iconData` instead.\n */\nexport const __iconNode: LucideIconNode[] = __iconData.node;\n\n/**\n * @component @name TriangleAlert\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJtMjEuNzMgMTgtOC0xNGEyIDIgMCAwIDAtMy40OCAwbC04IDE0QTIgMiAwIDAgMCA0IDIxaDE2YTIgMiAwIDAgMCAxLjczLTMiIC8+CiAgPHBhdGggZD0iTTEyIDl2NCIgLz4KICA8cGF0aCBkPSJNMTIgMTdoLjAxIiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/triangle-alert\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 TriangleAlert = createLucideIcon(__iconData);\n\nexport default TriangleAlert;\n","import type { ReactNode } from \"react\"\nimport { cn } from \"@/lib/utils\"\n\nexport interface ItemProperty {\n label: string\n /** null / undefined / false = the row is left out */\n value: ReactNode\n}\n\n/**\n * The one header every item panel uses (task, epic, doc): a kicker line (id · kind / breadcrumb) with the\n * ⋯ menu always at its right end, the title, then a properties grid.\n * `title` is a node so a Sheet can pass its SheetTitle.\n */\nexport function ItemPanelHeader({ kicker, title, menu, properties, className, children }: {\n kicker: ReactNode\n title: ReactNode\n menu?: ReactNode\n properties: ItemProperty[]\n className?: string\n /** Extra header content under the properties (e.g. an epic's progress) */\n children?: ReactNode\n}) {\n const shown = properties.filter((p) => p.value !== null && p.value !== undefined && p.value !== false)\n return (\n <header data-item-header className={cn(\"flex shrink-0 flex-col gap-2 border-b border-border px-5 pb-4 pt-4\", className)}>\n <div className=\"flex min-h-7 items-center gap-2 pr-8 font-mono text-[11px] text-muted\">\n <div className=\"flex min-w-0 flex-1 items-center gap-1\">{kicker}</div>\n {menu}\n </div>\n <div className=\"text-base font-semibold leading-snug text-txt\">{title}</div>\n {shown.length > 0 && (\n <dl className=\"grid grid-cols-[88px_minmax(0,1fr)] items-center gap-x-3 gap-y-1.5 text-xs\">\n {shown.map((p) => (\n <div key={p.label} className=\"contents\">\n <dt className=\"text-muted\">{p.label}</dt>\n <dd className=\"flex min-w-0 items-center gap-2 text-txt\">{p.value}</dd>\n </div>\n ))}\n </dl>\n )}\n {children}\n </header>\n )\n}\n","import createLucideIcon from '../createLucideIcon';\nimport type { LucideIconNode, LucideIconData } from '../types';\n\nexport const __iconData: LucideIconData = {\n name: 'user',\n size: 24,\n node: [\n ['path', { d: 'M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2', key: '975kel' }],\n ['circle', { cx: '12', cy: '7', r: '4', key: '17ys0d' }],\n ],\n};\n\n/**\n * @deprecated Access `__iconData` instead.\n */\nexport const __iconNode: LucideIconNode[] = __iconData.node;\n\n/**\n * @component @name User\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTkgMjF2LTJhNCA0IDAgMCAwLTQtNEg5YTQgNCAwIDAgMC00IDR2MiIgLz4KICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjciIHI9IjQiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/user\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 User = createLucideIcon(__iconData);\n\nexport default User;\n","import { cn } from \"@/lib/utils\"\r\n\r\ninterface EmptyStateProps {\r\n icon: string\r\n message: string\r\n subMessage?: string\r\n bordered?: boolean\r\n}\r\n\r\nexport function EmptyState({ icon, message, subMessage, bordered }: EmptyStateProps) {\r\n return (\r\n <div\r\n className={cn(\r\n \"text-center py-16 text-muted text-sm\",\r\n bordered && \"border border-dashed border-border rounded-xl\",\r\n )}\r\n >\r\n <p className=\"text-3xl mb-3\">{icon}</p>\r\n <p>{message}</p>\r\n {subMessage && <p className=\"text-xs mt-1\">{subMessage}</p>}\r\n </div>\r\n )\r\n}\r\n","\"use client\"\n\nimport { useState, type ReactNode } from \"react\"\nimport { Check } from \"lucide-react\"\nimport { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger } from \"@/components/ui/dropdown-menu\"\nimport { cn } from \"@/lib/utils\"\n\n// Edit one property where it is shown (R055). Clicks and keys are stopped so a card or row underneath\n// doesn't open or drag. Keyboard: the menu takes arrows + Enter, Esc cancels; the date takes Enter / Esc.\n\nconst stop = (e: React.SyntheticEvent) => e.stopPropagation()\nconst trigger = \"inline-flex min-w-0 items-center gap-1 rounded-sm px-1 -mx-1 text-left outline-hidden hover:bg-surface2 focus-visible:ring-2 focus-visible:ring-accent/60\"\n\nexport interface InlineOption { value: string; label: string; node?: ReactNode }\n\n/** The shown value opens a menu of options; picking one calls onChange (the menu closes). */\nexport function InlineSelect({ label, value, options, onChange, children, className }: {\n /** What is being edited, for screen readers (\"Status of T001\") */\n label: string\n value: string\n options: InlineOption[]\n onChange: (value: string) => void\n children: ReactNode\n className?: string\n}) {\n return (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <button type=\"button\" aria-label={label} draggable={false} onClick={stop} onKeyDown={stop} onPointerDown={stop} className={cn(trigger, className)}>\n {children}\n </button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"start\" className=\"max-h-72 w-48 overflow-y-auto\" onClick={stop} onKeyDown={stop}>\n {options.map((o) => (\n <DropdownMenuItem key={o.value} onSelect={() => { if (o.value !== value) onChange(o.value) }}>\n {o.node ?? o.label}\n {o.value === value && <Check className=\"ml-auto size-3.5 text-muted\" aria-hidden />}\n </DropdownMenuItem>\n ))}\n </DropdownMenuContent>\n </DropdownMenu>\n )\n}\n\n/** The shown date turns into a date input: Enter saves, Esc cancels, leaving the field saves a change. */\nexport function InlineDate({ label, value, onChange, children, className }: {\n label: string\n value: string | null\n onChange: (value: string | null) => void\n children: ReactNode\n className?: string\n}) {\n const [editing, setEditing] = useState(false)\n const [draft, setDraft] = useState(value ?? \"\")\n const commit = () => {\n setEditing(false)\n if ((draft || null) !== value) onChange(draft || null)\n }\n if (!editing) {\n return (\n <button\n type=\"button\"\n aria-label={label}\n draggable={false}\n onClick={(e) => { stop(e); setDraft(value ?? \"\"); setEditing(true) }}\n onKeyDown={stop}\n className={cn(trigger, className)}\n >\n {children}\n </button>\n )\n }\n return (\n <input\n type=\"date\"\n autoFocus\n aria-label={label}\n value={draft}\n onChange={(e) => setDraft(e.target.value)}\n onClick={stop}\n onPointerDown={stop}\n onKeyDown={(e) => {\n stop(e)\n if (e.key === \"Enter\") { e.preventDefault(); commit() }\n if (e.key === \"Escape\") { e.preventDefault(); setEditing(false) }\n }}\n onBlur={commit}\n className=\"h-6 rounded-sm border border-accent/60 bg-bg px-1 font-mono text-[11px] text-txt scheme-light outline-hidden dark:scheme-dark\"\n />\n )\n}\n","import { Bot, User } from \"lucide-react\"\nimport { cn } from \"@/lib/utils\"\nimport { ownerKind, ownerLabel } from \"@/lib/owner\"\n\n/** Who is in charge: a person icon for \"human\", a bot + agent name for \"ai:<agent>\". Nothing when unset. */\nexport function OwnerChip({ owner, className }: { owner: string | null; className?: string }) {\n const kind = ownerKind(owner)\n if (kind === \"none\") return null\n const Icon = kind === \"ai\" ? Bot : User\n return (\n <span title={`Owner: ${ownerLabel(owner)}`} className={cn(\"inline-flex items-center gap-1 text-[11px] text-muted\", className)}>\n <Icon className={cn(\"size-3.5 shrink-0\", kind === \"ai\" && \"text-accent\")} aria-hidden />\n {ownerLabel(owner)}\n </span>\n )\n}\n","// Who is in charge of a task / epic (R055): `**Owner:** human` or `**Owner:** ai:<agent>`.\n// Pure (no React, no fs). Self-check: `node src/lib/owner.check.mts`.\n\nexport type OwnerKind = \"human\" | \"ai\" | \"none\"\n\nconst KNOWN_AGENTS = [\"claude\", \"cursor\", \"codex\", \"copilot\", \"gemini\", \"windsurf\", \"cline\", \"opencode\"]\n\n/** \"human\" | \"ai:<agent>\" (lowercase), or null for empty / \"—\" / anything else. A bare \"ai\" becomes \"ai:agent\". */\nexport function parseOwner(raw: string | null | undefined): string | null {\n const v = (raw ?? \"\").trim().toLowerCase()\n if (v === \"human\") return \"human\"\n const m = v.match(/^ai(?::\\s*([a-z0-9._-]+))?$/)\n return m ? `ai:${m[1] ?? \"agent\"}` : null\n}\n\nexport function ownerKind(owner: string | null): OwnerKind {\n return owner === \"human\" ? \"human\" : owner?.startsWith(\"ai:\") ? \"ai\" : \"none\"\n}\n\n/** \"Human\", \"claude\", \"No owner\". */\nexport function ownerLabel(owner: string | null): string {\n return owner === \"human\" ? \"Human\" : owner?.startsWith(\"ai:\") ? owner.slice(3) : \"No owner\"\n}\n\n/** Agent name from an MCP client's User-Agent (\"claude-code/2.1\" → \"claude\"); \"agent\" when unknown. */\nexport function agentFromUserAgent(ua: string | null | undefined): string {\n const s = (ua ?? \"\").toLowerCase()\n return KNOWN_AGENTS.find((a) => s.includes(a)) ?? \"agent\"\n}\n"],"names":["EmptyState","icon","message","subMessage","bordered","className","stop","e","stopPropagation","trigger","InlineSelect","label","value","options","onChange","children","asChild","type","draggable","onClick","onKeyDown","onPointerDown","align","map","o","onSelect","node","InlineDate","editing","setEditing","draft","setDraft","commit","autoFocus","target","key","preventDefault","onBlur","KNOWN_AGENTS","parseOwner","raw","v","trim","toLowerCase","m","match","ownerKind","owner","startsWith","ownerLabel","slice","agentFromUserAgent","ua","s","find","a","includes"],"mappings":"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","ignoreList":[0,1,2,3,4,5,6,8]}
@@ -0,0 +1,4 @@
1
+ module.exports=[768450,a=>{"use strict";var b=a.i(256857);let c={name:"corner-up-left",size:24,node:[["path",{d:"M20 20v-7a4 4 0 0 0-4-4H4",key:"1nkjon"}],["path",{d:"M9 14 4 9l5-5",key:"102s5s"}]]};c.node;let d=(0,b.default)(c);a.s(["CornerUpLeft",0,d],768450)},536236,a=>{"use strict";var b=a.i(662145),c=a.i(174897),d=a.i(368114),e=a.i(757061),f=a.i(149350),g=a.i(173628),h=a.i(218451),i=a.i(822404),j=a.i(425404),k=a.i(768450),l=a.i(270923),m=a.i(441852),n=a.i(763747),o=a.i(661661),p=a.i(28386),q=a.i(335732),r=a.i(443108),s=a.i(147758),t=a.i(192698),u=a.i(508113),v=a.i(319264),w=a.i(452696),x=a.i(618940),y=a.i(890728),z=a.i(258701),A=a.i(815122),B=a.i(544394),C=a.i(685698),D=a.i(107742),E=a.i(542920);let F={todo:["in-progress","paused"],"in-progress":["done","review","blocked","paused","todo"],review:[],blocked:["in-progress","cancelled"],paused:["in-progress","todo"],done:["todo"],cancelled:["todo"]},G={"in-progress":"start",review:"to review",done:"done",blocked:"blocked",paused:"pause",todo:"backlog",cancelled:"cancel"},H="w-full rounded-md border border-border bg-bg px-2.5 py-1.5 text-sm text-txt focus:border-accent/60 focus:outline-hidden";function I({task:a,rootParam:e,onDone:f}){let[g]=(0,c.useState)(a),[h,i]=(0,c.useState)(a.title),[j,k]=(0,c.useState)("—"===a.size?"":a.size),[l,m]=(0,c.useState)("—"===a.phase?"":a.phase),[n,o]=(0,c.useState)("—"===a.dependsOn?"":a.dependsOn),[p,q]=(0,c.useState)(a.due??""),[r,s]=(0,c.useState)(!1),[t,u]=(0,c.useState)(null),v=a=>"—"===a.trim()?"":a.trim();async function w(){let b={};if(h.trim()&&h.trim()!==g.title&&(b.title=h),j.trim()!==v(g.size)&&(b.size=j),l.trim()!==v(g.phase)&&(b.phase=l),n.trim()!==v(g.dependsOn)&&(b.dependsOn=n),(p||null)!==g.due&&(b.due=p||null),0===Object.keys(b).length)return f();s(!0),u(null);try{await (0,z.updateTask)(a.id,b,e),f()}catch(a){u(a.message),s(!1)}}return(0,b.jsxs)("form",{onSubmit:a=>{a.preventDefault(),w()},onKeyDown:a=>{"Escape"===a.key&&(a.stopPropagation(),f())},className:"flex flex-col gap-3 px-5 py-4 border-b border-border shrink-0 bg-surface2/40",children:[(0,b.jsxs)("label",{className:"flex flex-col gap-1 text-xs text-muted",children:["Title",(0,b.jsx)("input",{autoFocus:!0,value:h,onChange:a=>i(a.target.value),className:H})]}),(0,b.jsxs)("div",{className:"grid grid-cols-2 gap-3",children:[(0,b.jsxs)("label",{className:"flex flex-col gap-1 text-xs text-muted",children:["Size",(0,b.jsx)("input",{value:j,onChange:a=>k(a.target.value),placeholder:"S / M / L",className:H})]}),(0,b.jsxs)("label",{className:"flex flex-col gap-1 text-xs text-muted",children:["Due",(0,b.jsx)("input",{type:"date",value:p,onChange:a=>q(a.target.value),className:(0,d.cn)(H,"scheme-light dark:scheme-dark")})]})]}),(0,b.jsxs)("label",{className:"flex flex-col gap-1 text-xs text-muted",children:["Epic / phase",(0,b.jsx)("input",{value:l,onChange:a=>m(a.target.value),placeholder:"R054 — Item actions",className:H})]}),(0,b.jsxs)("label",{className:"flex flex-col gap-1 text-xs text-muted",children:["Depends on",(0,b.jsx)("input",{value:n,onChange:a=>o(a.target.value),placeholder:"T001, T002",className:(0,d.cn)(H,"font-mono")})]}),t&&(0,b.jsx)("p",{role:"alert",className:"text-xs text-danger",children:t}),(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)("button",{type:"submit",disabled:r,className:"text-xs px-2.5 py-1 rounded-sm bg-accent text-accent-fg transition-[filter] hover:brightness-110 disabled:opacity-40",children:"Save"}),(0,b.jsx)("button",{type:"button",onClick:f,disabled:r,className:"text-xs text-muted hover:text-txt",children:"Cancel"})]})]})}function J({taskId:a,onDone:d}){let{rootParam:e}=(0,B.useApp)(),[f,g]=(0,c.useState)(!1),[h,i]=(0,c.useState)(""),[l,m]=(0,c.useState)(!1),[n,o]=(0,c.useState)(null);async function p(b){m(!0),o(null);try{let c=await fetch(`/api/tasks/review${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({id:a,action:b,note:h})});if(!c.ok)throw Error((await c.json().catch(()=>null))?.error??`Request failed (${c.status})`);d()}catch(a){o(a.message),m(!1)}}return(0,b.jsxs)("div",{className:"flex flex-col gap-2 px-5 py-3 border-b border-border shrink-0 bg-accent/5",children:[(0,b.jsx)("p",{className:"text-xs text-muted",children:"Waiting for your review. Approving moves it to done; sending it back returns it to the queue with your note."}),f?(0,b.jsxs)("div",{className:"flex flex-col gap-2 animate-fade-in",children:[(0,b.jsx)("textarea",{autoFocus:!0,value:h,onChange:a=>i(a.target.value),rows:3,placeholder:"What needs to change? The agent reads this first.","aria-label":"Send back note",className:"w-full resize-none rounded-md border border-border bg-bg px-2.5 py-2 text-sm text-txt placeholder:text-muted focus:border-accent/60 focus:outline-hidden"}),(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsxs)("button",{onClick:()=>p("send-back"),disabled:l||!h.trim(),className:"inline-flex items-center gap-1.5 text-xs px-2.5 py-1 rounded-sm bg-amber/15 border border-amber/40 text-amber transition-colors hover:bg-amber/25 disabled:opacity-40",children:[(0,b.jsx)(k.CornerUpLeft,{className:"size-3.5"})," Send back"]}),(0,b.jsx)("button",{onClick:()=>{g(!1),i("")},disabled:l,className:"text-xs text-muted hover:text-txt",children:"Cancel"})]})]}):(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsxs)("button",{onClick:()=>p("approve"),disabled:l,className:"inline-flex items-center gap-1.5 text-xs px-2.5 py-1 rounded-sm bg-teal/15 border border-teal/40 text-teal transition-colors hover:bg-teal/25 disabled:opacity-40",children:[(0,b.jsx)(j.Check,{className:"size-3.5"})," Approve"]}),(0,b.jsxs)("button",{onClick:()=>g(!0),disabled:l,className:"inline-flex items-center gap-1.5 text-xs px-2.5 py-1 rounded-sm bg-surface2 border border-border text-muted transition-colors hover:text-txt hover:border-border2",children:[(0,b.jsx)(k.CornerUpLeft,{className:"size-3.5"})," Send back…"]})]}),n&&(0,b.jsx)("p",{role:"alert",className:"text-xs text-danger",children:n})]})}function K({entries:a}){return a.length?(0,b.jsxs)("div",{className:"flex flex-col gap-2 px-5 py-3 border-b border-border shrink-0",children:[(0,b.jsx)("p",{className:"font-mono text-[10px] uppercase tracking-widest text-muted",children:"Review history"}),(0,b.jsx)("ul",{className:"flex flex-col gap-2",children:[...a].reverse().map((a,c)=>(0,b.jsxs)("li",{className:"flex flex-col gap-0.5",children:[(0,b.jsxs)("span",{className:"flex items-center gap-2 text-xs",children:[(0,b.jsx)("span",{className:(0,d.cn)("font-medium","approved"===a.outcome?"text-teal":"text-amber"),children:"approved"===a.outcome?"Approved":"Changes requested"}),(0,b.jsx)("span",{className:"font-mono text-[10px] text-muted",children:a.at.replace("T"," ").replace(/:\d\dZ$/,"Z")})]}),a.note&&(0,b.jsx)("p",{className:"whitespace-pre-wrap text-xs text-muted",children:a.note})]},c))})]}):null}a.s(["TaskDetailPanel",0,function({task:a,onClose:j,onMove:k}){var H;let L,[M,N]=(0,c.useState)(a);a&&a!==M&&N(a);let O=M&&F[M.status]||[],{chats:P,showAbout:Q}=(0,C.useChats)(),{rootParam:R}=(0,B.useApp)(),S=M?(0,D.chatFor)(P,{kind:"task",id:M.id}):void 0,[T,U]=(0,c.useState)(null),V=!!M&&T===M.id,[W,X]=(0,c.useState)(null),[Y,Z]=(0,c.useState)(!1),$=(0,r.useStatusDefs)(),_=()=>{M&&(j(),Q({kind:"task",id:M.id}))};async function aa(){if(M){X(null);try{await (0,z.deleteTaskWithUndo)(M,R),j()}catch(a){X(a.message)}}}return(0,y.useItemCommands)(a&&M&&!V?`${M.id} \xb7 ${M.title}`:null,M?[{action:"edit",label:"Edit",run:()=>U(M.id)},{action:"status",label:"Change status…",run:()=>Z(!0)},{action:"chat",label:"Chat about task",run:_},{action:"remove",label:"Delete",run:()=>{aa()}}]:[]),(0,b.jsx)(e.Sheet,{open:!!a,onOpenChange:a=>{a||j()},children:(0,b.jsx)(e.SheetContent,{side:"right","aria-describedby":void 0,className:"p-0 gap-0 sm:max-w-[420px] border-border flex flex-col",children:M&&(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(t.ItemPanelHeader,{kicker:(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("span",{children:M.id}),(0,b.jsx)("span",{children:"· task"}),(0,b.jsx)(A.AgentMark,{attach:{kind:"task",id:M.id}})]}),title:(0,b.jsx)(e.SheetTitle,{className:"text-base font-semibold leading-snug text-txt",children:M.title}),menu:(0,b.jsxs)(q.DropdownMenu,{open:Y,onOpenChange:Z,children:[(0,b.jsx)(q.DropdownMenuTrigger,{asChild:!0,children:(0,b.jsx)("button",{type:"button","aria-label":`Actions for ${M.id}`,className:"ml-auto grid size-6 place-items-center rounded-md text-muted hover:bg-surface2 hover:text-txt",children:(0,b.jsx)(n.MoreHorizontal,{className:"size-4"})})}),(0,b.jsxs)(q.DropdownMenuContent,{align:"end",className:"w-44",children:[(0,b.jsxs)(q.DropdownMenuItem,{onSelect:()=>U(M.id),children:[(0,b.jsx)(o.Pencil,{})," Edit",(0,b.jsx)(q.DropdownMenuShortcut,{children:(0,y.itemKeyLabel)("edit")})]}),(0,b.jsxs)(q.DropdownMenuSub,{children:[(0,b.jsxs)(q.DropdownMenuSubTrigger,{children:[(0,b.jsx)(g.StatusIcon,{status:(0,s.displayStatus)(M)})," Status",(0,b.jsx)(q.DropdownMenuShortcut,{children:(0,y.itemKeyLabel)("status")})]}),(0,b.jsx)(q.DropdownMenuSubContent,{children:$.map(a=>(0,b.jsxs)(q.DropdownMenuItem,{disabled:a.id===(0,s.displayStatus)(M),onSelect:()=>k(M.id,a.id),children:[(0,b.jsx)(g.StatusIcon,{status:a.id})," ",a.label]},a.id))})]}),(0,b.jsxs)(q.DropdownMenuItem,{onSelect:_,children:[(0,b.jsx)(m.MessageSquare,{})," Chat about task",(0,b.jsx)(q.DropdownMenuShortcut,{children:(0,y.itemKeyLabel)("chat")})]}),(0,b.jsx)(q.DropdownMenuSeparator,{}),(0,b.jsxs)(q.DropdownMenuItem,{onSelect:aa,className:"text-danger focus:text-danger",children:[(0,b.jsx)(p.Trash2,{})," Delete",(0,b.jsx)(q.DropdownMenuShortcut,{children:(0,y.itemKeyLabel)("remove")})]})]})]}),properties:(L=(H=M).phase&&"—"!==H.phase?(0,v.epicOf)(H.phase):null,[{label:"Status",value:(0,b.jsx)(u.TaskStatusField,{task:H,chip:!0})},{label:"Owner",value:(0,b.jsx)(u.TaskOwnerField,{task:H})},{label:"Due",value:(0,b.jsx)(u.TaskDueField,{task:H,children:H.due?(0,b.jsx)(x.DueChip,{due:H.due,state:(0,w.dueState)(H.due,"done"===H.status?"done":"planned",(0,w.localToday)())}):(0,b.jsx)("span",{className:"text-muted",children:"—"})})},{label:"Size",value:(0,b.jsx)(u.TaskSizeField,{task:H})},{label:"Epic",value:L&&(0,b.jsxs)("span",{className:"flex min-w-0 items-center gap-1.5",children:[L.id&&(0,b.jsx)("span",{className:"font-mono text-[11px] text-muted",children:L.id}),(0,b.jsx)("span",{className:"truncate",children:L.title})]})}])}),W&&(0,b.jsx)("p",{role:"alert",className:"px-5 py-2 text-xs text-danger border-b border-border",children:W}),V&&(0,b.jsx)(I,{task:M,rootParam:R,onDone:()=>U(null)},`edit-${M.id}`),(0,b.jsxs)("div",{className:"flex flex-wrap items-center gap-2 px-5 py-3 border-b border-border shrink-0",children:[O.map(a=>(0,b.jsxs)("button",{onClick:()=>{k(M.id,a),j()},className:"inline-flex items-center gap-1.5 text-xs px-2.5 py-1 rounded-sm bg-surface2 border border-border text-muted hover:text-txt hover:border-border2 transition-colors",children:[(0,b.jsx)(g.StatusIcon,{status:a,className:"size-3"})," ",G[a]||a]},a)),(0,b.jsxs)("button",{onClick:()=>{j(),Q({kind:"task",id:M.id})},className:"ml-auto inline-flex items-center gap-1.5 text-xs px-2.5 py-1 rounded-sm bg-accent text-accent-fg transition-[filter] hover:brightness-110",children:[(0,b.jsx)(m.MessageSquare,{className:"size-3.5"})," ",S?"Open chat":"Chat about task"]})]}),"review"===M.status&&(0,b.jsx)(J,{taskId:M.id,onDone:j},`review-${M.id}`),(0,b.jsxs)("div",{className:"flex-1 overflow-y-auto",children:[(0,b.jsx)("div",{className:"px-5 py-4",children:M.raw?(0,b.jsx)(f.MarkdownRenderer,{content:function(a){let b=a.split("\n"),c=b.findIndex(a=>a.startsWith("# "));for(c=c<0?0:c+1;c<b.length&&(""===b[c].trim()||/^\*\*[^*]+:\*\*/.test(b[c]));)c++;return b.slice(c).join("\n")}(M.raw)}):(0,b.jsx)("p",{className:"text-sm text-muted",children:"No content available."})}),(0,b.jsxs)("section",{"aria-label":"Activity",className:"border-t border-border",children:[M.manualTests&&(0,b.jsxs)(i.default,{href:`/manual-tests#${M.id}`,onClick:j,className:"group flex items-center gap-2 px-5 py-2.5 border-b border-border shrink-0 text-xs text-muted hover:bg-surface2 hover:text-txt transition-colors",children:[(0,b.jsx)(l.FlaskConical,{className:"size-3.5"}),(0,b.jsxs)("span",{className:(0,d.cn)("font-mono",M.manualTests.done===M.manualTests.total&&"text-teal"),children:[M.manualTests.done,"/",M.manualTests.total]}),"manual tests ticked",(0,b.jsx)("span",{className:"ml-auto text-accent opacity-0 transition-opacity group-hover:opacity-100",children:"Open checklist →"})]}),(0,b.jsx)(K,{entries:(0,E.reviewHistory)(M.raw??"")}),(0,b.jsx)(h.TaskSessions,{taskId:M.id,onNavigate:j},M.id)]})]})]})})})}])},508113,a=>{"use strict";var b=a.i(662145),c=a.i(544394),d=a.i(787714),e=a.i(813722),f=a.i(173628),g=a.i(443108),h=a.i(147758),i=a.i(319264),j=a.i(853775);let k=["XS","S","M","L","XL"],l=(0,b.jsx)("span",{className:"text-muted",children:"—"});a.s(["TaskDueField",0,function({task:a,children:e}){let{updateTaskFields:f}=(0,c.useApp)();return(0,b.jsx)(d.InlineDate,{label:`Due date of ${a.id}`,value:a.due,onChange:b=>f(a.id,{due:b}),children:e??(a.due?(0,b.jsx)("span",{className:"font-mono text-xs",children:a.due}):l)})},"TaskOwnerField",0,function({task:a,children:f}){let{updateTaskFields:g,board:h}=(0,c.useApp)(),i=[...new Set(["ai:claude",...Object.values(h??{}).flat().map(a=>a.owner).filter(a=>!!a?.startsWith("ai:"))])].sort(),k=[{value:"human",label:"Human",node:(0,b.jsx)(e.OwnerChip,{owner:"human",className:"text-xs"})},...i.map(a=>({value:a,label:(0,j.ownerLabel)(a),node:(0,b.jsx)(e.OwnerChip,{owner:a,className:"text-xs"})})),{value:"",label:"No owner",node:(0,b.jsx)("span",{className:"text-muted",children:"No owner"})}];return(0,b.jsx)(d.InlineSelect,{label:`Owner of ${a.id}`,value:a.owner??"",options:k,onChange:b=>g(a.id,{owner:b||null}),children:f??(a.owner?(0,b.jsx)(e.OwnerChip,{owner:a.owner,className:"text-xs"}):l)})},"TaskSizeField",0,function({task:a,children:e}){let{updateTaskFields:f}=(0,c.useApp)(),g=(0,i.sizeOf)(a),h=[...k.map(a=>({value:a,label:a,node:(0,b.jsx)("span",{className:"font-mono",children:a})})),{value:"",label:"No size",node:(0,b.jsx)("span",{className:"text-muted",children:"No size"})}];return(0,b.jsx)(d.InlineSelect,{label:`Size of ${a.id}`,value:g??"",options:h,onChange:b=>f(a.id,{size:b||"—"}),children:e??(g?(0,b.jsx)("span",{className:"font-mono text-xs",children:g}):l)})},"TaskStatusField",0,function({task:a,chip:e=!1}){let{moveTask:i}=(0,c.useApp)(),j=(0,g.useStatusDefs)(),k=(0,h.displayStatus)(a),l=j.map(a=>({value:a.id,label:a.label,node:(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(f.StatusIcon,{status:a.id}),a.label]})}));return(0,b.jsx)(d.InlineSelect,{label:`Status of ${a.id}`,value:k,options:l,onChange:b=>i(a.id,b),children:e?(0,b.jsx)(f.StatusChip,{status:k}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(f.StatusIcon,{status:k}),(0,b.jsx)("span",{className:"truncate text-xs",children:j.find(a=>a.id===k)?.label??k})]})})}])},218451,a=>{"use strict";var b=a.i(662145),c=a.i(174897),d=a.i(913975),e=a.i(795667),f=a.i(892678),g=a.i(544394),h=a.i(578520);a.s(["TaskSessions",0,function({taskId:a,onNavigate:i}){let{rootParam:j}=(0,g.useApp)(),k=(0,d.useRouter)(),[l,m]=(0,c.useState)(null);return(0,c.useEffect)(()=>{let b=j?`${j}&`:"?";fetch(`/api/sessions${b}taskId=${encodeURIComponent(a)}`).then(a=>a.json()).then(a=>m(Array.isArray(a)?a:[])).catch(()=>m([]))},[j,a]),(0,b.jsxs)("div",{className:"px-5 py-3 border-b border-border shrink-0",children:[(0,b.jsx)("p",{className:"mb-2 text-xs font-mono uppercase tracking-wide text-muted",children:"Sessions"}),null===l?null:0===l.length?(0,b.jsx)("p",{className:"text-xs text-muted",children:"No recorded sessions"}):(0,b.jsx)("div",{className:"flex max-h-40 flex-col gap-1 overflow-y-auto",children:l.map(a=>(0,b.jsxs)("button",{onClick:()=>{i(),k.push(`/activity?session=${encodeURIComponent(a.id)}`)},className:"flex items-center gap-2 rounded-sm px-2 py-1 text-left text-xs hover:bg-surface2",children:["ai"===a.actor?(0,b.jsx)(e.Bot,{"aria-hidden":!0,className:"size-3.5 shrink-0 text-muted"}):(0,b.jsx)(f.User,{"aria-hidden":!0,className:"size-3.5 shrink-0 text-muted"}),(0,b.jsx)("span",{className:"sr-only",children:"ai"===a.actor?"Agent session":"Human session"}),(0,b.jsx)("span",{className:"shrink-0 font-mono text-muted",children:(0,h.timeAgo)(a.start)}),(0,b.jsx)("span",{className:"truncate text-txt",children:a.headline})]},a.id))})]})}])},258701,a=>{"use strict";var b=a.i(269769);async function c(a,b){let c=await fetch(a,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(b)}),d=await c.json().catch(()=>null);if(!c.ok)throw Error(d?.error??`Request failed (${c.status})`);return d}async function d(a,d){let{task:e,links:f}=await c(`/api/tasks/delete${d}`,{id:a.id});(0,b.undoToast)(`Deleted ${e.id}`,async()=>{await c(`/api/tasks/restore${d}`,{file:e.file,raw:e.raw,links:f})})}a.s(["deleteTaskWithUndo",0,d,"updateTask",0,(a,b,d)=>c(`/api/tasks/update${d}`,{id:a,patch:b}).then(a=>a.task)])},319264,a=>{"use strict";let b=["status","epic","size","due","deps","tests","agent","owner"],c=["board","table","epic","timeline"],d={board:"Board",table:"Table",epic:"By epic",timeline:"Timeline"};function e(a){let c={kind:a,filters:[],sorts:[],group:"epic",subGroup:"none",q:"",properties:[...b],scale:"active"};return"board"===a?{...c,group:"none",subGroup:"epic",properties:["epic","size","deps","tests","agent","owner"]}:"table"===a?{...c,sorts:[{prop:"status",dir:"asc"},{prop:"id",dir:"asc"}]}:c}let f=c.map(a=>({...e(a),id:a,name:d[a]})),g=["in-progress","review","todo","blocked","paused","done","cancelled"],h={"in-progress":"In progress",review:"Review",todo:"Todo",blocked:"Blocked",paused:"Paused",done:"Done",cancelled:"Cancelled"},i=["XS","S","M","L","XL"],j=(a,b)=>a.localeCompare(b,void 0,{numeric:!0}),k=a=>"done"!==a.status&&"cancelled"!==a.status;function l(a){return[...new Set((a.dependsOn.match(/\bT\d+\b/gi)??[]).map(a=>a.toUpperCase()))]}function m(a){let b=a.trim().match(/^(R\d+)\b\s*(?:[—–:-]\s*)?(.*)$/i);return b?{id:b[1].toUpperCase(),title:b[2].trim()}:{id:null,title:a.trim()}}function n(a){let b=a.size.trim().match(/^(XS|XL|S|M|L)\b/i);return b?b[1].toUpperCase():null}function o(a,b){return"todo"===a.status&&l(a).every(a=>b.get(a)?.status==="done")}let p=["status","epic","size","due","deps","tests","agent","ready","owner"],q=["is","is-not","before","after","is-set","not-set"],r=["status","id","epic","size","due","title"],s=["status","epic","size","owner","none"],t=["epic","size","none"],u=["active","day","week"],v=(a,b,c)=>null!==b&&a.includes(b)?b:c,w=a=>a.map(a=>("desc"===a.dir?"-":"")+a.prop).join(",");a.s(["DEFAULT_VIEWS",0,f,"applyView",0,function(a,b,c){let d=new Map(a.map(a=>[a.id,a])),e=b.filters.some(a=>"status"===a.prop&&"is"===a.op&&a.value.includes("cancelled")),f=b.q.trim().toLowerCase();return a.filter(a=>e||"cancelled"!==a.status).filter(a=>!f||a.id.toLowerCase().includes(f)||a.title.toLowerCase().includes(f)).filter(a=>b.filters.every(b=>(function(a,b,c,d){let e=a=>"is"===b.op?b.value.includes(a):"is-not"!==b.op||!b.value.includes(a),f=a=>"is-set"===b.op?a:"not-set"!==b.op||!a;switch(b.prop){case"status":return e(a.customStatus??a.status);case"epic":return e(m(a.phase).id??"none");case"size":return e(n(a)??"none");case"due":if("before"===b.op)return!!a.due&&!!b.value[0]&&a.due<b.value[0];if("after"===b.op)return!!a.due&&!!b.value[0]&&a.due>b.value[0];return f(!!a.due);case"deps":return f(l(a).length>0);case"tests":return f(null!==a.manualTests);case"agent":return f(c.agentTasks.has(a.id));case"ready":return f(o(a,d));case"owner":return e("human"===a.owner?"human":a.owner?.startsWith("ai:")?"ai":"none")}})(a,b,c,d))).sort((a,c)=>{for(let d of b.sorts){let b=function(a,b,c){switch(c){case"status":return g.indexOf(a.status)-g.indexOf(b.status);case"id":return j(a.id,b.id);case"title":return a.title.localeCompare(b.title);case"epic":{let c=m(a.phase).id,d=m(b.phase).id;return c===d?0:null===c?1:null===d?-1:j(c,d)}case"size":{let c=i.indexOf(n(a)??""),d=i.indexOf(n(b)??"");return c===d?0:c<0?1:d<0?-1:c-d}case"due":return a.due===b.due?0:null===a.due?1:null===b.due?-1:a.due.localeCompare(b.due)}}(a,c,d.prop);if(b)return"desc"!==d.dir||function(a,b,c){let d=a=>"due"===c?a.due:"epic"===c?m(a.phase).id:"size"===c?i.includes(n(a)??"")?"x":null:"x";return null===d(a)!=(null===d(b))}(a,c,d.prop)?b:-b}return j(a.id,c.id)})},"depOutline",0,function(a){let b=new Set(a.map(a=>a.id)),c=new Map;for(let d of a){let a=l(d).find(a=>a!==d.id&&b.has(a));a&&c.set(d.id,a)}let d=new Map;for(let b of a){let a=c.get(b.id);a&&d.set(a,[...d.get(a)??[],b])}let e=[],f=new Set,g=(a,b,c)=>{if(!f.has(a.id))for(let h of(f.add(a.id),e.push({task:a,depth:Math.min(b,4),alsoAfter:l(a).filter(b=>b!==c&&b!==a.id)}),d.get(a.id)??[]))g(h,b+1,a.id)};for(let b of a)c.has(b.id)||g(b,0,null);for(let b of a)g(b,0,null);return e},"epicOf",0,m,"foldAxis",0,function(a,b){let c=a.map(a=>{let b=Math.max((a.endMs-a.startMs)*.05,6e4);return{startMs:a.startMs-b,endMs:a.endMs+b}}).sort((a,b)=>a.startMs-b.startMs),d=[];for(let a of c){let c=d[d.length-1];c&&a.startMs-c.endMs<b?c.endMs=Math.max(c.endMs,a.endMs):d.push({...a})}return d},"fromParams",0,function(a){let d=v(c,a.get("view"),"board"),f=e(d),g=a.get("s"),h=a.get("f"),i=a.get("p");return{kind:d,group:v(s,a.get("g"),f.group),subGroup:v(t,a.get("sg"),f.subGroup),sorts:null===g?f.sorts:g.split(",").filter(Boolean).flatMap(a=>{let b=a.startsWith("-"),c=b?a.slice(1):a;return r.includes(c)?[{prop:c,dir:b?"desc":"asc"}]:[]}),filters:h?h.split(";").flatMap(a=>{let[b,c,...d]=a.split(":");if(!p.includes(b)||!q.includes(c))return[];let e=d.join(":"),f=[];try{f=d.length?e.split("|").map(decodeURIComponent):[]}catch{return[]}return[{prop:b,op:c,value:f}]}):[],q:a.get("q")??"",properties:null===i?f.properties:[...new Set(i.split(",").filter(a=>b.includes(a)))],scale:v(u,a.get("sc"),f.scale)}},"groupTasks",0,function(a,b,c){if(!a.length)return[];if("none"===b)return[{key:"all",label:"All tasks",epicId:null,tasks:a}];let d=new Map,e=a=>"status"===b?a.customStatus??a.status:"size"===b?n(a)??"none":"owner"===b?a.owner??"none":m(a.phase).id??"none";for(let b of a){let a=e(b),c=d.get(a);c?c.push(b):d.set(a,[b])}let f=(a,b,c=null)=>({key:a,label:b,epicId:c,tasks:d.get(a)??[]});if("status"===b)return c?c.filter(a=>d.has(a.id)).map(a=>f(a.id,a.label)):g.filter(a=>d.has(a)).map(a=>f(a,h[a]));if("size"===b)return[...i,"none"].filter(a=>d.has(a)).map(a=>f(a,"none"===a?"No size":a));if("owner"===b)return["human",...[...d.keys()].filter(a=>a.startsWith("ai:")).sort(),"none"].filter(a=>d.has(a)).map(a=>f(a,"human"===a?"Human":"none"===a?"No owner":`${a.slice(3)} (AI)`));let l=a=>(d.get(a)??[]).filter(k).map(a=>a.id).sort(j)[0]??null,o=[...d.keys()].filter(a=>"none"!==a).sort((a,b)=>{let c=l(a),d=l(b);return c&&d?j(c,d)||j(a,b):c||d?c?-1:1:j(b,a)}).map(a=>{let b=(d.get(a)??[]).map(a=>m(a.phase).title).find(Boolean);return f(a,b||a,a)});return d.has("none")&&o.push(f("none","No epic")),o},"isDirty",0,function(a,b){let c=a=>JSON.stringify([a.kind,a.filters,a.sorts,a.group,a.subGroup,[...a.properties].sort(),a.scale]);return c(a)!==c(b)},"isReady",0,o,"sizeOf",0,n,"timelineBars",0,function(a,b,c){let d=new Map;for(let a of b){if("task_updated"!==a.type||!a.taskId)continue;let b=Date.parse(a.timestamp);if(Number.isNaN(b))continue;let c=d.get(a.taskId)??[];c.push({ms:b,status:a.taskStatus}),d.set(a.taskId,c)}let e=[];for(let b of a){let a=d.get(b.id)?.sort((a,b)=>a.ms-b.ms);if(!a?.length)continue;let f=(a.find(a=>"in-progress"===a.status)??a[0]).ms,g=a[a.length-1].ms,h=a.filter(a=>"done"===a.status).pop()?.ms,i="done"!==b.status&&"cancelled"!==b.status,j="done"===b.status?h??g:i?c:g;e.push({taskId:b.id,epicId:m(b.phase).id,startMs:f,endMs:Math.max(j,f),status:b.status,open:i})}return e},"toParams",0,function(a){let b=e(a.kind),c=new URLSearchParams;return"board"!==a.kind&&c.set("view",a.kind),a.group!==b.group&&c.set("g",a.group),a.subGroup!==b.subGroup&&c.set("sg",a.subGroup),w(a.sorts)!==w(b.sorts)&&c.set("s",w(a.sorts)),a.filters.length&&c.set("f",a.filters.map(a=>[a.prop,a.op,...a.value.length?[a.value.map(encodeURIComponent).join("|")]:[]].join(":")).join(";")),a.q&&c.set("q",a.q),a.properties.join(",")!==b.properties.join(",")&&c.set("p",a.properties.join(",")),a.scale!==b.scale&&c.set("sc",a.scale),c}])},542920,a=>{"use strict";let b=/^###\s+(\S+)\s+—\s+(approved|changes requested)\s*$/;function c(a){let c=a.split("\n"),d=function(a){let b,c=(b=!1,a.map(a=>/^\s*```/.test(a)?(b=!b,!0):b)),d=a.findIndex((a,b)=>!c[b]&&"## Review"===a.trim());if(d<0)return null;let e=a.findIndex((a,b)=>b>d&&!c[b]&&/^##\s/.test(a));return[d,e<0?a.length:e]}(c);if(!d)return[];let e=[];for(let a of c.slice(d[0]+1,d[1])){let c=a.match(b);if(c)e.push({at:c[1],outcome:c[2],note:""});else if(e.length){let b=e[e.length-1];b.note=b.note?`${b.note}
2
+ ${a}`:a}}return e.map(a=>({...a,note:a.note.trim()}))}a.s(["latestReview",0,function(a){let b=c(a);return b[b.length-1]??null},"reviewHistory",0,c])}];
3
+
4
+ //# sourceMappingURL=_1ncdakv._.js.map