vibedoc 1.10.0 → 1.11.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 (694) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-path-routes-manifest.json +7 -1
  3. package/.next/build-manifest.json +3 -3
  4. package/.next/prerender-manifest.json +41 -13
  5. package/.next/routes-manifest.json +42 -6
  6. package/.next/server/app/(app)/activity/page.js.nft.json +1 -1
  7. package/.next/server/app/(app)/activity/page_client-reference-manifest.js +1 -1
  8. package/.next/server/app/(app)/board/page.js.nft.json +1 -1
  9. package/.next/server/app/(app)/board/page_client-reference-manifest.js +1 -1
  10. package/.next/server/app/(app)/chat/page.js.nft.json +1 -1
  11. package/.next/server/app/(app)/chat/page_client-reference-manifest.js +1 -1
  12. package/.next/server/app/(app)/docs/page.js.nft.json +1 -1
  13. package/.next/server/app/(app)/docs/page_client-reference-manifest.js +1 -1
  14. package/.next/server/app/(app)/explorer/page.js.nft.json +1 -1
  15. package/.next/server/app/(app)/explorer/page_client-reference-manifest.js +1 -1
  16. package/.next/server/app/(app)/graph/page/app-paths-manifest.json +3 -0
  17. package/.next/server/app/(app)/graph/page/build-manifest.json +20 -0
  18. package/.next/server/app/(app)/graph/page/next-font-manifest.json +11 -0
  19. package/.next/server/app/(app)/graph/page/react-loadable-manifest.json +1 -0
  20. package/.next/server/app/(app)/graph/page.js +15 -0
  21. package/.next/server/app/(app)/graph/page.js.nft.json +1 -0
  22. package/.next/server/app/(app)/graph/page_client-reference-manifest.js +3 -0
  23. package/.next/server/app/(app)/manual-tests/page.js.nft.json +1 -1
  24. package/.next/server/app/(app)/manual-tests/page_client-reference-manifest.js +1 -1
  25. package/.next/server/app/(app)/memory/page.js.nft.json +1 -1
  26. package/.next/server/app/(app)/memory/page_client-reference-manifest.js +1 -1
  27. package/.next/server/app/(app)/roadmap/page.js.nft.json +1 -1
  28. package/.next/server/app/(app)/roadmap/page_client-reference-manifest.js +1 -1
  29. package/.next/server/app/(app)/settings/page.js.nft.json +1 -1
  30. package/.next/server/app/(app)/settings/page_client-reference-manifest.js +1 -1
  31. package/.next/server/app/(app)/setup/page.js.nft.json +1 -1
  32. package/.next/server/app/(app)/setup/page_client-reference-manifest.js +1 -1
  33. package/.next/server/app/_global-error.html +1 -1
  34. package/.next/server/app/_global-error.rsc +1 -1
  35. package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  36. package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  37. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  38. package/.next/server/app/_not-found/page.js.nft.json +1 -1
  39. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  40. package/.next/server/app/_not-found.html +1 -1
  41. package/.next/server/app/_not-found.rsc +2 -2
  42. package/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
  43. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
  44. package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  45. package/.next/server/app/activity.html +1 -1
  46. package/.next/server/app/activity.rsc +8 -8
  47. package/.next/server/app/activity.segments/!KGFwcCk/activity/__PAGE__.segment.rsc +6 -6
  48. package/.next/server/app/activity.segments/_full.segment.rsc +8 -8
  49. package/.next/server/app/activity.segments/_tree.segment.rsc +2 -2
  50. package/.next/server/app/api/activity/route.js +2 -2
  51. package/.next/server/app/api/activity/route.js.nft.json +1 -1
  52. package/.next/server/app/api/chat/route.js +2 -2
  53. package/.next/server/app/api/chat/route.js.nft.json +1 -1
  54. package/.next/server/app/api/context/route.js +2 -2
  55. package/.next/server/app/api/context/route.js.nft.json +1 -1
  56. package/.next/server/app/api/conversations/route.js +2 -2
  57. package/.next/server/app/api/conversations/route.js.nft.json +1 -1
  58. package/.next/server/app/api/decisions/route.js +2 -2
  59. package/.next/server/app/api/decisions/route.js.nft.json +1 -1
  60. package/.next/server/app/api/docs/graph/route/app-paths-manifest.json +3 -0
  61. package/.next/server/app/api/docs/graph/route/server-reference-manifest.json +4 -0
  62. package/.next/server/app/api/docs/graph/route.js +9 -0
  63. package/.next/server/app/api/docs/graph/route.js.map +5 -0
  64. package/.next/server/app/api/docs/graph/route.js.nft.json +1 -0
  65. package/.next/server/app/api/docs/graph/route_client-reference-manifest.js +3 -0
  66. package/.next/server/app/api/docs/links/route/app-paths-manifest.json +3 -0
  67. package/.next/server/app/api/docs/links/route/build-manifest.json +12 -0
  68. package/.next/server/app/api/docs/links/route/server-reference-manifest.json +4 -0
  69. package/.next/server/app/api/docs/links/route.js +9 -0
  70. package/.next/server/app/api/docs/links/route.js.map +5 -0
  71. package/.next/server/app/api/docs/links/route.js.nft.json +1 -0
  72. package/.next/server/app/api/docs/links/route_client-reference-manifest.js +3 -0
  73. package/.next/server/app/api/docs/route.js +2 -2
  74. package/.next/server/app/api/docs/route.js.nft.json +1 -1
  75. package/.next/server/app/api/explorer/route.js +2 -2
  76. package/.next/server/app/api/explorer/route.js.nft.json +1 -1
  77. package/.next/server/app/api/mcp/route.js +2 -2
  78. package/.next/server/app/api/mcp/route.js.nft.json +1 -1
  79. package/.next/server/app/api/memory/entries/delete/route.js +2 -2
  80. package/.next/server/app/api/memory/entries/delete/route.js.nft.json +1 -1
  81. package/.next/server/app/api/memory/entries/merge/route/app-paths-manifest.json +3 -0
  82. package/.next/server/app/api/memory/entries/merge/route/build-manifest.json +12 -0
  83. package/.next/server/app/api/memory/entries/merge/route/server-reference-manifest.json +4 -0
  84. package/.next/server/app/api/memory/entries/merge/route.js +9 -0
  85. package/.next/server/app/api/memory/entries/merge/route.js.map +5 -0
  86. package/.next/server/app/api/memory/entries/merge/route.js.nft.json +1 -0
  87. package/.next/server/app/api/memory/entries/merge/route_client-reference-manifest.js +3 -0
  88. package/.next/server/app/api/memory/entries/merge/undo/route/app-paths-manifest.json +3 -0
  89. package/.next/server/app/api/memory/entries/merge/undo/route/build-manifest.json +12 -0
  90. package/.next/server/app/api/memory/entries/merge/undo/route/server-reference-manifest.json +4 -0
  91. package/.next/server/app/api/memory/entries/merge/undo/route.js +9 -0
  92. package/.next/server/app/api/memory/entries/merge/undo/route.js.map +5 -0
  93. package/.next/server/app/api/memory/entries/merge/undo/route.js.nft.json +1 -0
  94. package/.next/server/app/api/memory/entries/merge/undo/route_client-reference-manifest.js +3 -0
  95. package/.next/server/app/api/memory/entries/restore/route.js +2 -2
  96. package/.next/server/app/api/memory/entries/restore/route.js.nft.json +1 -1
  97. package/.next/server/app/api/memory/entries/route.js +2 -2
  98. package/.next/server/app/api/memory/entries/route.js.nft.json +1 -1
  99. package/.next/server/app/api/memory/entries/save/route.js +2 -2
  100. package/.next/server/app/api/memory/entries/save/route.js.nft.json +1 -1
  101. package/.next/server/app/api/memory/graph/route.js +2 -2
  102. package/.next/server/app/api/memory/graph/route.js.nft.json +1 -1
  103. package/.next/server/app/api/memory/health/dismiss/route/app-paths-manifest.json +3 -0
  104. package/.next/server/app/api/memory/health/dismiss/route/build-manifest.json +12 -0
  105. package/.next/server/app/api/memory/health/dismiss/route/server-reference-manifest.json +4 -0
  106. package/.next/server/app/api/memory/health/dismiss/route.js +9 -0
  107. package/.next/server/app/api/memory/health/dismiss/route.js.map +5 -0
  108. package/.next/server/app/api/memory/health/dismiss/route.js.nft.json +1 -0
  109. package/.next/server/app/api/memory/health/dismiss/route_client-reference-manifest.js +3 -0
  110. package/.next/server/app/api/memory/health/route/app-paths-manifest.json +3 -0
  111. package/.next/server/app/api/memory/health/route/build-manifest.json +12 -0
  112. package/.next/server/app/api/memory/health/route/server-reference-manifest.json +4 -0
  113. package/.next/server/app/api/memory/health/route.js +8 -0
  114. package/.next/server/app/api/memory/health/route.js.map +5 -0
  115. package/.next/server/app/api/memory/health/route.js.nft.json +1 -0
  116. package/.next/server/app/api/memory/health/route_client-reference-manifest.js +3 -0
  117. package/.next/server/app/api/memory/history/route.js +2 -2
  118. package/.next/server/app/api/memory/history/route.js.nft.json +1 -1
  119. package/.next/server/app/api/memory/route.js +2 -2
  120. package/.next/server/app/api/memory/route.js.nft.json +1 -1
  121. package/.next/server/app/api/plan/apply/route.js +2 -2
  122. package/.next/server/app/api/plan/apply/route.js.nft.json +1 -1
  123. package/.next/server/app/api/projects/route.js +2 -2
  124. package/.next/server/app/api/projects/route.js.nft.json +1 -1
  125. package/.next/server/app/api/registry/route.js +2 -2
  126. package/.next/server/app/api/registry/route.js.nft.json +1 -1
  127. package/.next/server/app/api/roadmap/create/route.js +2 -2
  128. package/.next/server/app/api/roadmap/create/route.js.nft.json +1 -1
  129. package/.next/server/app/api/roadmap/delete/route.js +2 -2
  130. package/.next/server/app/api/roadmap/delete/route.js.nft.json +1 -1
  131. package/.next/server/app/api/roadmap/generate/route.js +2 -2
  132. package/.next/server/app/api/roadmap/generate/route.js.nft.json +1 -1
  133. package/.next/server/app/api/roadmap/layout/route.js +2 -2
  134. package/.next/server/app/api/roadmap/layout/route.js.nft.json +1 -1
  135. package/.next/server/app/api/roadmap/restore/route.js +2 -2
  136. package/.next/server/app/api/roadmap/restore/route.js.nft.json +1 -1
  137. package/.next/server/app/api/roadmap/route.js +2 -2
  138. package/.next/server/app/api/roadmap/route.js.nft.json +1 -1
  139. package/.next/server/app/api/roadmap/update/route.js +2 -2
  140. package/.next/server/app/api/roadmap/update/route.js.nft.json +1 -1
  141. package/.next/server/app/api/sessions/route.js +2 -2
  142. package/.next/server/app/api/sessions/route.js.nft.json +1 -1
  143. package/.next/server/app/api/settings/route.js +2 -2
  144. package/.next/server/app/api/settings/route.js.nft.json +1 -1
  145. package/.next/server/app/api/setup/generate/route.js +2 -2
  146. package/.next/server/app/api/setup/generate/route.js.nft.json +1 -1
  147. package/.next/server/app/api/setup/write/route.js +2 -2
  148. package/.next/server/app/api/setup/write/route.js.nft.json +1 -1
  149. package/.next/server/app/api/summary/route.js +2 -2
  150. package/.next/server/app/api/summary/route.js.nft.json +1 -1
  151. package/.next/server/app/api/tasks/bulk/route.js +2 -2
  152. package/.next/server/app/api/tasks/bulk/route.js.nft.json +1 -1
  153. package/.next/server/app/api/tasks/create/route.js +2 -2
  154. package/.next/server/app/api/tasks/create/route.js.nft.json +1 -1
  155. package/.next/server/app/api/tasks/delete/route.js +2 -2
  156. package/.next/server/app/api/tasks/delete/route.js.nft.json +1 -1
  157. package/.next/server/app/api/tasks/manual-tests/route.js +2 -2
  158. package/.next/server/app/api/tasks/manual-tests/route.js.nft.json +1 -1
  159. package/.next/server/app/api/tasks/restore/route.js +2 -2
  160. package/.next/server/app/api/tasks/restore/route.js.nft.json +1 -1
  161. package/.next/server/app/api/tasks/review/route.js +2 -2
  162. package/.next/server/app/api/tasks/review/route.js.nft.json +1 -1
  163. package/.next/server/app/api/tasks/route.js +2 -2
  164. package/.next/server/app/api/tasks/route.js.nft.json +1 -1
  165. package/.next/server/app/api/tasks/update/route.js +2 -2
  166. package/.next/server/app/api/tasks/update/route.js.nft.json +1 -1
  167. package/.next/server/app/api/views/route.js +2 -2
  168. package/.next/server/app/api/views/route.js.nft.json +1 -1
  169. package/.next/server/app/board.html +1 -1
  170. package/.next/server/app/board.rsc +8 -8
  171. package/.next/server/app/board.segments/!KGFwcCk/board/__PAGE__.segment.rsc +5 -5
  172. package/.next/server/app/board.segments/_full.segment.rsc +8 -8
  173. package/.next/server/app/board.segments/_tree.segment.rsc +2 -2
  174. package/.next/server/app/chat.html +1 -1
  175. package/.next/server/app/chat.rsc +8 -8
  176. package/.next/server/app/chat.segments/!KGFwcCk/chat/__PAGE__.segment.rsc +9 -11
  177. package/.next/server/app/chat.segments/_full.segment.rsc +8 -8
  178. package/.next/server/app/chat.segments/_tree.segment.rsc +2 -2
  179. package/.next/server/app/docs.html +1 -1
  180. package/.next/server/app/docs.rsc +8 -8
  181. package/.next/server/app/docs.segments/!KGFwcCk/docs/__PAGE__.segment.rsc +5 -5
  182. package/.next/server/app/docs.segments/_full.segment.rsc +8 -8
  183. package/.next/server/app/docs.segments/_tree.segment.rsc +2 -2
  184. package/.next/server/app/explorer.html +1 -1
  185. package/.next/server/app/explorer.rsc +7 -7
  186. package/.next/server/app/explorer.segments/!KGFwcCk/explorer/__PAGE__.segment.rsc +11 -10
  187. package/.next/server/app/explorer.segments/_full.segment.rsc +7 -7
  188. package/.next/server/app/explorer.segments/_tree.segment.rsc +2 -2
  189. package/.next/server/app/graph.html +1 -0
  190. package/.next/server/app/graph.meta +31 -0
  191. package/.next/server/app/graph.rsc +32 -0
  192. package/.next/server/app/graph.segments/!KGFwcCk/graph/__PAGE__.segment.rsc +33 -0
  193. package/.next/server/app/graph.segments/_full.segment.rsc +32 -0
  194. package/.next/server/app/graph.segments/_tree.segment.rsc +6 -0
  195. package/.next/server/app/index.html +1 -1
  196. package/.next/server/app/index.rsc +2 -2
  197. package/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  198. package/.next/server/app/index.segments/_full.segment.rsc +2 -2
  199. package/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  200. package/.next/server/app/manual-tests.html +1 -1
  201. package/.next/server/app/manual-tests.rsc +7 -7
  202. package/.next/server/app/manual-tests.segments/!KGFwcCk/manual-tests/__PAGE__.segment.rsc +11 -10
  203. package/.next/server/app/manual-tests.segments/_full.segment.rsc +7 -7
  204. package/.next/server/app/manual-tests.segments/_tree.segment.rsc +2 -2
  205. package/.next/server/app/memory.html +1 -1
  206. package/.next/server/app/memory.rsc +8 -8
  207. package/.next/server/app/memory.segments/!KGFwcCk/memory/__PAGE__.segment.rsc +6 -6
  208. package/.next/server/app/memory.segments/_full.segment.rsc +8 -8
  209. package/.next/server/app/memory.segments/_tree.segment.rsc +2 -2
  210. package/.next/server/app/page.js.nft.json +1 -1
  211. package/.next/server/app/page_client-reference-manifest.js +1 -1
  212. package/.next/server/app/roadmap.html +1 -1
  213. package/.next/server/app/roadmap.rsc +8 -8
  214. package/.next/server/app/roadmap.segments/!KGFwcCk/roadmap/__PAGE__.segment.rsc +5 -5
  215. package/.next/server/app/roadmap.segments/_full.segment.rsc +8 -8
  216. package/.next/server/app/roadmap.segments/_tree.segment.rsc +2 -2
  217. package/.next/server/app/settings.html +1 -1
  218. package/.next/server/app/settings.rsc +7 -7
  219. package/.next/server/app/settings.segments/!KGFwcCk/settings/__PAGE__.segment.rsc +6 -6
  220. package/.next/server/app/settings.segments/_full.segment.rsc +7 -7
  221. package/.next/server/app/settings.segments/_tree.segment.rsc +2 -2
  222. package/.next/server/app/setup.html +1 -1
  223. package/.next/server/app/setup.rsc +7 -7
  224. package/.next/server/app/setup.segments/!KGFwcCk/setup/__PAGE__.segment.rsc +11 -10
  225. package/.next/server/app/setup.segments/_full.segment.rsc +7 -7
  226. package/.next/server/app/setup.segments/_tree.segment.rsc +2 -2
  227. package/.next/server/app-paths-manifest.json +7 -1
  228. package/.next/server/chunks/{11mp_@anthropic-ai_sdk_053zt3c._.js → 11mp_@anthropic-ai_sdk_0-r4g2t._.js} +1 -1
  229. package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0_zx69c._.js → 11mp_@anthropic-ai_sdk_01gyja3._.js} +1 -1
  230. package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0gvxfg3._.js → 11mp_@anthropic-ai_sdk_02lx_j3._.js} +1 -1
  231. package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0gx5t2l._.js → 11mp_@anthropic-ai_sdk_05iv23g._.js} +1 -1
  232. package/.next/server/chunks/11mp_@anthropic-ai_sdk_05oneea._.js +3 -0
  233. package/.next/server/chunks/11mp_@anthropic-ai_sdk_07fgg-l._.js +3 -0
  234. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0_5gzfy._.js +3 -0
  235. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0_jynr-._.js +3 -0
  236. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0aykesf._.js +3 -0
  237. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0br_1fc._.js +3 -0
  238. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0cd5lu7._.js +3 -0
  239. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0ckxhy7._.js +3 -0
  240. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0e5qkuv._.js +3 -0
  241. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0el8pm6._.js +3 -0
  242. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0i4w8fv._.js +3 -0
  243. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0i7ckik._.js +3 -0
  244. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0l1p4c6._.js +3 -0
  245. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0m-xqs_._.js +3 -0
  246. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0nltdmf._.js +3 -0
  247. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0qxmzg8._.js +3 -0
  248. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0spr_aj._.js +3 -0
  249. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0th0pyh._.js +3 -0
  250. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0x21fif._.js +3 -0
  251. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1-7bj56._.js +3 -0
  252. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1-efoj1._.js +3 -0
  253. package/.next/server/chunks/11mp_@anthropic-ai_sdk_13vu693._.js +3 -0
  254. package/.next/server/chunks/11mp_@anthropic-ai_sdk_13w62gi._.js +3 -0
  255. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1887ce1._.js +3 -0
  256. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1_jq3yb._.js +3 -0
  257. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1agvp6h._.js +3 -0
  258. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1b1-3vt._.js +3 -0
  259. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1ekldtb._.js +3 -0
  260. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1ezcndt._.js +3 -0
  261. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1gr-orf._.js +3 -0
  262. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1hf-884._.js +3 -0
  263. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1ndwnmb._.js +3 -0
  264. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1rdesfd._.js +3 -0
  265. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1s8h60-._.js +3 -0
  266. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1tgk9wk._.js +3 -0
  267. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1uugb45._.js +3 -0
  268. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1vcxmui._.js +3 -0
  269. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1vcxmui._.js.map +1 -0
  270. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1x63qpm._.js +3 -0
  271. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1x63qpm._.js.map +1 -0
  272. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1y5oj_h._.js +3 -0
  273. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1y5oj_h._.js.map +1 -0
  274. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1z0q4jj._.js +3 -0
  275. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1z0q4jj._.js.map +1 -0
  276. package/.next/server/chunks/11mp_@anthropic-ai_sdk_20j6dn7._.js +3 -0
  277. package/.next/server/chunks/11mp_@anthropic-ai_sdk_20j6dn7._.js.map +1 -0
  278. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_00nr0dy._.js +3 -0
  279. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_06kgcr0._.js +3 -0
  280. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_07kod-g._.js +3 -0
  281. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_0_va-1q._.js +3 -0
  282. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_0dr79hc._.js +3 -0
  283. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_0ew4_uw._.js +3 -0
  284. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_0iy714m._.js +3 -0
  285. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_0n6aq49._.js +3 -0
  286. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_0ncvuil._.js +3 -0
  287. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_0vilstf._.js +3 -0
  288. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_0ybdfbv._.js +3 -0
  289. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_0z31-c0._.js +3 -0
  290. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_0zu51ny._.js +3 -0
  291. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_13-fsm5._.js +3 -0
  292. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_13lk7wf._.js +3 -0
  293. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1ao3e3l._.js +3 -0
  294. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1ck6z1z._.js +3 -0
  295. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1dm3so9._.js +3 -0
  296. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1jxtz_6._.js +3 -0
  297. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1pdl5qg._.js +3 -0
  298. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1tzpss1._.js +3 -0
  299. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1x_0sf4._.js +3 -0
  300. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1x_fy5x._.js +3 -0
  301. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1xx8_-m._.js +3 -0
  302. package/.next/server/chunks/{[root-of-the-server]__00o3mbd._.js → [root-of-the-server]__06ndlro._.js} +2 -2
  303. package/.next/server/chunks/{[root-of-the-server]__06dfvb0._.js → [root-of-the-server]__08v3p50._.js} +2 -2
  304. package/.next/server/chunks/{[root-of-the-server]__15jhpgl._.js → [root-of-the-server]__0cxmrop._.js} +2 -2
  305. package/.next/server/chunks/{[root-of-the-server]__0jr_5eq._.js → [root-of-the-server]__0fn-a8c._.js} +39 -23
  306. package/.next/server/chunks/[root-of-the-server]__0fn-a8c._.js.map +1 -0
  307. package/.next/server/chunks/{[root-of-the-server]__1-1hfrj._.js → [root-of-the-server]__0hk-9ll._.js} +2 -2
  308. package/.next/server/chunks/{[root-of-the-server]__1gr4e22._.js → [root-of-the-server]__0i1yba1._.js} +2 -2
  309. package/.next/server/chunks/[root-of-the-server]__0lix3ru._.js +3 -0
  310. package/.next/server/chunks/[root-of-the-server]__0lix3ru._.js.map +1 -0
  311. package/.next/server/chunks/{[root-of-the-server]__19rxcu4._.js → [root-of-the-server]__0pvi3ku._.js} +39 -23
  312. package/.next/server/chunks/[root-of-the-server]__0pvi3ku._.js.map +1 -0
  313. package/.next/server/chunks/{[root-of-the-server]__1h5hb6u._.js → [root-of-the-server]__0pz59qo._.js} +2 -2
  314. package/.next/server/chunks/[root-of-the-server]__0rggulw._.js +3 -0
  315. package/.next/server/chunks/[root-of-the-server]__0rggulw._.js.map +1 -0
  316. package/.next/server/chunks/[root-of-the-server]__0rh8yfn._.js +3 -0
  317. package/.next/server/chunks/[root-of-the-server]__0rh8yfn._.js.map +1 -0
  318. package/.next/server/chunks/{[root-of-the-server]__05tx02j._.js → [root-of-the-server]__0rikmqn._.js} +2 -2
  319. package/.next/server/chunks/[root-of-the-server]__0s8v5i-._.js +3 -0
  320. package/.next/server/chunks/[root-of-the-server]__0s8v5i-._.js.map +1 -0
  321. package/.next/server/chunks/{[root-of-the-server]__0p4w_o-._.js → [root-of-the-server]__0usdydm._.js} +2 -2
  322. package/.next/server/chunks/{[root-of-the-server]__0uu9pgg._.js → [root-of-the-server]__0wc_gnr._.js} +2 -2
  323. package/.next/server/chunks/{[root-of-the-server]__0kuhhna._.js → [root-of-the-server]__0xldguc._.js} +2 -2
  324. package/.next/server/chunks/{[root-of-the-server]__1kw2vct._.js → [root-of-the-server]__0zy73pu._.js} +2 -2
  325. package/.next/server/chunks/{[root-of-the-server]__06z8i6e._.js → [root-of-the-server]__11nbc9e._.js} +2 -2
  326. package/.next/server/chunks/[root-of-the-server]__11nbc9e._.js.map +1 -0
  327. package/.next/server/chunks/{[root-of-the-server]__19w-7h9._.js → [root-of-the-server]__11rp-qx._.js} +2 -2
  328. package/.next/server/chunks/[root-of-the-server]__1_qenei._.js +1 -1
  329. package/.next/server/chunks/[root-of-the-server]__1_qenei._.js.map +1 -1
  330. package/.next/server/chunks/{[root-of-the-server]__01n_hoh._.js → [root-of-the-server]__1ef-hw_._.js} +2 -2
  331. package/.next/server/chunks/[root-of-the-server]__1pjwaan._.js +3 -0
  332. package/.next/server/chunks/{[root-of-the-server]__1af-wfk._.js.map → [root-of-the-server]__1pjwaan._.js.map} +1 -1
  333. package/.next/server/chunks/{[root-of-the-server]__076d4xm._.js → [root-of-the-server]__1qcy2l0._.js} +2 -2
  334. package/.next/server/chunks/{[root-of-the-server]__1lt5cds._.js → [root-of-the-server]__1r67yrn._.js} +2 -2
  335. package/.next/server/chunks/[root-of-the-server]__1skrybv._.js +3 -0
  336. package/.next/server/chunks/[root-of-the-server]__1skrybv._.js.map +1 -0
  337. package/.next/server/chunks/{[root-of-the-server]__1rjgpbm._.js → [root-of-the-server]__1sn6-7a._.js} +2 -2
  338. package/.next/server/chunks/{[root-of-the-server]__1qd-ecl._.js → [root-of-the-server]__1vnine1._.js} +39 -23
  339. package/.next/server/chunks/[root-of-the-server]__1vnine1._.js.map +1 -0
  340. package/.next/server/chunks/{[root-of-the-server]__1spley9._.js → [root-of-the-server]__1wbho9e._.js} +2 -2
  341. package/.next/server/chunks/{[root-of-the-server]__09j_-hj._.js → [root-of-the-server]__1yh-4vk._.js} +2 -2
  342. package/.next/server/chunks/{[root-of-the-server]__1e_o8h4._.js → [root-of-the-server]__1zhd93r._.js} +2 -2
  343. package/.next/server/chunks/_04byth9._.js +31 -26
  344. package/.next/server/chunks/_04byth9._.js.map +1 -1
  345. package/.next/server/chunks/_0safx0g._.js +3 -3
  346. package/.next/server/chunks/_0safx0g._.js.map +1 -1
  347. package/.next/server/chunks/_next-internal_server_app_api_docs_graph_route_actions_1nzoqf-.js +3 -0
  348. package/.next/server/chunks/_next-internal_server_app_api_docs_links_route_actions_1q-6jeg.js +3 -0
  349. package/.next/server/chunks/_next-internal_server_app_api_memory_entries_merge_route_actions_1rr-wwt.js +3 -0
  350. package/.next/server/chunks/_next-internal_server_app_api_memory_entries_merge_undo_route_actions_0l6cy9q.js +3 -0
  351. package/.next/server/chunks/_next-internal_server_app_api_memory_entries_merge_undo_route_actions_0l6cy9q.js.map +1 -0
  352. package/.next/server/chunks/_next-internal_server_app_api_memory_health_dismiss_route_actions_0i7_n68.js +3 -0
  353. package/.next/server/chunks/_next-internal_server_app_api_memory_health_dismiss_route_actions_0i7_n68.js.map +1 -0
  354. package/.next/server/chunks/_next-internal_server_app_api_memory_health_route_actions_1lk-_5d.js +3 -0
  355. package/.next/server/chunks/_next-internal_server_app_api_memory_health_route_actions_1lk-_5d.js.map +1 -0
  356. package/.next/server/chunks/ssr/{0_nd_mermaid_dist_mermaid_core_mjs_0itmgkm._.js → 0_nd_mermaid_dist_mermaid_core_mjs_0y_edkq._.js} +2 -2
  357. package/.next/server/chunks/ssr/0_nd_mermaid_dist_mermaid_core_mjs_0y_edkq._.js.map +1 -0
  358. package/.next/server/chunks/ssr/{1u84_katex_dist_katex_mjs_08jn-sj._.js → 1u84_katex_dist_katex_mjs_0yg8zto._.js} +1 -1
  359. package/.next/server/chunks/ssr/1u84_katex_dist_katex_mjs_0yg8zto._.js.map +1 -0
  360. package/.next/server/chunks/ssr/[root-of-the-server]__1drc5py._.js +3 -0
  361. package/.next/server/chunks/ssr/[root-of-the-server]__1drc5py._.js.map +1 -0
  362. package/.next/server/chunks/ssr/_02ks8_a._.js +3 -0
  363. package/.next/server/chunks/ssr/_02ks8_a._.js.map +1 -0
  364. package/.next/server/chunks/ssr/_04xff_2._.js +1 -1
  365. package/.next/server/chunks/ssr/_04xff_2._.js.map +1 -1
  366. package/.next/server/chunks/ssr/_0696iog._.js +3 -0
  367. package/.next/server/chunks/ssr/_0696iog._.js.map +1 -0
  368. package/.next/server/chunks/ssr/_0ghj-vx._.js +3 -0
  369. package/.next/server/chunks/ssr/_0ghj-vx._.js.map +1 -0
  370. package/.next/server/chunks/ssr/{_0idb-vo._.js → _0kob2si._.js} +2 -2
  371. package/.next/server/chunks/ssr/_0kob2si._.js.map +1 -0
  372. package/.next/server/chunks/ssr/_0me5_6x._.js +3 -0
  373. package/.next/server/chunks/ssr/_0me5_6x._.js.map +1 -0
  374. package/.next/server/chunks/ssr/_0pg63il._.js +3 -0
  375. package/.next/server/chunks/ssr/_0pg63il._.js.map +1 -0
  376. package/.next/server/chunks/ssr/_16b4hkt._.js +3 -0
  377. package/.next/server/chunks/ssr/_16b4hkt._.js.map +1 -0
  378. package/.next/server/chunks/ssr/_190c11r._.js +3 -0
  379. package/.next/server/chunks/ssr/_190c11r._.js.map +1 -0
  380. package/.next/server/chunks/ssr/_19k2iz0._.js +2 -2
  381. package/.next/server/chunks/ssr/_19k2iz0._.js.map +1 -1
  382. package/.next/server/chunks/ssr/_1b82nz3._.js +3 -0
  383. package/.next/server/chunks/ssr/_1b82nz3._.js.map +1 -0
  384. package/.next/server/chunks/ssr/_1cz8dnu._.js +3 -0
  385. package/.next/server/chunks/ssr/_1cz8dnu._.js.map +1 -0
  386. package/.next/server/chunks/ssr/_1feybpz._.js +3 -0
  387. package/.next/server/chunks/ssr/_1feybpz._.js.map +1 -0
  388. package/.next/server/chunks/ssr/{_1s2ya35._.js → _1r_t_wi._.js} +1 -1
  389. package/.next/server/chunks/ssr/_1r_t_wi._.js.map +1 -0
  390. package/.next/server/chunks/ssr/_1t8it2w._.js +3 -0
  391. package/.next/server/chunks/ssr/_1t8it2w._.js.map +1 -0
  392. package/.next/server/chunks/ssr/_next-internal_server_app_(app)_graph_page_actions_041e9i7.js +3 -0
  393. package/.next/server/chunks/ssr/_next-internal_server_app_(app)_graph_page_actions_041e9i7.js.map +1 -0
  394. package/.next/server/chunks/ssr/{node_modules__pnpm_0s7j-tv._.js → node_modules__pnpm_00f4yhs._.js} +1 -1
  395. package/.next/server/chunks/ssr/node_modules__pnpm_00f4yhs._.js.map +1 -0
  396. package/.next/server/chunks/ssr/{node_modules__pnpm_1fry8_2._.js → node_modules__pnpm_035haet._.js} +1 -1
  397. package/.next/server/chunks/ssr/{node_modules__pnpm_0j7asqf._.js → node_modules__pnpm_03an60e._.js} +1 -1
  398. package/.next/server/chunks/ssr/{node_modules__pnpm_0eub17j._.js → node_modules__pnpm_03mp7qw._.js} +2 -2
  399. package/.next/server/chunks/ssr/{node_modules__pnpm_0_83tv8._.js → node_modules__pnpm_03mpmzx._.js} +1 -1
  400. package/.next/server/chunks/ssr/{node_modules__pnpm_0e55e7-._.js → node_modules__pnpm_06_8fr8._.js} +1 -1
  401. package/.next/server/chunks/ssr/{node_modules__pnpm_16bj927._.js → node_modules__pnpm_09nd7ia._.js} +1 -1
  402. package/.next/server/chunks/ssr/{node_modules__pnpm_1ch46nl._.js → node_modules__pnpm_0_e05ka._.js} +1 -1
  403. package/.next/server/chunks/ssr/node_modules__pnpm_0aoa6rg._.js +1 -1
  404. package/.next/server/chunks/ssr/node_modules__pnpm_0aoa6rg._.js.map +1 -1
  405. package/.next/server/chunks/ssr/{node_modules__pnpm_02p2rqs._.js → node_modules__pnpm_0iu4132._.js} +1 -1
  406. package/.next/server/chunks/ssr/{node_modules__pnpm_0iqb0_x._.js → node_modules__pnpm_0j_-le7._.js} +2 -2
  407. package/.next/server/chunks/ssr/node_modules__pnpm_0j_-le7._.js.map +1 -0
  408. package/.next/server/chunks/ssr/{node_modules__pnpm_0abf_e9._.js → node_modules__pnpm_0jampur._.js} +1 -1
  409. package/.next/server/chunks/ssr/{node_modules__pnpm_1hqh95z._.js → node_modules__pnpm_0lkvbt-._.js} +1 -1
  410. package/.next/server/chunks/ssr/{node_modules__pnpm_14j18h7._.js → node_modules__pnpm_0mqeoh-._.js} +2 -2
  411. package/.next/server/chunks/ssr/{node_modules__pnpm_0v_mhl7._.js → node_modules__pnpm_0oyo3yo._.js} +2 -2
  412. package/.next/server/chunks/ssr/{node_modules__pnpm_00lsytc._.js → node_modules__pnpm_0rq9x9q._.js} +2 -2
  413. package/.next/server/chunks/ssr/{node_modules__pnpm_0s63lee._.js → node_modules__pnpm_0tn5pg3._.js} +1 -1
  414. package/.next/server/chunks/ssr/{node_modules__pnpm_0_ajzll._.js → node_modules__pnpm_0x5wj-4._.js} +2 -2
  415. package/.next/server/chunks/ssr/{node_modules__pnpm_0rsfj9v._.js → node_modules__pnpm_0zz55xq._.js} +1 -1
  416. package/.next/server/chunks/ssr/node_modules__pnpm_0zz55xq._.js.map +1 -0
  417. package/.next/server/chunks/ssr/{node_modules__pnpm_1gpkxns._.js → node_modules__pnpm_139-v1i._.js} +1 -1
  418. package/.next/server/chunks/ssr/{node_modules__pnpm_1dc-yxd._.js → node_modules__pnpm_1i_chik._.js} +1 -1
  419. package/.next/server/chunks/ssr/{node_modules__pnpm_060kz-j._.js → node_modules__pnpm_1jgju12._.js} +1 -1
  420. package/.next/server/chunks/ssr/{node_modules__pnpm_0up4z7m._.js → node_modules__pnpm_1n9oeu0._.js} +1 -1
  421. package/.next/server/chunks/ssr/node_modules__pnpm_1oygi6o._.js +3 -0
  422. package/.next/server/chunks/ssr/node_modules__pnpm_1oygi6o._.js.map +1 -0
  423. package/.next/server/chunks/ssr/node_modules__pnpm_1ukodtk._.js +3 -0
  424. package/.next/server/chunks/ssr/node_modules__pnpm_1ukodtk._.js.map +1 -0
  425. package/.next/server/chunks/ssr/{node_modules__pnpm_05-p8zy._.js → node_modules__pnpm_1ws3ez9._.js} +1 -1
  426. package/.next/server/chunks/ssr/{node_modules__pnpm_0gp90ei._.js → node_modules__pnpm_1ydeqw6._.js} +1 -1
  427. package/.next/server/chunks/ssr/{node_modules__pnpm_0jlzk5z._.js → node_modules__pnpm_1zme4rg._.js} +1 -1
  428. package/.next/server/chunks/ssr/{node_modules__pnpm_1oaf50x._.js → node_modules__pnpm_1zum4yd._.js} +1 -1
  429. package/.next/server/chunks/ssr/{node_modules__pnpm_0vuao3_._.js → node_modules__pnpm_2045l51._.js} +1 -1
  430. package/.next/server/chunks/ssr/src_1e9kctc._.js +3 -0
  431. package/.next/server/chunks/ssr/src_1e9kctc._.js.map +1 -0
  432. package/.next/server/chunks/ssr/src_app_(app)_chat_page_tsx_0c3e4l4._.js +1 -1
  433. package/.next/server/chunks/ssr/src_app_(app)_chat_page_tsx_0c3e4l4._.js.map +1 -1
  434. package/.next/server/chunks/ssr/src_app_(app)_graph_page_tsx_1yudb7h._.js +3 -0
  435. package/.next/server/chunks/ssr/src_app_(app)_graph_page_tsx_1yudb7h._.js.map +1 -0
  436. package/.next/server/chunks/ssr/src_app_(app)_layout_tsx_1yu5hom._.js +1 -1
  437. package/.next/server/chunks/ssr/src_app_(app)_layout_tsx_1yu5hom._.js.map +1 -1
  438. package/.next/server/chunks/ssr/src_app_(app)_memory_page_tsx_19jhb1c._.js +3 -2
  439. package/.next/server/chunks/ssr/src_app_(app)_memory_page_tsx_19jhb1c._.js.map +1 -1
  440. package/.next/server/chunks/ssr/src_components_roadmap_RoadmapNodes_tsx_0up_ygp._.js +3 -0
  441. package/.next/server/chunks/ssr/src_components_roadmap_RoadmapNodes_tsx_0up_ygp._.js.map +1 -0
  442. package/.next/server/chunks/ssr/src_context_ChatContext_tsx_0lowp8p._.js +2 -2
  443. package/.next/server/chunks/ssr/src_context_ChatContext_tsx_0lowp8p._.js.map +1 -1
  444. package/.next/server/middleware-build-manifest.js +3 -3
  445. package/.next/server/next-font-manifest.js +1 -1
  446. package/.next/server/next-font-manifest.json +4 -0
  447. package/.next/server/pages/404.html +1 -1
  448. package/.next/server/pages/500.html +1 -1
  449. package/.next/server/prefetch-hints.json +19 -0
  450. package/.next/server/server-reference-manifest.js +1 -1
  451. package/.next/server/server-reference-manifest.json +1 -1
  452. package/.next/static/chunks/036fex6o238at.css +1 -0
  453. package/.next/static/chunks/03tzhv775qv5m.js +1 -0
  454. package/.next/static/chunks/05rjl54wa6y43.js +1 -0
  455. package/.next/static/chunks/0_8ovyz2sbr3p.js +1 -0
  456. package/.next/static/chunks/0do6j4i1v_c6s.js +1 -0
  457. package/.next/static/chunks/{3xqcluqa32mjv.js → 0h52yb69w77nq.js} +2 -2
  458. package/.next/static/chunks/0kb25y5g772mn.js +1 -0
  459. package/.next/static/chunks/0pmpdvev8bf-o.js +1 -0
  460. package/.next/static/chunks/{1hh2cxd9ndxf-.js → 10itjt9fhlzr1.js} +13 -13
  461. package/.next/static/chunks/1b9r_vdcewfu7.js +1 -0
  462. package/.next/static/chunks/1c5ibgojv8jdi.js +3 -0
  463. package/.next/static/chunks/1l8fp2uesk29q.js +1 -0
  464. package/.next/static/chunks/1pmgcotwq-_yh.js +1 -0
  465. package/.next/static/chunks/1v63qs4kxxcfh.js +1 -0
  466. package/.next/static/chunks/{1n4_u3om7ye4z.js → 1xxzt2y2ttqql.js} +1 -1
  467. package/.next/static/chunks/263i_dcdizuvd.js +1 -0
  468. package/.next/static/chunks/2mf5us3y9wd9g.js +1 -0
  469. package/.next/static/chunks/36s2k2k_w-or8.js +1 -0
  470. package/.next/static/chunks/3ctec-7mnm19m.js +1 -0
  471. package/.next/static/chunks/3rtr962aa09nh.js +12 -0
  472. package/.next/static/chunks/3x43gd45wlhbl.js +1 -0
  473. package/.next/static/chunks/42c9smmpcu4re.js +1 -0
  474. package/README.md +12 -6
  475. package/package.json +1 -1
  476. package/.next/server/app/api/backlinks/route/app-paths-manifest.json +0 -3
  477. package/.next/server/app/api/backlinks/route.js +0 -8
  478. package/.next/server/app/api/backlinks/route.js.nft.json +0 -1
  479. package/.next/server/app/api/backlinks/route_client-reference-manifest.js +0 -3
  480. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0krkw4y._.js +0 -3
  481. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0l0xzie._.js +0 -3
  482. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0pgjvhr._.js +0 -3
  483. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0r-keh6._.js +0 -3
  484. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0tvfbjt._.js +0 -3
  485. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0u4b8_f._.js +0 -3
  486. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0ud37xh._.js +0 -3
  487. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0v3ar-t._.js +0 -3
  488. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0wk0b65._.js +0 -3
  489. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0wqkd2r._.js +0 -3
  490. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0wypotx._.js +0 -3
  491. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0yuq-9s._.js +0 -3
  492. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0z-e57x._.js +0 -3
  493. package/.next/server/chunks/11mp_@anthropic-ai_sdk_108ltz4._.js +0 -3
  494. package/.next/server/chunks/11mp_@anthropic-ai_sdk_10c_i6_._.js +0 -3
  495. package/.next/server/chunks/11mp_@anthropic-ai_sdk_14jogs8._.js +0 -3
  496. package/.next/server/chunks/11mp_@anthropic-ai_sdk_15u-n39._.js +0 -3
  497. package/.next/server/chunks/11mp_@anthropic-ai_sdk_194ahxu._.js +0 -3
  498. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1ahph2t._.js +0 -3
  499. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1ajy77y._.js +0 -3
  500. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1b57s9p._.js +0 -3
  501. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1brf2xn._.js +0 -3
  502. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1btfw2x._.js +0 -3
  503. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1cyy_q6._.js +0 -3
  504. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1fz9fev._.js +0 -3
  505. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1i_rz7h._.js +0 -3
  506. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1it8zsv._.js +0 -3
  507. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1jzusvd._.js +0 -3
  508. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1lfknr2._.js +0 -3
  509. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1mewd-3._.js +0 -3
  510. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1mkm4u_._.js +0 -3
  511. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1rggqq3._.js +0 -3
  512. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1rhjf1m._.js +0 -3
  513. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1s6ks8c._.js +0 -3
  514. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1u8z4hp._.js +0 -3
  515. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1vyy3_4._.js +0 -3
  516. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_036bvwf._.js +0 -3
  517. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_046taqd._.js +0 -3
  518. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_0bxad5f._.js +0 -3
  519. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_0g65abt._.js +0 -3
  520. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_0pb9bu1._.js +0 -3
  521. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_120-cio._.js +0 -3
  522. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_13uyu_v._.js +0 -3
  523. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_13x2ww0._.js +0 -3
  524. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_17og64d._.js +0 -3
  525. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1e_sh4o._.js +0 -3
  526. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1ecuo9i._.js +0 -3
  527. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1go8d0m._.js +0 -3
  528. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1i13ryx._.js +0 -3
  529. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1jv_hid._.js +0 -3
  530. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1mh5mqk._.js +0 -3
  531. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1oq7e8u._.js +0 -3
  532. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1p-cq-p._.js +0 -3
  533. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1the3g0._.js +0 -3
  534. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1xubh-w._.js +0 -3
  535. package/.next/server/chunks/[root-of-the-server]__0jr_5eq._.js.map +0 -1
  536. package/.next/server/chunks/[root-of-the-server]__19rxcu4._.js.map +0 -1
  537. package/.next/server/chunks/[root-of-the-server]__1af-wfk._.js +0 -3
  538. package/.next/server/chunks/[root-of-the-server]__1qd-ecl._.js.map +0 -1
  539. package/.next/server/chunks/_next-internal_server_app_api_backlinks_route_actions_1_58m09.js +0 -3
  540. package/.next/server/chunks/ssr/1x05_lucide-react_dist_esm_icons_triangle-alert_mjs_0ei-mpz._.js +0 -3
  541. package/.next/server/chunks/ssr/1x05_lucide-react_dist_esm_icons_triangle-alert_mjs_0ei-mpz._.js.map +0 -1
  542. package/.next/server/chunks/ssr/_0h91h9n._.js +0 -3
  543. package/.next/server/chunks/ssr/_0h91h9n._.js.map +0 -1
  544. package/.next/server/chunks/ssr/_0idb-vo._.js.map +0 -1
  545. package/.next/server/chunks/ssr/_0ip7sg0._.js +0 -3
  546. package/.next/server/chunks/ssr/_0ip7sg0._.js.map +0 -1
  547. package/.next/server/chunks/ssr/_0ks_bep._.js +0 -3
  548. package/.next/server/chunks/ssr/_0ks_bep._.js.map +0 -1
  549. package/.next/server/chunks/ssr/_0lqrpim._.js +0 -3
  550. package/.next/server/chunks/ssr/_0lqrpim._.js.map +0 -1
  551. package/.next/server/chunks/ssr/_0qp3gu7._.js +0 -3
  552. package/.next/server/chunks/ssr/_0qp3gu7._.js.map +0 -1
  553. package/.next/server/chunks/ssr/_197jl3g._.js +0 -3
  554. package/.next/server/chunks/ssr/_197jl3g._.js.map +0 -1
  555. package/.next/server/chunks/ssr/_1el478k._.js +0 -3
  556. package/.next/server/chunks/ssr/_1el478k._.js.map +0 -1
  557. package/.next/server/chunks/ssr/_1t76zdx._.js +0 -3
  558. package/.next/server/chunks/ssr/_1t76zdx._.js.map +0 -1
  559. package/.next/server/chunks/ssr/node_modules__pnpm_0al3nfy._.js +0 -3
  560. package/.next/server/chunks/ssr/node_modules__pnpm_0al3nfy._.js.map +0 -1
  561. package/.next/server/chunks/ssr/src_components_0eyr_zi._.js +0 -3
  562. package/.next/server/chunks/ssr/src_components_0eyr_zi._.js.map +0 -1
  563. package/.next/server/chunks/ssr/src_components_1s861m8._.js +0 -3
  564. package/.next/server/chunks/ssr/src_components_1s861m8._.js.map +0 -1
  565. package/.next/static/chunks/05qw7-fs1exlt.js +0 -1
  566. package/.next/static/chunks/08sqjdq-43nbt.js +0 -1
  567. package/.next/static/chunks/09r4_4wr0aga3.js +0 -1
  568. package/.next/static/chunks/0mgifb98wbesa.js +0 -1
  569. package/.next/static/chunks/0xw_sa58zqv5s.js +0 -1
  570. package/.next/static/chunks/1-a3-6c_nce84.js +0 -1
  571. package/.next/static/chunks/149fj-mseo8q3.css +0 -1
  572. package/.next/static/chunks/1c11k-snzp541.js +0 -1
  573. package/.next/static/chunks/1qhndyi2gdbkf.js +0 -1
  574. package/.next/static/chunks/1x40-5s54wd5m.js +0 -11
  575. package/.next/static/chunks/24u_rc2tbkhai.js +0 -3
  576. package/.next/static/chunks/30s090l71e1gs.js +0 -1
  577. package/.next/static/chunks/3t8px4aygy1s9.js +0 -1
  578. package/.next/static/chunks/44gr_v5092gwh.js +0 -1
  579. /package/.next/server/app/{api/backlinks/route → (app)/graph/page}/server-reference-manifest.json +0 -0
  580. /package/.next/server/app/{api/backlinks/route.js.map → (app)/graph/page.js.map} +0 -0
  581. /package/.next/server/app/api/{backlinks → docs/graph}/route/build-manifest.json +0 -0
  582. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_053zt3c._.js.map → 11mp_@anthropic-ai_sdk_0-r4g2t._.js.map} +0 -0
  583. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0_zx69c._.js.map → 11mp_@anthropic-ai_sdk_01gyja3._.js.map} +0 -0
  584. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0gvxfg3._.js.map → 11mp_@anthropic-ai_sdk_02lx_j3._.js.map} +0 -0
  585. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0gx5t2l._.js.map → 11mp_@anthropic-ai_sdk_05iv23g._.js.map} +0 -0
  586. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0krkw4y._.js.map → 11mp_@anthropic-ai_sdk_05oneea._.js.map} +0 -0
  587. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0l0xzie._.js.map → 11mp_@anthropic-ai_sdk_07fgg-l._.js.map} +0 -0
  588. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0pgjvhr._.js.map → 11mp_@anthropic-ai_sdk_0_5gzfy._.js.map} +0 -0
  589. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0r-keh6._.js.map → 11mp_@anthropic-ai_sdk_0_jynr-._.js.map} +0 -0
  590. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0tvfbjt._.js.map → 11mp_@anthropic-ai_sdk_0aykesf._.js.map} +0 -0
  591. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0u4b8_f._.js.map → 11mp_@anthropic-ai_sdk_0br_1fc._.js.map} +0 -0
  592. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0ud37xh._.js.map → 11mp_@anthropic-ai_sdk_0cd5lu7._.js.map} +0 -0
  593. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0v3ar-t._.js.map → 11mp_@anthropic-ai_sdk_0ckxhy7._.js.map} +0 -0
  594. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0wk0b65._.js.map → 11mp_@anthropic-ai_sdk_0e5qkuv._.js.map} +0 -0
  595. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0wqkd2r._.js.map → 11mp_@anthropic-ai_sdk_0el8pm6._.js.map} +0 -0
  596. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0wypotx._.js.map → 11mp_@anthropic-ai_sdk_0i4w8fv._.js.map} +0 -0
  597. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0yuq-9s._.js.map → 11mp_@anthropic-ai_sdk_0i7ckik._.js.map} +0 -0
  598. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0z-e57x._.js.map → 11mp_@anthropic-ai_sdk_0l1p4c6._.js.map} +0 -0
  599. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_108ltz4._.js.map → 11mp_@anthropic-ai_sdk_0m-xqs_._.js.map} +0 -0
  600. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_10c_i6_._.js.map → 11mp_@anthropic-ai_sdk_0nltdmf._.js.map} +0 -0
  601. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_14jogs8._.js.map → 11mp_@anthropic-ai_sdk_0qxmzg8._.js.map} +0 -0
  602. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_15u-n39._.js.map → 11mp_@anthropic-ai_sdk_0spr_aj._.js.map} +0 -0
  603. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_194ahxu._.js.map → 11mp_@anthropic-ai_sdk_0th0pyh._.js.map} +0 -0
  604. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1ahph2t._.js.map → 11mp_@anthropic-ai_sdk_0x21fif._.js.map} +0 -0
  605. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1ajy77y._.js.map → 11mp_@anthropic-ai_sdk_1-7bj56._.js.map} +0 -0
  606. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1b57s9p._.js.map → 11mp_@anthropic-ai_sdk_1-efoj1._.js.map} +0 -0
  607. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1brf2xn._.js.map → 11mp_@anthropic-ai_sdk_13vu693._.js.map} +0 -0
  608. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1btfw2x._.js.map → 11mp_@anthropic-ai_sdk_13w62gi._.js.map} +0 -0
  609. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1cyy_q6._.js.map → 11mp_@anthropic-ai_sdk_1887ce1._.js.map} +0 -0
  610. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1fz9fev._.js.map → 11mp_@anthropic-ai_sdk_1_jq3yb._.js.map} +0 -0
  611. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1i_rz7h._.js.map → 11mp_@anthropic-ai_sdk_1agvp6h._.js.map} +0 -0
  612. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1it8zsv._.js.map → 11mp_@anthropic-ai_sdk_1b1-3vt._.js.map} +0 -0
  613. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1jzusvd._.js.map → 11mp_@anthropic-ai_sdk_1ekldtb._.js.map} +0 -0
  614. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1lfknr2._.js.map → 11mp_@anthropic-ai_sdk_1ezcndt._.js.map} +0 -0
  615. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1mewd-3._.js.map → 11mp_@anthropic-ai_sdk_1gr-orf._.js.map} +0 -0
  616. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1mkm4u_._.js.map → 11mp_@anthropic-ai_sdk_1hf-884._.js.map} +0 -0
  617. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1rggqq3._.js.map → 11mp_@anthropic-ai_sdk_1ndwnmb._.js.map} +0 -0
  618. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1rhjf1m._.js.map → 11mp_@anthropic-ai_sdk_1rdesfd._.js.map} +0 -0
  619. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1s6ks8c._.js.map → 11mp_@anthropic-ai_sdk_1s8h60-._.js.map} +0 -0
  620. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1u8z4hp._.js.map → 11mp_@anthropic-ai_sdk_1tgk9wk._.js.map} +0 -0
  621. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1vyy3_4._.js.map → 11mp_@anthropic-ai_sdk_1uugb45._.js.map} +0 -0
  622. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_036bvwf._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_00nr0dy._.js.map} +0 -0
  623. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_046taqd._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_06kgcr0._.js.map} +0 -0
  624. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_0bxad5f._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_07kod-g._.js.map} +0 -0
  625. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_0g65abt._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_0_va-1q._.js.map} +0 -0
  626. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_0pb9bu1._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_0dr79hc._.js.map} +0 -0
  627. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_120-cio._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_0ew4_uw._.js.map} +0 -0
  628. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_13uyu_v._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_0iy714m._.js.map} +0 -0
  629. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_13x2ww0._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_0n6aq49._.js.map} +0 -0
  630. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_17og64d._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_0ncvuil._.js.map} +0 -0
  631. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_1e_sh4o._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_0vilstf._.js.map} +0 -0
  632. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_1ecuo9i._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_0ybdfbv._.js.map} +0 -0
  633. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_1go8d0m._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_0z31-c0._.js.map} +0 -0
  634. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_1i13ryx._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_0zu51ny._.js.map} +0 -0
  635. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_1jv_hid._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_13-fsm5._.js.map} +0 -0
  636. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_1mh5mqk._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_13lk7wf._.js.map} +0 -0
  637. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_1oq7e8u._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_1ao3e3l._.js.map} +0 -0
  638. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_1p-cq-p._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_1ck6z1z._.js.map} +0 -0
  639. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_1the3g0._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_1dm3so9._.js.map} +0 -0
  640. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_1xubh-w._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_1jxtz_6._.js.map} +0 -0
  641. /package/.next/server/chunks/{[root-of-the-server]__00o3mbd._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_1pdl5qg._.js.map} +0 -0
  642. /package/.next/server/chunks/{[root-of-the-server]__06z8i6e._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_1tzpss1._.js.map} +0 -0
  643. /package/.next/server/chunks/{[root-of-the-server]__1kw2vct._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_1x_0sf4._.js.map} +0 -0
  644. /package/.next/server/chunks/{_next-internal_server_app_api_backlinks_route_actions_1_58m09.js.map → 11mp_@anthropic-ai_sdk_index_mjs_1x_fy5x._.js.map} +0 -0
  645. /package/.next/server/chunks/{ssr/0_nd_mermaid_dist_mermaid_core_mjs_0itmgkm._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_1xx8_-m._.js.map} +0 -0
  646. /package/.next/server/chunks/{ssr/1u84_katex_dist_katex_mjs_08jn-sj._.js.map → [root-of-the-server]__06ndlro._.js.map} +0 -0
  647. /package/.next/server/chunks/{[root-of-the-server]__06dfvb0._.js.map → [root-of-the-server]__08v3p50._.js.map} +0 -0
  648. /package/.next/server/chunks/{[root-of-the-server]__15jhpgl._.js.map → [root-of-the-server]__0cxmrop._.js.map} +0 -0
  649. /package/.next/server/chunks/{[root-of-the-server]__1-1hfrj._.js.map → [root-of-the-server]__0hk-9ll._.js.map} +0 -0
  650. /package/.next/server/chunks/{[root-of-the-server]__1gr4e22._.js.map → [root-of-the-server]__0i1yba1._.js.map} +0 -0
  651. /package/.next/server/chunks/{[root-of-the-server]__1h5hb6u._.js.map → [root-of-the-server]__0pz59qo._.js.map} +0 -0
  652. /package/.next/server/chunks/{[root-of-the-server]__05tx02j._.js.map → [root-of-the-server]__0rikmqn._.js.map} +0 -0
  653. /package/.next/server/chunks/{[root-of-the-server]__0p4w_o-._.js.map → [root-of-the-server]__0usdydm._.js.map} +0 -0
  654. /package/.next/server/chunks/{[root-of-the-server]__09j_-hj._.js.map → [root-of-the-server]__0wc_gnr._.js.map} +0 -0
  655. /package/.next/server/chunks/{[root-of-the-server]__0kuhhna._.js.map → [root-of-the-server]__0xldguc._.js.map} +0 -0
  656. /package/.next/server/chunks/{ssr/_1s2ya35._.js.map → [root-of-the-server]__0zy73pu._.js.map} +0 -0
  657. /package/.next/server/chunks/{[root-of-the-server]__19w-7h9._.js.map → [root-of-the-server]__11rp-qx._.js.map} +0 -0
  658. /package/.next/server/chunks/{[root-of-the-server]__01n_hoh._.js.map → [root-of-the-server]__1ef-hw_._.js.map} +0 -0
  659. /package/.next/server/chunks/{[root-of-the-server]__076d4xm._.js.map → [root-of-the-server]__1qcy2l0._.js.map} +0 -0
  660. /package/.next/server/chunks/{[root-of-the-server]__1lt5cds._.js.map → [root-of-the-server]__1r67yrn._.js.map} +0 -0
  661. /package/.next/server/chunks/{[root-of-the-server]__1rjgpbm._.js.map → [root-of-the-server]__1sn6-7a._.js.map} +0 -0
  662. /package/.next/server/chunks/{[root-of-the-server]__1spley9._.js.map → [root-of-the-server]__1wbho9e._.js.map} +0 -0
  663. /package/.next/server/chunks/{[root-of-the-server]__0uu9pgg._.js.map → [root-of-the-server]__1yh-4vk._.js.map} +0 -0
  664. /package/.next/server/chunks/{[root-of-the-server]__1e_o8h4._.js.map → [root-of-the-server]__1zhd93r._.js.map} +0 -0
  665. /package/.next/server/chunks/{ssr/node_modules__pnpm_0iqb0_x._.js.map → _next-internal_server_app_api_docs_graph_route_actions_1nzoqf-.js.map} +0 -0
  666. /package/.next/server/chunks/{ssr/node_modules__pnpm_0rsfj9v._.js.map → _next-internal_server_app_api_docs_links_route_actions_1q-6jeg.js.map} +0 -0
  667. /package/.next/server/chunks/{ssr/node_modules__pnpm_0s7j-tv._.js.map → _next-internal_server_app_api_memory_entries_merge_route_actions_1rr-wwt.js.map} +0 -0
  668. /package/.next/server/chunks/ssr/{node_modules__pnpm_1fry8_2._.js.map → node_modules__pnpm_035haet._.js.map} +0 -0
  669. /package/.next/server/chunks/ssr/{node_modules__pnpm_0j7asqf._.js.map → node_modules__pnpm_03an60e._.js.map} +0 -0
  670. /package/.next/server/chunks/ssr/{node_modules__pnpm_0eub17j._.js.map → node_modules__pnpm_03mp7qw._.js.map} +0 -0
  671. /package/.next/server/chunks/ssr/{node_modules__pnpm_0_83tv8._.js.map → node_modules__pnpm_03mpmzx._.js.map} +0 -0
  672. /package/.next/server/chunks/ssr/{node_modules__pnpm_0e55e7-._.js.map → node_modules__pnpm_06_8fr8._.js.map} +0 -0
  673. /package/.next/server/chunks/ssr/{node_modules__pnpm_16bj927._.js.map → node_modules__pnpm_09nd7ia._.js.map} +0 -0
  674. /package/.next/server/chunks/ssr/{node_modules__pnpm_1ch46nl._.js.map → node_modules__pnpm_0_e05ka._.js.map} +0 -0
  675. /package/.next/server/chunks/ssr/{node_modules__pnpm_02p2rqs._.js.map → node_modules__pnpm_0iu4132._.js.map} +0 -0
  676. /package/.next/server/chunks/ssr/{node_modules__pnpm_0abf_e9._.js.map → node_modules__pnpm_0jampur._.js.map} +0 -0
  677. /package/.next/server/chunks/ssr/{node_modules__pnpm_1hqh95z._.js.map → node_modules__pnpm_0lkvbt-._.js.map} +0 -0
  678. /package/.next/server/chunks/ssr/{node_modules__pnpm_14j18h7._.js.map → node_modules__pnpm_0mqeoh-._.js.map} +0 -0
  679. /package/.next/server/chunks/ssr/{node_modules__pnpm_0v_mhl7._.js.map → node_modules__pnpm_0oyo3yo._.js.map} +0 -0
  680. /package/.next/server/chunks/ssr/{node_modules__pnpm_00lsytc._.js.map → node_modules__pnpm_0rq9x9q._.js.map} +0 -0
  681. /package/.next/server/chunks/ssr/{node_modules__pnpm_0s63lee._.js.map → node_modules__pnpm_0tn5pg3._.js.map} +0 -0
  682. /package/.next/server/chunks/ssr/{node_modules__pnpm_0_ajzll._.js.map → node_modules__pnpm_0x5wj-4._.js.map} +0 -0
  683. /package/.next/server/chunks/ssr/{node_modules__pnpm_1gpkxns._.js.map → node_modules__pnpm_139-v1i._.js.map} +0 -0
  684. /package/.next/server/chunks/ssr/{node_modules__pnpm_1dc-yxd._.js.map → node_modules__pnpm_1i_chik._.js.map} +0 -0
  685. /package/.next/server/chunks/ssr/{node_modules__pnpm_060kz-j._.js.map → node_modules__pnpm_1jgju12._.js.map} +0 -0
  686. /package/.next/server/chunks/ssr/{node_modules__pnpm_0up4z7m._.js.map → node_modules__pnpm_1n9oeu0._.js.map} +0 -0
  687. /package/.next/server/chunks/ssr/{node_modules__pnpm_05-p8zy._.js.map → node_modules__pnpm_1ws3ez9._.js.map} +0 -0
  688. /package/.next/server/chunks/ssr/{node_modules__pnpm_0gp90ei._.js.map → node_modules__pnpm_1ydeqw6._.js.map} +0 -0
  689. /package/.next/server/chunks/ssr/{node_modules__pnpm_0jlzk5z._.js.map → node_modules__pnpm_1zme4rg._.js.map} +0 -0
  690. /package/.next/server/chunks/ssr/{node_modules__pnpm_1oaf50x._.js.map → node_modules__pnpm_1zum4yd._.js.map} +0 -0
  691. /package/.next/server/chunks/ssr/{node_modules__pnpm_0vuao3_._.js.map → node_modules__pnpm_2045l51._.js.map} +0 -0
  692. /package/.next/static/{qCiKQ9_g49vaoQ-Fewybk → 5hNes2Kijr5IvUPPw-ez9}/_buildManifest.js +0 -0
  693. /package/.next/static/{qCiKQ9_g49vaoQ-Fewybk → 5hNes2Kijr5IvUPPw-ez9}/_clientMiddlewareManifest.js +0 -0
  694. /package/.next/static/{qCiKQ9_g49vaoQ-Fewybk → 5hNes2Kijr5IvUPPw-ez9}/_ssgManifest.js +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/components/roadmap/RoadmapNodes.tsx","../../../../src/lib/roadmap-health.ts","../../../../src/components/roadmap/layout.ts","../../../../src/components/roadmap/timeline.ts"],"sourcesContent":["\"use client\"\n\nimport { Handle, Position, type Node, type NodeProps } from \"@xyflow/react\"\nimport { AlertTriangle, Check } from \"lucide-react\"\nimport { cn } from \"@/lib/utils\"\nimport type { RoadmapItem, RoadmapStatus, TaskStatus } from \"@/types\"\nimport type { DueState, TaskDueSummary } from \"@/lib/roadmap-health\"\nimport { formatDay } from \"./timeline\"\nimport { FEATURE_W, HORIZON_W } from \"./layout\"\nimport { AgentMark } from \"@/components/chat/AgentMark\"\nimport { useItemAgent } from \"@/context/ChatContext\"\n\nexport type RoadmapNodeData = {\n item: RoadmapItem\n progress?: { done: number; total: number } // derived, never persisted\n drift?: string[]\n dueState?: DueState | null\n taskDue?: TaskDueSummary | null\n taskDueSoon?: boolean\n taskStatuses?: TaskStatus[] // feature: linked tasks in order, cancelled/missing left out\n nextTaskId?: string | null // feature: what vibedoc_next_task would hand out\n chapter?: number // horizon: 1-based position on the spine\n epics?: { done: number; total: number } // horizon: child epics\n}\nexport type RoadmapNode = Node<RoadmapNodeData, \"horizon\" | \"feature\">\n\nconst SIDES = [Position.Top, Position.Right, Position.Bottom, Position.Left]\n\n/** One invisible source + target handle per side; edges pick `side` / `side-t`. */\nfunction Handles() {\n return (\n <>\n {SIDES.map((p) => (\n <Handle key={p} id={p} type=\"source\" position={p} isConnectable={false} className=\"opacity-0\" />\n ))}\n {SIDES.map((p) => (\n <Handle key={`${p}-t`} id={`${p}-t`} type=\"target\" position={p} isConnectable={false} className=\"opacity-0\" />\n ))}\n </>\n )\n}\n\nexport const STATUS_LABEL: Record<RoadmapStatus, string> = { \"in-progress\": \"Active\", paused: \"Paused\", done: \"Done\", planned: \"Planned\" }\n\n/** Roadmap status as a dot: live = accent with a pulse, done = teal, planned = hollow. */\nexport function StatusDot({ status, className }: { status: RoadmapStatus; className?: string }) {\n return (\n <span title={STATUS_LABEL[status]} aria-label={STATUS_LABEL[status]} className={cn(\"relative inline-flex h-2 w-2 shrink-0\", className)}>\n {status === \"in-progress\" && <span className=\"absolute inset-0 animate-ping rounded-full bg-accent/60\" />}\n <span\n className={cn(\n \"relative h-full w-full rounded-full\",\n status === \"done\" && \"bg-teal\",\n status === \"in-progress\" && \"bg-accent\",\n status === \"planned\" && \"border border-muted\",\n status === \"paused\" && \"bg-muted\",\n )}\n />\n </span>\n )\n}\n\nexport function StatusPill({ status }: { status: RoadmapStatus }) {\n return (\n <span\n className={cn(\n \"inline-flex items-center gap-1.5 rounded-full border px-2 py-0.5 font-mono text-[10px] uppercase tracking-wider\",\n status === \"done\" && \"border-teal/40 text-teal\",\n status === \"in-progress\" && \"border-accent/50 text-accent\",\n status === \"planned\" && \"border-dashed border-border2 text-muted\",\n status === \"paused\" && \"border-border2 text-muted\",\n )}\n >\n <StatusDot status={status} className=\"h-1.5 w-1.5\" />\n {STATUS_LABEL[status]}\n </span>\n )\n}\n\nexport const TASK_STATUS_BG: Record<TaskStatus, string> = {\n done: \"bg-teal\",\n \"in-progress\": \"bg-amber\",\n review: \"bg-accent\",\n blocked: \"bg-danger\",\n paused: \"bg-muted/60\",\n todo: \"bg-border2\",\n cancelled: \"bg-border\",\n}\n\n/** One segment per task, colored by its board status (same colors as the board). */\nexport function SegmentedProgress({ statuses, className }: { statuses?: TaskStatus[]; className?: string }) {\n if (!statuses?.length) return null\n const done = statuses.filter((s) => s === \"done\").length\n return (\n <div className={cn(\"flex h-1.5 min-w-0 flex-1 gap-0.5\", className)} title={`${done}/${statuses.length} tasks done`}>\n {statuses.map((s, i) => (\n <span key={i} className={cn(\"h-full flex-1 rounded-[1px]\", TASK_STATUS_BG[s])} />\n ))}\n </div>\n )\n}\n\n/** Small progress ring; color follows `className` (currentColor). */\nexport function ProgressRing({ value, total, className }: { value: number; total: number; className?: string }) {\n const r = 14\n const c = 2 * Math.PI * r\n const pct = total > 0 ? value / total : 0\n return (\n <span className={cn(\"relative inline-flex h-9 w-9 shrink-0 items-center justify-center\", className)} title={`${value}/${total} tasks done`}>\n <svg viewBox=\"0 0 36 36\" className=\"absolute inset-0 -rotate-90\">\n <circle cx=\"18\" cy=\"18\" r={r} fill=\"none\" strokeWidth=\"3\" className=\"stroke-border\" />\n <circle cx=\"18\" cy=\"18\" r={r} fill=\"none\" strokeWidth=\"3\" stroke=\"currentColor\" strokeLinecap=\"round\"\n strokeDasharray={c} strokeDashoffset={c * (1 - pct)} />\n </svg>\n <span className=\"font-mono text-[9px] text-txt\">{Math.round(pct * 100)}</span>\n </span>\n )\n}\n\nexport function Progress({ progress }: { progress?: RoadmapNodeData[\"progress\"] }) {\n if (!progress) return null\n const pct = Math.round((progress.done / progress.total) * 100)\n return (\n <div className=\"flex items-center gap-1.5\" title={`${progress.done}/${progress.total} done`}>\n <div className=\"h-1 flex-1 overflow-hidden rounded-full bg-border\">\n <div className=\"h-full rounded-full bg-teal\" style={{ width: `${pct}%` }} />\n </div>\n <span className=\"font-mono text-[10px] text-muted\">{progress.done}/{progress.total}</span>\n </div>\n )\n}\n\nexport function DueChip({ due, state }: { due: string | null; state?: DueState | null }) {\n if (!due) return null\n return (\n <span\n className={cn(\n \"font-mono text-[10px]\",\n state === \"overdue\" ? \"text-danger\" : state === \"soon\" ? \"text-amber\" : \"text-muted\",\n )}\n >\n Due {formatDay(due)}\n </span>\n )\n}\n\n/** The single most urgent date line for a card: overdue tasks, then the epic's own due, then the next task due. */\nfunction DueNote({ data }: { data: RoadmapNodeData }) {\n const s = data.taskDue\n if (s && s.overdue > 0) {\n return <span className=\"font-mono text-[10px] text-danger\">{s.overdue} {s.overdue === 1 ? \"task\" : \"tasks\"} overdue</span>\n }\n if (data.item.due) return <DueChip due={data.item.due} state={data.dueState} />\n if (s?.next) return <span className={cn(\"font-mono text-[10px]\", data.taskDueSoon ? \"text-amber\" : \"text-muted\")}>Next due {formatDay(s.next)}</span>\n return null\n}\n\nfunction DriftMark({ drift }: { drift?: string[] }) {\n if (!drift?.length) return null\n return (\n <span title={drift.join(\"\\n\")} className=\"absolute -left-2 -top-2 rounded-full bg-bg p-0.5 text-amber\">\n <AlertTriangle className=\"h-3.5 w-3.5\" />\n </span>\n )\n}\n\n/** A horizon is a chapter: big number, title, epic count, and a ring for task progress. */\nexport function HorizonNode({ data, selected }: NodeProps<RoadmapNode>) {\n const { item, progress, epics, chapter } = data\n const status = item.status\n return (\n <div\n style={{ width: HORIZON_W }}\n className={cn(\n \"relative flex items-center gap-3 rounded-xl border bg-surface px-3.5 py-3 transition-shadow duration-(--duration-base)\",\n status === \"in-progress\" && \"border-accent/60 shadow-[0_0_0_1px_rgb(var(--rgb-accent)/0.25),0_10px_30px_-12px_rgb(var(--rgb-accent)/0.6)]\",\n status === \"done\" && \"border-teal/40\",\n status === \"planned\" && \"border-dashed border-border2\",\n status === \"paused\" && \"border-border2 opacity-75\",\n selected && \"ring-2 ring-accent/60 ring-offset-2 ring-offset-bg\",\n )}\n >\n <Handles />\n <span\n className={cn(\n \"font-mono text-2xl font-semibold leading-none tabular-nums\",\n status === \"in-progress\" ? \"text-accent\" : status === \"done\" ? \"text-teal\" : \"text-muted\",\n )}\n >\n {chapter ? String(chapter).padStart(2, \"0\") : \"··\"}\n </span>\n <div className=\"min-w-0 flex-1\">\n <p className=\"text-xs font-semibold uppercase leading-snug tracking-wider text-txt\">{item.title}</p>\n <p className=\"mt-1 flex flex-wrap items-center gap-x-2 font-mono text-[10px] text-muted\">\n {epics && epics.total > 0 && <span>{epics.done}/{epics.total} epics</span>}\n <DueChip due={item.due} state={data.dueState} />\n </p>\n </div>\n {progress && (\n <ProgressRing value={progress.done} total={progress.total} className={status === \"done\" ? \"text-teal\" : \"text-accent\"} />\n )}\n <DriftMark drift={data.drift} />\n </div>\n )\n}\n\n/**\n * Three looks so the eye lands on live work: live = lit card with task segments and the next task,\n * done = one quiet line, planned = dashed outline. Height stays under ROW_H (layout.ts) so saved positions never overlap.\n */\nexport function FeatureNode({ data, selected }: NodeProps<RoadmapNode>) {\n const { item, taskStatuses, nextTaskId } = data\n const agent = useItemAgent({ kind: \"epic\", id: item.id })\n const drifting = !!data.drift?.length\n const ring = selected && \"ring-2 ring-accent/60 ring-offset-2 ring-offset-bg\"\n\n if (item.status === \"done\") {\n return (\n <div\n style={{ width: FEATURE_W }}\n className={cn(\"group relative flex items-center gap-2 rounded-lg border border-border bg-surface/60 px-3 py-2 hover:border-teal/40\", ring)}\n >\n <Handles />\n <Check className=\"h-3.5 w-3.5 shrink-0 text-teal\" strokeWidth={3} />\n <p className=\"min-w-0 flex-1 truncate text-[13px] text-muted group-hover:text-txt\" title={item.title}>{item.title}</p>\n {agent ? <AgentMark attach={{ kind: \"epic\", id: item.id }} />\n : data.progress && <span className=\"font-mono text-[10px] text-muted\">{data.progress.done}/{data.progress.total}</span>}\n <DriftMark drift={data.drift} />\n </div>\n )\n }\n\n const live = item.status === \"in-progress\"\n return (\n <div\n style={{ width: FEATURE_W }}\n className={cn(\n \"relative flex flex-col gap-1.5 rounded-lg border px-3 py-2.5 transition-shadow duration-(--duration-base)\",\n live\n ? \"border-accent/50 bg-surface shadow-[0_8px_24px_-10px_rgb(var(--rgb-accent)/0.55)]\"\n : \"border-dashed border-border2 bg-bg hover:border-muted\",\n item.status === \"paused\" && \"opacity-70\",\n ring,\n )}\n >\n <Handles />\n {live && <span className={cn(\"absolute -inset-y-px -left-px w-[3px] rounded-l-lg\", drifting ? \"bg-amber\" : \"bg-accent\")} />}\n <div className=\"flex items-center justify-between font-mono text-[10px]\">\n <span className=\"text-muted\">{item.id}</span>\n {agent ? (\n <AgentMark attach={{ kind: \"epic\", id: item.id }} />\n ) : live ? (\n <span className=\"flex items-center gap-1.5 uppercase tracking-wider text-accent\"><StatusDot status=\"in-progress\" className=\"h-1.5 w-1.5\" />Live</span>\n ) : (\n <span className=\"uppercase tracking-wider text-muted\">{item.tasks.length ? `${item.tasks.length} tasks` : \"No tasks yet\"}</span>\n )}\n </div>\n <p className={cn(\"line-clamp-2 text-[13px] leading-snug\", live ? \"font-medium text-txt\" : \"text-txt/80\")} title={item.title}>\n {item.title}\n </p>\n {taskStatuses && taskStatuses.length > 0 && (\n <div className=\"flex items-center gap-2\">\n <SegmentedProgress statuses={taskStatuses} />\n <span className=\"shrink-0 font-mono text-[10px] text-muted\">\n {live && nextTaskId ? <>next <span className=\"text-txt\">{nextTaskId}</span></> : `${taskStatuses.filter((s) => s === \"done\").length}/${taskStatuses.length}`}\n </span>\n </div>\n )}\n <DueNote data={data} />\n <DriftMark drift={data.drift} />\n </div>\n )\n}\n\nexport const nodeTypes = { horizon: HorizonNode, feature: FeatureNode }\n","/**\n * src/lib/roadmap-health.ts\n * Pure (no fs): roadmap progress + drift, shared by the Roadmap page and the MCP handler.\n * A feature's expected status comes from its linked tasks; a horizon's from its features.\n */\n\nimport type { RoadmapItem, RoadmapStatus, Task } from './core'\n\n/** What health needs from a task: status for progress, due for at-risk. */\nexport type TaskInfo = Pick<Task, 'status' | 'due'>\n\nexport interface RoadmapProgress { done: number; total: number }\n\nexport interface RoadmapDrift {\n id: string\n kind: 'status-mismatch' | 'missing-task' | 'overdue' | 'at-risk'\n message: string\n suggestedStatus?: RoadmapStatus\n}\n\nexport interface RoadmapHealth {\n progress: Record<string, RoadmapProgress>\n drift: RoadmapDrift[]\n}\n\nexport type DueState = 'overdue' | 'soon' | 'ok' | 'done'\n\nconst SOON_DAYS = 7\n\n/** Local calendar date \"YYYY-MM-DD\" (due dates are calendar dates, not instants). */\nexport function localToday(now = new Date()): string {\n const p = (n: number) => String(n).padStart(2, '0')\n return `${now.getFullYear()}-${p(now.getMonth() + 1)}-${p(now.getDate())}`\n}\n\nfunction daysBetween(from: string, to: string): number {\n const utc = (d: string) => Date.UTC(+d.slice(0, 4), +d.slice(5, 7) - 1, +d.slice(8, 10))\n return Math.round((utc(to) - utc(from)) / 86_400_000)\n}\n\nexport function dueState(due: string | null, status: RoadmapStatus, today: string): DueState | null {\n if (!due) return null\n if (status === 'done') return 'done'\n if (due < today) return 'overdue'\n return daysBetween(today, due) <= SOON_DAYS ? 'soon' : 'ok'\n}\n\ntype Started = 'done' | 'in-progress' | 'other'\n\nfunction expectedStatus(states: Started[]): RoadmapStatus {\n if (states.every(s => s === 'done')) return 'done'\n if (states.some(s => s !== 'other')) return 'in-progress'\n return 'planned'\n}\n\nexport interface TaskDueSummary { overdue: number; next: string | null }\n\n/** Open tasks' deadlines for a map node: how many are overdue, and the nearest upcoming due. */\nexport function taskDueSummary(taskIds: string[], tasks: Record<string, TaskInfo>, today: string): TaskDueSummary | null {\n const dues = taskIds\n .map(id => tasks[id])\n .filter(t => t && t.due && t.status !== 'done' && t.status !== 'cancelled')\n .map(t => t.due as string)\n if (!dues.length) return null\n const upcoming = dues.filter(d => d >= today).sort()\n return { overdue: dues.length - upcoming.length, next: upcoming[0] ?? null }\n}\n\n/** Why an unfinished epic may miss its date: overdue or blocked tasks, or due soon with nothing started. */\nfunction atRiskReasons(item: RoadmapItem, linked: string[], tasks: Record<string, TaskInfo>, today: string): string[] {\n const reasons: string[] = []\n for (const id of linked) {\n const t = tasks[id]\n if (t.status !== 'done' && t.due && t.due < today) reasons.push(`${id} overdue since ${t.due}`)\n if (t.status === 'blocked') reasons.push(`${id} blocked`)\n }\n const started = linked.some(id => ['done', 'in-progress', 'review'].includes(tasks[id].status))\n if (item.due && dueState(item.due, item.status, today) === 'soon' && !started) {\n reasons.push(`due ${item.due}, nothing started`)\n }\n return reasons\n}\n\nexport function roadmapHealth(\n items: RoadmapItem[], tasks: Record<string, TaskInfo>, today: string,\n): RoadmapHealth {\n const progress: Record<string, RoadmapProgress> = {}\n const drift: RoadmapDrift[] = []\n\n for (const item of items) {\n if (item.due && dueState(item.due, item.status, today) === 'overdue') {\n drift.push({ id: item.id, kind: 'overdue', message: `${item.id} \"${item.title}\" is overdue since ${item.due}` })\n }\n }\n const horizonIds = new Set(items.filter(i => i.parent === null).map(i => i.id))\n\n for (const item of items) {\n if (item.parent === null) continue\n const missing = item.tasks.filter(t => !(t in tasks))\n if (missing.length) {\n drift.push({ id: item.id, kind: 'missing-task', message: `${item.id} links unknown task ${missing.join(', ')}` })\n }\n // cancelled tasks don't count toward progress or expected status\n const linked = item.tasks.filter(t => t in tasks && tasks[t].status !== 'cancelled')\n // a paused epic is stopped on purpose: not at risk\n const risks = item.status === 'done' || item.status === 'paused' ? [] : atRiskReasons(item, linked, tasks, today)\n if (risks.length) {\n drift.push({ id: item.id, kind: 'at-risk', message: `${item.id} \"${item.title}\" at risk: ${risks.join('; ')}` })\n }\n if (!linked.length) continue\n const states: Started[] = linked.map(t =>\n tasks[t].status === 'done' ? 'done' : tasks[t].status === 'in-progress' || tasks[t].status === 'review' ? 'in-progress' : 'other')\n progress[item.id] = { done: states.filter(s => s === 'done').length, total: linked.length }\n const expected = expectedStatus(states)\n // paused stays paused until everything is done\n if (expected !== item.status && !(item.status === 'paused' && expected !== 'done')) {\n const open = linked.filter(t => tasks[t].status !== 'done')\n drift.push({\n id: item.id,\n kind: 'status-mismatch',\n message: expected === 'done'\n ? `${item.id} \"${item.title}\": all tasks done but status is ${item.status}`\n : `${item.id} \"${item.title}\" is ${item.status} but tasks ${open.join(', ')} are not done`,\n suggestedStatus: expected,\n })\n }\n }\n\n for (const h of items) {\n if (!horizonIds.has(h.id)) continue\n const kids = items.filter(i => i.parent === h.id)\n if (!kids.length) continue\n const states: Started[] = kids.map(k => k.status === 'done' ? 'done' : k.status === 'in-progress' ? 'in-progress' : 'other')\n // weight by tasks; an epic not broken down yet counts as one unit\n progress[h.id] = kids.reduce((sum, k) => {\n const p = progress[k.id] ?? { done: k.status === 'done' ? 1 : 0, total: 1 }\n return { done: sum.done + p.done, total: sum.total + p.total }\n }, { done: 0, total: 0 })\n const expected = expectedStatus(states)\n if (expected !== h.status && !(h.status === 'paused' && expected !== 'done')) {\n drift.push({\n id: h.id,\n kind: 'status-mismatch',\n message: `${h.id} \"${h.title}\" is ${h.status} but its features say ${expected}`,\n suggestedStatus: expected,\n })\n }\n }\n\n return { progress, drift }\n}\n","import type { RoadmapItem, RoadmapLayout } from \"@/types\"\n\nexport const HORIZON_W = 260\nexport const FEATURE_W = 220\nconst BRANCH_DX = 340\nconst ROW_H = 110\nconst HORIZON_GAP = 90\nconst COL_DX = FEATURE_W + 40\nconst MAX_ROWS_PER_SIDE = 6 // beyond this, a side gets a second (outer, half-row staggered) column\n\n/** Items that sit on the spine: real horizons plus orphans whose parent is not a horizon. */\nexport function spineItems(items: RoadmapItem[]): RoadmapItem[] {\n const horizonIds = new Set(items.filter((i) => i.parent === null).map((i) => i.id))\n return items\n .filter((i) => i.parent === null || !horizonIds.has(i.parent))\n .sort((a, b) => a.order - b.order)\n}\n\nexport function childrenOf(items: RoadmapItem[], parentId: string): RoadmapItem[] {\n return items.filter((i) => i.parent === parentId).sort((a, b) => a.order - b.order)\n}\n\n/**\n * Resolve a position for every item: saved (layout.json) wins, otherwise auto-place.\n * Horizons stack on x=0 by order; children alternate right/left of their parent's RESOLVED position.\n */\nexport function resolvePositions(items: RoadmapItem[], layout: RoadmapLayout): RoadmapLayout {\n const out: RoadmapLayout = {}\n let cursor = 0\n for (const h of spineItems(items)) {\n const hp = layout[h.id] ?? { x: 0, y: cursor }\n out[h.id] = hp\n const kids = h.parent === null ? childrenOf(items, h.id) : []\n const cols = Math.ceil(kids.length / 2) > MAX_ROWS_PER_SIDE ? 2 : 1\n kids.forEach((c, i) => {\n const side = i % 2 === 0 ? 1 : -1\n const k = Math.floor(i / 2) // index within its side\n const col = k % cols\n const row = Math.floor(k / cols)\n out[c.id] = layout[c.id] ?? {\n x: hp.x + (HORIZON_W - FEATURE_W) / 2 + side * (BRANCH_DX + col * COL_DX),\n // outer column sits half a row lower so its edges pass between inner nodes\n y: hp.y + row * ROW_H + col * (ROW_H / 2),\n }\n })\n const rows = Math.ceil(Math.ceil(kids.length / 2) / cols)\n cursor += Math.max(1, rows) * ROW_H + HORIZON_GAP\n }\n return out\n}\n\nconst ARRANGE_ROW_GAP = 14 // between stacked epics in a column\nconst ARRANGE_BLOCK_GAP = 120 // between one horizon's block and the next\n\n/**\n * \"Arrange\" (tidy the whole map): ignores saved positions. Each horizon sits on the spine with its epics\n * in one column per side, stacked by their real heights, in order, each epic going to the shorter side.\n * The column is centred on its horizon so branches fan out evenly and never cross a node; each horizon's\n * block starts below the previous block's lowest node.\n */\nexport function arrangePositions(items: RoadmapItem[], heightOf: (id: string) => number): RoadmapLayout {\n const out: RoadmapLayout = {}\n let top = 0\n for (const h of spineItems(items)) {\n const hh = heightOf(h.id)\n const kids = h.parent === null ? childrenOf(items, h.id) : []\n const sides: { id: string; y: number }[][] = [[], []] // right, left\n const used = [0, 0]\n for (const c of kids) {\n const s = used[0] <= used[1] ? 0 : 1\n sides[s].push({ id: c.id, y: used[s] })\n used[s] += heightOf(c.id) + ARRANGE_ROW_GAP\n }\n const colH = used.map((u) => Math.max(0, u - ARRANGE_ROW_GAP))\n // centre each column on the horizon, then shift the whole block down so its top is at `top`\n const centre = hh / 2\n const colTop = colH.map((c) => centre - c / 2)\n const shift = top - Math.min(0, ...colTop)\n out[h.id] = { x: 0, y: shift }\n sides.forEach((col, s) => {\n const x = (HORIZON_W - FEATURE_W) / 2 + (s === 0 ? 1 : -1) * BRANCH_DX\n for (const { id, y } of col) out[id] = { x, y: shift + colTop[s] + y }\n })\n top = shift + Math.max(hh, ...colTop.map((t, s) => t + colH[s])) + ARRANGE_BLOCK_GAP\n }\n return out\n}\n","import type { RoadmapItem } from \"@/types\"\nimport { dueState, type DueState } from \"@/lib/roadmap-health\"\nimport { childrenOf, spineItems } from \"./layout\"\n\nexport const MONTH_W = 160\nexport const LANE_ROW_H = 44\nconst LABEL_W = 180 // horizontal room a marker's label needs before the next one fits on the same row\nconst MIN_MONTHS = 6\n\nconst MONTHS = [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n\n// Dates are \"YYYY-MM-DD\" calendar dates — parsed by hand, never via new Date(string) (UTC shift).\nconst ymd = (d: string) => ({ y: +d.slice(0, 4), m: +d.slice(5, 7), day: +d.slice(8, 10) })\nconst daysIn = (y: number, m: number) => new Date(y, m, 0).getDate()\n\nexport function formatDay(d: string): string {\n const { m, day } = ymd(d)\n return `${day} ${MONTHS[m - 1]}`\n}\n\nexport interface TimelineMarker { item: RoadmapItem; x: number; row: number; state: DueState | null; horizon: boolean }\nexport interface TimelineLane { item: RoadmapItem; rows: number; markers: TimelineMarker[] }\nexport interface Timeline {\n months: { label: string; x: number }[]\n width: number\n todayX: number\n lanes: TimelineLane[]\n undated: RoadmapItem[]\n}\n\nexport function buildTimeline(items: RoadmapItem[], today: string): Timeline {\n const dues = items.map((i) => i.due).filter((d): d is string => !!d)\n const first = ymd([today, ...dues].sort()[0])\n const last = ymd([today, ...dues].sort().at(-1) ?? today)\n\n // pad one month each side, then stretch to a readable minimum\n const start = { y: first.y, m: first.m - 1 }\n const span = Math.max(MIN_MONTHS, (last.y - first.y) * 12 + (last.m - first.m) + 3)\n const months = Array.from({ length: span }, (_, i) => {\n const t = start.y * 12 + (start.m - 1) + i\n const y = Math.floor(t / 12)\n const m = (t % 12) + 1\n return { y, m, label: m === 1 || i === 0 ? `${MONTHS[m - 1]} ${y}` : MONTHS[m - 1], x: i * MONTH_W }\n })\n\n const xOf = (d: string) => {\n const { y, m, day } = ymd(d)\n const idx = (y - months[0].y) * 12 + (m - months[0].m)\n return idx * MONTH_W + ((day - 0.5) / daysIn(y, m)) * MONTH_W\n }\n\n const lanes = spineItems(items).map((h) => {\n const dated = [h, ...(h.parent === null ? childrenOf(items, h.id) : [])].filter((i) => i.due)\n const rowEnds: number[] = []\n const markers = dated\n .map((item) => ({ item, x: xOf(item.due as string), horizon: item.id === h.id }))\n .sort((a, b) => a.x - b.x)\n .map((mk) => {\n // greedy: first row whose last label ends before this marker\n let row = rowEnds.findIndex((end) => mk.x >= end)\n if (row === -1) row = rowEnds.push(0) - 1\n rowEnds[row] = mk.x + LABEL_W\n return { ...mk, row, state: dueState(mk.item.due, mk.item.status, today) }\n })\n return { item: h, rows: Math.max(1, rowEnds.length), markers }\n })\n\n return {\n months: months.map(({ label, x }) => ({ label, x })),\n width: span * MONTH_W,\n todayX: xOf(today),\n lanes,\n undated: items.filter((i) => !i.due && i.status !== \"done\"), // shipped work needs no date\n }\n}\n"],"names":["SOON_DAYS","localToday","now","Date","p","n","String","padStart","getFullYear","getMonth","getDate","daysBetween","from","to","utc","d","UTC","slice","Math","round","dueState","due","status","today","expectedStatus","states","every","s","some","taskDueSummary","taskIds","tasks","dues","map","id","filter","t","length","upcoming","sort","overdue","next","atRiskReasons","item","linked","reasons","push","started","includes","roadmapHealth","items","progress","drift","kind","message","title","horizonIds","Set","i","parent","missing","join","risks","done","total","expected","open","suggestedStatus","h","has","kids","k","reduce","sum"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- module.exports=[685698,429672,107742,598984,a=>{"use strict";var b=a.i(662145),c=a.i(174897),d=a.i(913975),e=a.i(544394),f=a.i(368114);function g(a){return Array.isArray(a)&&a.length>0&&a.every(a=>!!a&&"object"==typeof a&&"string"==typeof a.question&&"string"==typeof a.header&&Array.isArray(a.options)&&a.options.every(a=>!!a&&"object"==typeof a&&"string"==typeof a.label))}let h="\0other";function i(a,b){return["Answers:",...a.map((a,c)=>`- ${a.header}: ${b[c]}`)].join("\n")}a.s(["QuestionCard",0,function({set:a,disabled:d,onSubmit:e}){let[g,i]=(0,c.useState)(()=>a.questions.map(()=>[])),[j,k]=(0,c.useState)(()=>a.questions.map(()=>"")),l=!!a.answers,m=a.questions.map((a,b)=>{let c=a.options.map(a=>a.label).filter(a=>g[b].includes(a));return g[b].includes(h)&&j[b].trim()&&c.push(`Other: "${j[b].trim()}"`),c.join(", ")}),n=m.every(Boolean);return(0,b.jsxs)("div",{className:"my-2 rounded-md border border-border overflow-hidden","data-question-card":!0,children:[(0,b.jsxs)("div",{className:"flex items-center gap-2 px-2 py-1.5 bg-surface2 border-b border-border",children:[(0,b.jsx)("span",{className:"text-[10px] font-mono uppercase tracking-widest text-muted",children:"Questions"}),l&&(0,b.jsx)("span",{className:"ml-auto text-[10px] font-mono text-accent",children:"✓ Answered"})]}),(0,b.jsxs)("div",{className:"p-2 space-y-3",children:[a.questions.map((c,d)=>(0,b.jsxs)("fieldset",{disabled:l,className:"space-y-1",children:[(0,b.jsxs)("legend",{className:"mb-1",children:[(0,b.jsx)("span",{className:"text-[10px] font-mono px-1.5 py-0.5 rounded-sm bg-surface2 border border-border text-accent mr-1.5",children:c.header}),(0,b.jsx)("span",{className:"text-xs text-txt",children:c.question})]}),l?(0,b.jsx)("p",{className:"text-xs text-txt pl-1",children:a.answers?.[d]}):(0,b.jsxs)(b.Fragment,{children:[[...c.options,{label:"Other",value:h}].map(e=>{let h="value"in e?e.value:e.label,j=g[d].includes(h);return(0,b.jsxs)("label",{className:(0,f.cn)("flex gap-2 items-start rounded-sm px-1 py-0.5 cursor-pointer hover:bg-surface2",j&&"bg-surface2"),children:[(0,b.jsx)("input",{type:c.multiSelect?"checkbox":"radio",name:`${a.id}-${d}`,checked:j,onChange:()=>{var a;return a=c.multiSelect,void i(b=>b.map((b,c)=>c!==d?b:a?b.includes(h)?b.filter(a=>a!==h):[...b,h]:[h]))},className:"mt-0.5 accent-accent"}),(0,b.jsxs)("span",{className:"text-xs",children:[(0,b.jsx)("span",{className:"text-txt",children:e.label}),"description"in e&&e.description&&(0,b.jsx)("span",{className:"block text-muted",children:e.description})]})]},h)}),g[d].includes(h)&&(0,b.jsx)("input",{value:j[d],onChange:a=>k(b=>b.map((b,c)=>c===d?a.target.value:b)),placeholder:"Your answer","aria-label":`Other answer for ${c.header}`,className:"ml-6 w-[calc(100%-1.5rem)] rounded-sm bg-surface2 border border-border px-2 py-1 text-xs text-txt placeholder:text-muted focus:outline-hidden focus:border-accent"})]})]},d)),!l&&(0,b.jsx)("button",{onClick:()=>e(m),disabled:!n||d,className:"text-xs px-2 py-0.5 rounded-sm bg-accent/20 text-accent hover:bg-accent/30 disabled:opacity-50",children:"Submit"})]})]})},"formatAnswers",0,i,"isRenderableQuestions",0,g],429672);let j=a=>!!a&&"object"==typeof a&&!Array.isArray(a),k=a=>"string"==typeof a?a.trim():"";var l=a.i(525395);function m(a,b=Math.random()){return`c-${a.toString(36)}${b.toString(36).slice(2,6)}`}function n(a,b,c={}){var d;let e=c.now??new Date().toISOString();return[...a,{id:b,title:c.title??(c.attach?"epic"===(d=c.attach).kind?`Epic ${d.id}`:`Task ${d.id}`:"New chat"),messages:[],sessionId:null,busy:!1,notes:[],attach:c.attach??null,createdAt:e,updatedAt:e}]}function o(a,b,c){return a.map(a=>a.id===b?c(a):a)}let p={running:"Running","needs-answer":"Waiting for your answers",review:"Plan or edit to review",error:"Error",idle:"Idle"};function q(a){return a.messages.reduce((a,b)=>a+b.plans.filter(a=>"pending"===a.status).length+b.proposals.filter(a=>"pending"===a.status).length,0)}function r(a){if(a.busy)return"running";let b=a.messages[a.messages.length-1];if(b?.questions.some(a=>!a.answers))return"needs-answer";if(q(a))return"review";let c=a.messages.findLast(a=>"assistant"===a.role);return c?.error?"error":"idle"}function s(a,b){return!a.dismissed&&b-Date.parse(a.updatedAt)<864e5&&"error"===r(a)}let t=a=>"needs-answer"===a||"review"===a;function u(a,b,c={}){if((c.running??a.filter(a=>a.busy).length)>=4)return{refused:"Too many agents running (4). Stop or close a chat, or wait."};let d=a.find(a=>a.id===b);return!d||d.busy||c.newChat?{newChat:!0}:{chatId:d.id}}let v=a=>`${a.kind}:${a.id}`;function w(a){return a.trim().match(/^Break down epic (R\d+)/i)?.[1].toUpperCase()??null}function x(a,b){return a.filter(a=>{let c;return c=a.attach,!!c&&!!b&&c.kind===b.kind&&c.id===b.id}).sort((a,b)=>b.updatedAt.localeCompare(a.updatedAt))[0]}let y={running:3,"needs-answer":2,review:1};function z(a){let b={};for(let c of a){let a=r(c);if(!c.attach||"idle"===a||"error"===a)continue;let d=v(c.attach),e=b[d];(!e||y[a]>y[e.status])&&(b[d]={status:a,chatId:c.id})}return b}function A(a){return"epic"===a.kind?`[This chat is about epic ${a.id}. Read it with vibedoc_get_roadmap (and its tasks with vibedoc_get_task) before answering.]`:`[This chat is about task ${a.id}. Read it with vibedoc_get_task before answering.]`}function B(a,b){let c=[...a].sort((a,b)=>b.updatedAt.localeCompare(a.updatedAt)),d={needsYou:[],errors:[],running:[],recent:[]};for(let a of c){let c=r(a);t(c)?d.needsYou.push(a):void 0!==b&&s(a,b)?d.errors.push(a):"running"===c?d.running.push(a):d.recent.push(a)}return d}function C(a,b){let c=B(a,b);return[...c.needsYou,...c.errors]}function D(a,b){let c=a.findIndex(a=>a.id===b);return a[c+1]}function E(a,b=Date.now()){let c=B(a,b);return c.needsYou[0]??c.errors[0]??c.running[0]??c.recent[0]}function F(a){return a.messages.length?{...a,busy:!1}:null}function G(a){if(!a||"string"!=typeof a.id||!Array.isArray(a.messages))return null;let b=a.messages[a.messages.length-1],c=b?.role!=="assistant"||b.text||b.error||b.tools?.length||b.plans?.length||b.proposals?.length||b.questions?.length?a.messages:[...a.messages.slice(0,-1),{...b,error:"Interrupted: the page reloaded while the agent was working."}],d=a.updatedAt??a.createdAt??new Date(0).toISOString();return{...a,messages:c,busy:!1,notes:a.notes??[],attach:a.attach??null,createdAt:a.createdAt??d,updatedAt:d}}function H(a,b){return b.flatMap(b=>{let c=r(b);return t(c)&&a[b.id]!==c?[{chat:b,status:c}]:[]})}function I(a,b){let c=a.replace(/^\(\d+\) /,"");return b>0?`(${b}) ${c}`:c}function J(a){let b=w(a);if(b)return`Break down ${b}`;let c=a.trim().split("\n")[0];return c.length>40?`${c.slice(0,40).trimEnd()}…`:c}a.s(["MAX_RUNNING_CHATS",0,4,"STATUS_LABEL",0,p,"addChat",0,n,"ago",0,function(a,b){let c=Math.max(0,Math.floor((b-Date.parse(a))/6e4));return c<1?"now":c<60?`${c}m`:c<1440?`${Math.floor(c/60)}h`:`${Math.floor(c/1440)}d`},"attachContext",0,A,"attachKey",0,v,"attentionQueue",0,C,"chatFor",0,x,"chatStatus",0,r,"chatTitle",0,J,"defaultChat",0,E,"epicOf",0,w,"fromSaved",0,G,"groupChats",0,B,"isActionableError",0,s,"isWaiting",0,t,"itemAgents",0,z,"newChatId",0,m,"newlyWaiting",0,H,"nextInQueue",0,D,"patchChat",0,o,"pendingReviews",0,q,"routeAsk",0,u,"shellStatus",0,function(a,b){let c=r(a);return"error"!==c||s(a,b)?c:"idle"},"suggestions",0,function(a){return a?"epic"===a.kind?[`Break down epic ${a.id} into tasks.`,"Summarize this epic's progress.","What is at risk in this epic?"]:["Refine this task's spec.","Split this task into smaller tasks.","What blocks this task?"]:["What should I work on next?","Plan a roadmap for this project.","What is blocked right now?"]},"toSaved",0,F,"waitingTitle",0,I],107742);let K=(a,b="")=>({role:a,text:b,tools:[],proposals:[],plans:[],questions:[]}),L=(0,c.createContext)(null),M=(0,c.createContext)({});a.s(["ChatProvider",0,function({children:a}){let{rootParam:f,activeProject:h,selectedDoc:p}=(0,e.useApp)(),v=(0,d.usePathname)(),y=(0,d.useRouter)(),[B,N]=(0,c.useState)([]),[O,P]=(0,c.useState)(!1),[Q,R]=(0,c.useState)(null),[S,T]=(0,c.useState)(null),[U,V]=(0,c.useState)(null),W=(0,c.useRef)(new Map),X=(0,c.useRef)(new Set),Y=(0,c.useRef)({}),[Z,$]=(0,c.useState)(()=>Date.now());(0,c.useEffect)(()=>{let a=setInterval(()=>$(Date.now()),6e4);return()=>clearInterval(a)},[]);let _="/chat"===v,aa="/docs"===v?p?.path:void 0;(0,c.useEffect)(()=>{for(let a of W.current.values())a.abort();W.current.clear(),X.current.clear();let a=!1;return fetch(`/api/conversations${f}`).then(a=>a.ok?a.json():{chats:[]}).then(b=>{if(a)return;let c=(b.chats??[]).map(a=>G(a)).filter(a=>!!a);Y.current=Object.fromEntries(c.map(a=>[a.id,r(a)])),N(c),R(null),T(null),P(!0)}).catch(b=>{console.warn("[vibedoc] could not load chats:",b),a||(N([]),P(!0))}),()=>{a=!0}},[h,f]),(0,c.useEffect)(()=>{for(let a of[...X.current]){let b=B.find(b=>b.id===a);X.current.delete(a);let c=b&&F(b);c&&fetch(`/api/conversations${f}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({chat:c})}).catch(b=>console.warn(`[vibedoc] could not save chat ${a}:`,b))}},[B,f]);let ab=(0,c.useRef)({key:"{}",value:{}}),ac=(0,c.useMemo)(()=>{let a=z(B),b=JSON.stringify(a);return b!==ab.current.key&&(ab.current={key:b,value:a}),ab.current.value},[B]),ad=B.filter(a=>a.busy).length,ae=B.filter(a=>t(r(a))).length,af=B.filter(a=>s(a,Z)).length,ag=(0,c.useMemo)(()=>C(B,Z),[B,Z]);function ah(a){X.current.add(a)}function ai(a={}){a.keep||N(a=>a.filter(a=>a.id!==Q||a.messages.length>0)),R(null)}function aj(a){T(a),_?(R(null),y.replace(`/chat?id=${encodeURIComponent(a)}`,{scroll:!1})):R(a)}function ak(a=null){let b=m(Date.now());return N(c=>n(c,b,{attach:a})),b}function al(a,b){N(c=>o(c,a,a=>({...a,messages:[...a.messages.slice(0,-1),b(a.messages[a.messages.length-1])]})))}async function am(a,b){let c=b.trim(),d=B.find(b=>b.id===a);if(!c||d?.busy)return;"Notification"in window&&"default"===Notification.permission&&Notification.requestPermission().catch(()=>{});let e=!d?.messages.length,h=w(c),i=d?.attach??(h?{kind:"epic",id:h}:null);N(b=>o(b,a,a=>({...a,title:a.messages.length?a.title:J(c),attach:a.attach??i,busy:!0,dismissed:!1,notes:[],updatedAt:new Date().toISOString(),messages:[...a.messages,K("user",c),K("assistant")]}))),ah(a);let k=[...e&&d?.attach?[A(d.attach)]:[],...d?.notes.length?[`[${d.notes.join(" ")}]`]:[]],l=k.length?`${k.join("\n")}
1
+ module.exports=[685698,429672,107742,598984,a=>{"use strict";var b=a.i(662145),c=a.i(174897),d=a.i(913975),e=a.i(544394),f=a.i(368114);function g(a){return Array.isArray(a)&&a.length>0&&a.every(a=>!!a&&"object"==typeof a&&"string"==typeof a.question&&"string"==typeof a.header&&Array.isArray(a.options)&&a.options.every(a=>!!a&&"object"==typeof a&&"string"==typeof a.label))}let h="\0other";function i(a,b){return["Answers:",...a.map((a,c)=>`- ${a.header}: ${b[c]}`)].join("\n")}a.s(["QuestionCard",0,function({set:a,disabled:d,onSubmit:e}){let[g,i]=(0,c.useState)(()=>a.questions.map(()=>[])),[j,k]=(0,c.useState)(()=>a.questions.map(()=>"")),l=!!a.answers,m=a.questions.map((a,b)=>{let c=a.options.map(a=>a.label).filter(a=>g[b].includes(a));return g[b].includes(h)&&j[b].trim()&&c.push(`Other: "${j[b].trim()}"`),c.join(", ")}),n=m.every(Boolean);return(0,b.jsxs)("div",{className:"my-2 rounded-md border border-border overflow-hidden","data-question-card":!0,children:[(0,b.jsxs)("div",{className:"flex items-center gap-2 px-2 py-1.5 bg-surface2 border-b border-border",children:[(0,b.jsx)("span",{className:"text-[10px] font-mono uppercase tracking-widest text-muted",children:"Questions"}),l&&(0,b.jsx)("span",{className:"ml-auto text-[10px] font-mono text-accent",children:"✓ Answered"})]}),(0,b.jsxs)("div",{className:"p-2 space-y-3",children:[a.questions.map((c,d)=>(0,b.jsxs)("fieldset",{disabled:l,className:"space-y-1",children:[(0,b.jsxs)("legend",{className:"mb-1",children:[(0,b.jsx)("span",{className:"text-[10px] font-mono px-1.5 py-0.5 rounded-sm bg-surface2 border border-border text-accent mr-1.5",children:c.header}),(0,b.jsx)("span",{className:"text-xs text-txt",children:c.question})]}),l?(0,b.jsx)("p",{className:"text-xs text-txt pl-1",children:a.answers?.[d]}):(0,b.jsxs)(b.Fragment,{children:[[...c.options,{label:"Other",value:h}].map(e=>{let h="value"in e?e.value:e.label,j=g[d].includes(h);return(0,b.jsxs)("label",{className:(0,f.cn)("flex gap-2 items-start rounded-sm px-1 py-0.5 cursor-pointer hover:bg-surface2",j&&"bg-surface2"),children:[(0,b.jsx)("input",{type:c.multiSelect?"checkbox":"radio",name:`${a.id}-${d}`,checked:j,onChange:()=>{var a;return a=c.multiSelect,void i(b=>b.map((b,c)=>c!==d?b:a?b.includes(h)?b.filter(a=>a!==h):[...b,h]:[h]))},className:"mt-0.5 accent-accent"}),(0,b.jsxs)("span",{className:"text-xs",children:[(0,b.jsx)("span",{className:"text-txt",children:e.label}),"description"in e&&e.description&&(0,b.jsx)("span",{className:"block text-muted",children:e.description})]})]},h)}),g[d].includes(h)&&(0,b.jsx)("input",{value:j[d],onChange:a=>k(b=>b.map((b,c)=>c===d?a.target.value:b)),placeholder:"Your answer","aria-label":`Other answer for ${c.header}`,className:"ml-6 w-[calc(100%-1.5rem)] rounded-sm bg-surface2 border border-border px-2 py-1 text-xs text-txt placeholder:text-muted focus:outline-hidden focus:border-accent"})]})]},d)),!l&&(0,b.jsx)("button",{onClick:()=>e(m),disabled:!n||d,className:"text-xs px-2 py-0.5 rounded-sm bg-accent/20 text-accent hover:bg-accent/30 disabled:opacity-50",children:"Submit"})]})]})},"formatAnswers",0,i,"isRenderableQuestions",0,g],429672);let j=a=>!!a&&"object"==typeof a&&!Array.isArray(a),k=a=>"string"==typeof a?a.trim():"";var l=a.i(525395);function m(a,b=Math.random()){return`c-${a.toString(36)}${b.toString(36).slice(2,6)}`}function n(a,b,c={}){var d;let e=c.now??new Date().toISOString();return[...a,{id:b,title:c.title??(c.attach?"epic"===(d=c.attach).kind?`Epic ${d.id}`:`Task ${d.id}`:"New chat"),messages:[],sessionId:null,busy:!1,notes:[],attach:c.attach??null,createdAt:e,updatedAt:e}]}function o(a,b,c){return a.map(a=>a.id===b?c(a):a)}let p={running:"Running","needs-answer":"Waiting for your answers",review:"Plan or edit to review",error:"Error",idle:"Idle"};function q(a){return a.messages.reduce((a,b)=>a+b.plans.filter(a=>"pending"===a.status).length+b.proposals.filter(a=>"pending"===a.status).length,0)}function r(a){if(a.busy)return"running";let b=a.messages[a.messages.length-1];if(b?.questions.some(a=>!a.answers))return"needs-answer";if(q(a))return"review";let c=a.messages.findLast(a=>"assistant"===a.role);return c?.error?"error":"idle"}function s(a,b){return!a.dismissed&&b-Date.parse(a.updatedAt)<864e5&&"error"===r(a)}let t=a=>"needs-answer"===a||"review"===a;function u(a,b,c={}){let{target:d=null,newChat:e=!1}=c,f=a=>"idle"===r(a)||"error"===r(a);if(d){let b=x(a,d);if(b&&!f(b))return{open:b.id}}if((c.running??a.filter(a=>a.busy).length)>=4)return{refused:"Too many agents running (4). Stop or close a chat, or wait."};if(d){let b=x(a,d);return b?{chatId:b.id}:{newChat:!0,attach:d}}let g=a.find(a=>a.id===b);return g&&!e&&!g.attach&&f(g)?{chatId:g.id}:{newChat:!0,attach:null}}let v=a=>`${a.kind}:${a.id}`;function w(a){return a.trim().match(/^Break down epic (R\d+)/i)?.[1].toUpperCase()??null}function x(a,b){return a.filter(a=>{let c;return c=a.attach,!!c&&!!b&&c.kind===b.kind&&c.id===b.id}).sort((a,b)=>b.updatedAt.localeCompare(a.updatedAt))[0]}let y={running:3,"needs-answer":2,review:1};function z(a){let b={};for(let c of a){let a=r(c);if(!c.attach||"idle"===a||"error"===a)continue;let d=v(c.attach),e=b[d];(!e||y[a]>y[e.status])&&(b[d]={status:a,chatId:c.id})}return b}function A(a){return"epic"===a.kind?`[This chat is about epic ${a.id}. Read it with vibedoc_get_roadmap (and its tasks with vibedoc_get_task) before answering.]`:`[This chat is about task ${a.id}. Read it with vibedoc_get_task before answering.]`}function B(a,b){let c=[...a].sort((a,b)=>b.updatedAt.localeCompare(a.updatedAt)),d={needsYou:[],errors:[],running:[],recent:[]};for(let a of c){let c=r(a);t(c)?d.needsYou.push(a):void 0!==b&&s(a,b)?d.errors.push(a):"running"===c?d.running.push(a):d.recent.push(a)}return d}function C(a,b){let c=B(a,b);return[...c.needsYou,...c.errors]}function D(a,b){let c=a.findIndex(a=>a.id===b);return a[c+1]}function E(a,b=Date.now()){let c=B(a,b);return c.needsYou[0]??c.errors[0]??c.running[0]??c.recent[0]}function F(a){return a.messages.length?{...a,busy:!1}:null}function G(a){if(!a||"string"!=typeof a.id||!Array.isArray(a.messages))return null;let b=a.messages[a.messages.length-1],c=b?.role!=="assistant"||b.text||b.error||b.tools?.length||b.plans?.length||b.proposals?.length||b.questions?.length?a.messages:[...a.messages.slice(0,-1),{...b,error:"Interrupted: the page reloaded while the agent was working."}],d=a.updatedAt??a.createdAt??new Date(0).toISOString();return{...a,messages:c,busy:!1,notes:a.notes??[],attach:a.attach??null,createdAt:a.createdAt??d,updatedAt:d}}function H(a,b){return b.flatMap(b=>{let c=r(b);return t(c)&&a[b.id]!==c?[{chat:b,status:c}]:[]})}function I(a,b){let c=a.replace(/^\(\d+\) /,"");return b>0?`(${b}) ${c}`:c}function J(a){let b=w(a);if(b)return`Break down ${b}`;let c=a.trim().split("\n")[0];return c.length>40?`${c.slice(0,40).trimEnd()}…`:c}a.s(["MAX_RUNNING_CHATS",0,4,"STATUS_LABEL",0,p,"addChat",0,n,"ago",0,function(a,b){let c=Math.max(0,Math.floor((b-Date.parse(a))/6e4));return c<1?"now":c<60?`${c}m`:c<1440?`${Math.floor(c/60)}h`:`${Math.floor(c/1440)}d`},"attachContext",0,A,"attachKey",0,v,"attentionQueue",0,C,"chatFor",0,x,"chatStatus",0,r,"chatTitle",0,J,"defaultChat",0,E,"epicOf",0,w,"fromSaved",0,G,"groupChats",0,B,"isActionableError",0,s,"isWaiting",0,t,"itemAgents",0,z,"newChatId",0,m,"newlyWaiting",0,H,"nextInQueue",0,D,"patchChat",0,o,"pendingReviews",0,q,"routeAsk",0,u,"shellStatus",0,function(a,b){let c=r(a);return"error"!==c||s(a,b)?c:"idle"},"suggestions",0,function(a){return a?"epic"===a.kind?[`Break down epic ${a.id} into tasks.`,"Summarize this epic's progress.","What is at risk in this epic?"]:["Refine this task's spec.","Split this task into smaller tasks.","What blocks this task?"]:["What should I work on next?","Plan a roadmap for this project.","What is blocked right now?"]},"toSaved",0,F,"waitingTitle",0,I],107742);let K=(a,b="")=>({role:a,text:b,tools:[],proposals:[],plans:[],questions:[]}),L=(0,c.createContext)(null),M=(0,c.createContext)({});a.s(["ChatProvider",0,function({children:a}){let{rootParam:f,activeProject:h,selectedDoc:p}=(0,e.useApp)(),v=(0,d.usePathname)(),y=(0,d.useRouter)(),[B,N]=(0,c.useState)([]),[O,P]=(0,c.useState)(!1),[Q,R]=(0,c.useState)(null),[S,T]=(0,c.useState)(null),[U,V]=(0,c.useState)(null),W=(0,c.useRef)(new Map),X=(0,c.useRef)(new Set),Y=(0,c.useRef)({}),[Z,$]=(0,c.useState)(()=>Date.now());(0,c.useEffect)(()=>{let a=setInterval(()=>$(Date.now()),6e4);return()=>clearInterval(a)},[]);let _="/chat"===v,aa="/docs"===v?p?.path:void 0;(0,c.useEffect)(()=>{for(let a of W.current.values())a.abort();W.current.clear(),X.current.clear();let a=!1;return fetch(`/api/conversations${f}`).then(a=>a.ok?a.json():{chats:[]}).then(b=>{if(a)return;let c=(b.chats??[]).map(a=>G(a)).filter(a=>!!a);Y.current=Object.fromEntries(c.map(a=>[a.id,r(a)])),N(c),R(null),T(null),P(!0)}).catch(b=>{console.warn("[vibedoc] could not load chats:",b),a||(N([]),P(!0))}),()=>{a=!0}},[h,f]),(0,c.useEffect)(()=>{for(let a of[...X.current]){let b=B.find(b=>b.id===a);X.current.delete(a);let c=b&&F(b);c&&fetch(`/api/conversations${f}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({chat:c})}).catch(b=>console.warn(`[vibedoc] could not save chat ${a}:`,b))}},[B,f]);let ab=(0,c.useRef)({key:"{}",value:{}}),ac=(0,c.useMemo)(()=>{let a=z(B),b=JSON.stringify(a);return b!==ab.current.key&&(ab.current={key:b,value:a}),ab.current.value},[B]),ad=B.filter(a=>a.busy).length,ae=B.filter(a=>t(r(a))).length,af=B.filter(a=>s(a,Z)).length,ag=(0,c.useMemo)(()=>C(B,Z),[B,Z]);function ah(a){X.current.add(a)}function ai(a={}){a.keep||N(a=>a.filter(a=>a.id!==Q||a.messages.length>0)),R(null)}function aj(a){T(a),_?(R(null),y.replace(`/chat?id=${encodeURIComponent(a)}`,{scroll:!1})):R(a)}function ak(a=null){let b=m(Date.now());return N(c=>n(c,b,{attach:a})),b}function al(a,b){N(c=>o(c,a,a=>({...a,messages:[...a.messages.slice(0,-1),b(a.messages[a.messages.length-1])]})))}async function am(a,b){let c=b.trim(),d=B.find(b=>b.id===a);if(!c||d?.busy)return;"Notification"in window&&"default"===Notification.permission&&Notification.requestPermission().catch(()=>{});let e=!d?.messages.length,h=w(c),i=d?.attach??(h?{kind:"epic",id:h}:null);N(b=>o(b,a,a=>({...a,title:a.messages.length?a.title:J(c),attach:a.attach??i,busy:!0,dismissed:!1,notes:[],updatedAt:new Date().toISOString(),messages:[...a.messages,K("user",c),K("assistant")]}))),ah(a);let k=[...e&&d?.attach?[A(d.attach)]:[],...d?.notes.length?[`[${d.notes.join(" ")}]`]:[]],l=k.length?`${k.join("\n")}
2
2
 
3
- ${c}`:c,m=new AbortController;W.current.set(a,m);try{let b=await fetch(`/api/chat${f}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({message:l,sessionId:d?.sessionId??null,docPath:aa}),signal:m.signal});if(!b.ok||!b.body){let a=await b.json().catch(()=>null);throw Error(a?.error??`Request failed (${b.status})`)}let c=b.body.getReader(),e=new TextDecoder,h="";for(;;){let{done:b,value:d}=await c.read();if(b)break;let f=(h+=e.decode(d,{stream:!0})).split("\n");for(let b of(h=f.pop()??"",f))if(b.trim())try{!function(a,b){if(b.session_id&&N(c=>o(c,a,a=>a.sessionId===b.session_id?a:{...a,sessionId:b.session_id})),"stream_event"===b.type){let c=b.event;c?.type==="message_start"?al(a,a=>a.text&&!a.text.endsWith("\n\n")?{...a,text:a.text+"\n\n"}:a):c?.type==="content_block_delta"&&c.delta?.type==="text_delta"&&al(a,a=>({...a,text:a.text+c.delta.text}))}else if("assistant"===b.type){let c=(b.message?.content??[]).filter(a=>"tool_use"===a.type),d=c.filter(a=>a.name.endsWith("vibedoc_propose_edit")&&"string"==typeof a.input?.path&&Array.isArray(a.input?.edits)).map(a=>({id:a.id,path:a.input.path,edits:a.input.edits,summary:"string"==typeof a.input.summary?a.input.summary:void 0,status:"pending"})),e=c.filter(a=>a.name.endsWith("vibedoc_propose_plan")).flatMap(a=>{let b=function(a){if(!j(a))return null;let b=(a,b)=>Array.isArray(a)&&a.every(a=>j(a)&&b.every(b=>"string"==typeof a[b])&&(void 0===a.dependsOn||Array.isArray(a.dependsOn)));if("breakdown"===a.kind){let c=void 0===a.epic||"string"==typeof a.epic,d=void 0===a.newEpic||j(a.newEpic)&&"string"==typeof a.newEpic.title&&"string"==typeof a.newEpic.parent;return c&&d&&b(a.tasks,["key","title"])&&a.tasks.length>0?a:null}if("roadmap"===a.kind){let c=a.horizons??[],d=a.epics??[];return b(c,["key","title"])&&b(d,["key","title","parent"])?{kind:"roadmap",horizons:c,epics:d}:null}return null}(a.input?.plan);return b?[{id:a.id,plan:b,status:"pending"}]:[]}),f=c.filter(a=>a.name.endsWith("vibedoc_ask_questions")&&g(a.input?.questions)).map(a=>({id:a.id,questions:a.input.questions})),h=["vibedoc_propose_edit","vibedoc_propose_plan","vibedoc_ask_questions"],i=c.filter(a=>!h.some(b=>a.name.endsWith(b))).map(a=>a.name.replace(/^mcp__vibedoc__vibedoc_/,""));(i.length||d.length||e.length||f.length)&&al(a,a=>({...a,tools:[...a.tools,...i],proposals:[...a.proposals,...d],plans:[...a.plans,...e],questions:[...a.questions,...f]}))}else if("user"===b.type){let c=new Set((b.message?.content??[]).filter(a=>"tool_result"===a.type&&a.is_error).map(a=>a.tool_use_id));c.size&&al(a,a=>({...a,proposals:a.proposals.filter(a=>!c.has(a.id)),plans:a.plans.filter(a=>!c.has(a.id)),questions:a.questions.filter(a=>!c.has(a.id))}))}else"result"===b.type&&b.is_error?al(a,a=>({...a,error:b.result??b.subtype??"Agent error"})):"error"===b.type&&al(a,a=>({...a,error:b.message}))}(a,JSON.parse(b))}catch{}}}catch(b){m.signal.aborted?al(a,a=>a.text||a.error?a:{...a,error:"Stopped."}):al(a,a=>({...a,error:b.message}))}finally{W.current.get(a)===m&&(W.current.delete(a),ah(a)),N(b=>o(b,a,a=>({...a,busy:!1,updatedAt:new Date().toISOString()})))}}function an(a){W.current.get(a)?.abort()}function ao(a,b,c){N(d=>o(d,a,a=>({...a,notes:c?[...a.notes,c]:a.notes,messages:a.messages.map(b)}))),ah(a)}return(0,c.useEffect)(()=>{document.title=I(document.title,ag.length)},[ag.length,v]),(0,c.useEffect)(()=>{let a=H(Y.current,B);if(Y.current=Object.fromEntries(B.map(a=>[a.id,r(a)])),a.length&&document.hidden&&"Notification"in window&&"granted"===Notification.permission)for(let{chat:b,status:c}of a){let a=new Notification("needs-answer"===c?"Agent needs your answer":"Plan ready to review",{body:b.title,tag:b.id});a.onclick=()=>{window.focus(),(0,l.openAgentChat)(b.id),a.close()}}},[B]),(0,c.useEffect)(()=>{function a(a){let{message:b,newChat:c}=a.detail??{};if(!b)return;let d=u(B,S,{newChat:c,running:W.current.size});if("refused"in d)return V(d.refused);V(null);let e=w(b),f="chatId"in d?d.chatId:ak(e?{kind:"epic",id:e}:null);am(f,b),c||aj(f)}function b(a){let b=a.detail?.chatId;b&&B.some(a=>a.id===b)&&aj(b)}return window.addEventListener(l.ASK_AGENT_EVENT,a),window.addEventListener(l.OPEN_CHAT_EVENT,b),()=>{window.removeEventListener(l.ASK_AGENT_EVENT,a),window.removeEventListener(l.OPEN_CHAT_EVENT,b)}}),(0,b.jsx)(L.Provider,{value:{chats:B,loaded:O,modalId:Q,closeModal:ai,show:aj,showDefault:function(){let a=D(ag,Q??(_?S:null));if(a)return aj(a.id);if(Q)return ai();let b=E(B,Z);aj(b?b.id:ak())},showAbout:function(a){let b=x(B,a);aj(b?b.id:ak(a))},create:ak,send:am,stop:an,dismiss:function(a){N(b=>o(b,a,a=>({...a,dismissed:!0}))),ah(a)},remove:function(a){let b=B.find(b=>b.id===a),c=b?q(b):0;return(!c||!!window.confirm(`Discard ${c} unreviewed proposal${1===c?"":"s"}?`))&&(an(a),W.current.delete(a),X.current.delete(a),N(b=>b.filter(b=>b.id!==a)),Q===a&&R(null),S===a&&T(null),fetch(`/api/conversations${f}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({delete:a})}).catch(b=>console.warn(`[vibedoc] could not delete chat ${a}:`,b)),!0)},resolveProposal:function(a,b,c,d){ao(a,a=>({...a,proposals:a.proposals.map(a=>a.id===b?{...a,status:d}:a)}),`User ${d} your proposed edit to ${c}.`)},resolvePlan:function(a,b,c,d,e){var f;let g="breakdown"===b.plan.kind?k((f=b.plan).epic)?k(f.epic).toUpperCase():f.newEpic?`new epic "${k(f.newEpic.title)}"`:"no epic":"the roadmap";ao(a,a=>({...a,plans:a.plans.map(a=>a.id===b.id?{...a,status:c,created:d}:a)}),"accepted"===c?`User accepted plan for ${g}: created ${d.map(a=>a.id).join(", ")}${e.length?` (unchecked: ${e.join(", ")})`:""}.`:`User rejected the plan for ${g}.`)},answerQuestions:function(a,b,c){B.find(b=>b.id===a)?.busy||(ao(a,a=>({...a,questions:a.questions.map(a=>a.id===b.id?{...a,answers:c}:a)})),am(a,i(b.questions,c)))},agents:ac,runningCount:ad,waitingCount:ae,errorCount:af,queue:ag,now:Z,notice:U,dismissNotice:()=>V(null)},children:(0,b.jsx)(M.Provider,{value:ac,children:a})})},"useChats",0,function(){let a=(0,c.useContext)(L);if(!a)throw Error("useChats() must be used inside <ChatProvider>");return a},"useItemAgent",0,function(a){return(0,c.useContext)(M)[v(a)]}],685698);var N=a.i(108280),O=a.i(899593),P=a.i(256857);let Q={name:"square-check",size:24,node:[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"m16 9-5.5 5.5L8 12",key:"xofnsj"}]],aliases:["check-square-2"]};Q.node;let R=(0,P.default)(Q);a.s(["AttachLabel",0,function({attach:a,className:c}){let d="epic"===a.kind?O.Map:R;return(0,b.jsxs)("span",{className:(0,f.cn)("inline-flex items-center gap-1 font-mono text-[10px] leading-none",c),children:[(0,b.jsx)(d,{className:"size-3"}),a.id]})},"StatusMarker",0,function({status:a,showIdle:c=!1,label:d,className:e}){if("idle"===a&&!c)return null;let g=d??p[a];return(0,b.jsx)("span",{role:"img","aria-label":g,title:g,className:(0,f.cn)("inline-flex size-3 shrink-0 items-center justify-center",e),children:"running"===a?(0,b.jsx)(N.Loader2,{className:"size-3 animate-spin text-accent"}):(0,b.jsx)("span",{className:(0,f.cn)("size-1.5","review"===a?"size-2 rotate-45 rounded-[1px] bg-accent animate-pulse-dot":"rounded-full","needs-answer"===a&&"bg-amber animate-pulse-dot","error"===a&&"bg-danger","idle"===a&&"border border-muted/60")})})},"attachHref",0,function(a){return"epic"===a.kind?`/roadmap?item=${a.id}`:`/board?task=${a.id}`}],598984)}];
3
+ ${c}`:c,m=new AbortController;W.current.set(a,m);try{let b=await fetch(`/api/chat${f}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({message:l,sessionId:d?.sessionId??null,docPath:aa,conversationId:a}),signal:m.signal});if(!b.ok||!b.body){let a=await b.json().catch(()=>null);throw Error(a?.error??`Request failed (${b.status})`)}let c=b.body.getReader(),e=new TextDecoder,h="";for(;;){let{done:b,value:d}=await c.read();if(b)break;let f=(h+=e.decode(d,{stream:!0})).split("\n");for(let b of(h=f.pop()??"",f))if(b.trim())try{!function(a,b){if(b.session_id&&N(c=>o(c,a,a=>a.sessionId===b.session_id?a:{...a,sessionId:b.session_id})),"stream_event"===b.type){let c=b.event;c?.type==="message_start"?al(a,a=>a.text&&!a.text.endsWith("\n\n")?{...a,text:a.text+"\n\n"}:a):c?.type==="content_block_delta"&&c.delta?.type==="text_delta"&&al(a,a=>({...a,text:a.text+c.delta.text}))}else if("assistant"===b.type){let c=(b.message?.content??[]).filter(a=>"tool_use"===a.type),d=c.filter(a=>a.name.endsWith("vibedoc_propose_edit")&&"string"==typeof a.input?.path&&Array.isArray(a.input?.edits)).map(a=>({id:a.id,path:a.input.path,edits:a.input.edits,summary:"string"==typeof a.input.summary?a.input.summary:void 0,status:"pending"})),e=c.filter(a=>a.name.endsWith("vibedoc_propose_plan")).flatMap(a=>{let b=function(a){if(!j(a))return null;let b=(a,b)=>Array.isArray(a)&&a.every(a=>j(a)&&b.every(b=>"string"==typeof a[b])&&(void 0===a.dependsOn||Array.isArray(a.dependsOn)));if("breakdown"===a.kind){let c=void 0===a.epic||"string"==typeof a.epic,d=void 0===a.newEpic||j(a.newEpic)&&"string"==typeof a.newEpic.title&&"string"==typeof a.newEpic.parent;return c&&d&&b(a.tasks,["key","title"])&&a.tasks.length>0?a:null}if("roadmap"===a.kind){let c=a.horizons??[],d=a.epics??[];return b(c,["key","title"])&&b(d,["key","title","parent"])?{kind:"roadmap",horizons:c,epics:d}:null}return null}(a.input?.plan);return b?[{id:a.id,plan:b,status:"pending"}]:[]}),f=c.filter(a=>a.name.endsWith("vibedoc_ask_questions")&&g(a.input?.questions)).map(a=>({id:a.id,questions:a.input.questions})),h=["vibedoc_propose_edit","vibedoc_propose_plan","vibedoc_ask_questions"],i=c.filter(a=>!h.some(b=>a.name.endsWith(b))).map(a=>a.name.replace(/^mcp__vibedoc__vibedoc_/,""));(i.length||d.length||e.length||f.length)&&al(a,a=>({...a,tools:[...a.tools,...i],proposals:[...a.proposals,...d],plans:[...a.plans,...e],questions:[...a.questions,...f]}))}else if("user"===b.type){let c=new Set((b.message?.content??[]).filter(a=>"tool_result"===a.type&&a.is_error).map(a=>a.tool_use_id));c.size&&al(a,a=>({...a,proposals:a.proposals.filter(a=>!c.has(a.id)),plans:a.plans.filter(a=>!c.has(a.id)),questions:a.questions.filter(a=>!c.has(a.id))}))}else"result"===b.type&&b.is_error?al(a,a=>({...a,error:b.result??b.subtype??"Agent error"})):"error"===b.type&&al(a,a=>({...a,error:b.message}))}(a,JSON.parse(b))}catch{}}}catch(b){m.signal.aborted?al(a,a=>a.text||a.error?a:{...a,error:"Stopped."}):al(a,a=>({...a,error:b.message}))}finally{W.current.get(a)===m&&(W.current.delete(a),ah(a)),N(b=>o(b,a,a=>({...a,busy:!1,updatedAt:new Date().toISOString()})))}}function an(a){W.current.get(a)?.abort()}function ao(a,b,c){N(d=>o(d,a,a=>({...a,notes:c?[...a.notes,c]:a.notes,messages:a.messages.map(b)}))),ah(a)}return(0,c.useEffect)(()=>{document.title=I(document.title,ag.length)},[ag.length,v]),(0,c.useEffect)(()=>{let a=H(Y.current,B);if(Y.current=Object.fromEntries(B.map(a=>[a.id,r(a)])),a.length&&document.hidden&&"Notification"in window&&"granted"===Notification.permission)for(let{chat:b,status:c}of a){let a=new Notification("needs-answer"===c?"Agent needs your answer":"Plan ready to review",{body:b.title,tag:b.id});a.onclick=()=>{window.focus(),(0,l.openAgentChat)(b.id),a.close()}}},[B]),(0,c.useEffect)(()=>{function a(a){let{message:b,newChat:c}=a.detail??{};if(!b)return;let d=w(b),e=u(B,S,{target:d?{kind:"epic",id:d}:null,newChat:c,running:W.current.size});if("refused"in e)return V(e.refused);if(V(null),"open"in e)return c?void 0:aj(e.open);let f="chatId"in e?e.chatId:ak(e.attach);am(f,b),c||aj(f)}function b(a){let b=a.detail?.chatId;b&&B.some(a=>a.id===b)&&aj(b)}return window.addEventListener(l.ASK_AGENT_EVENT,a),window.addEventListener(l.OPEN_CHAT_EVENT,b),()=>{window.removeEventListener(l.ASK_AGENT_EVENT,a),window.removeEventListener(l.OPEN_CHAT_EVENT,b)}}),(0,b.jsx)(L.Provider,{value:{chats:B,loaded:O,modalId:Q,closeModal:ai,show:aj,showDefault:function(){let a=D(ag,Q??(_?S:null));if(a)return aj(a.id);if(Q)return ai();let b=E(B,Z);aj(b?b.id:ak())},showAbout:function(a){let b=x(B,a);aj(b?b.id:ak(a))},create:ak,send:am,stop:an,dismiss:function(a){N(b=>o(b,a,a=>({...a,dismissed:!0}))),ah(a)},remove:function(a){let b=B.find(b=>b.id===a),c=b?q(b):0;return(!c||!!window.confirm(`Discard ${c} unreviewed proposal${1===c?"":"s"}?`))&&(an(a),W.current.delete(a),X.current.delete(a),N(b=>b.filter(b=>b.id!==a)),Q===a&&R(null),S===a&&T(null),fetch(`/api/conversations${f}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({delete:a})}).catch(b=>console.warn(`[vibedoc] could not delete chat ${a}:`,b)),!0)},resolveProposal:function(a,b,c,d){ao(a,a=>({...a,proposals:a.proposals.map(a=>a.id===b?{...a,status:d}:a)}),`User ${d} your proposed edit to ${c}.`)},resolvePlan:function(a,b,c,d,e){var f;let g="breakdown"===b.plan.kind?k((f=b.plan).epic)?k(f.epic).toUpperCase():f.newEpic?`new epic "${k(f.newEpic.title)}"`:"no epic":"the roadmap";ao(a,a=>({...a,plans:a.plans.map(a=>a.id===b.id?{...a,status:c,created:d}:a)}),"accepted"===c?`User accepted plan for ${g}: created ${d.map(a=>a.id).join(", ")}${e.length?` (unchecked: ${e.join(", ")})`:""}.`:`User rejected the plan for ${g}.`)},answerQuestions:function(a,b,c){B.find(b=>b.id===a)?.busy||(ao(a,a=>({...a,questions:a.questions.map(a=>a.id===b.id?{...a,answers:c}:a)})),am(a,i(b.questions,c)))},agents:ac,runningCount:ad,waitingCount:ae,errorCount:af,queue:ag,now:Z,notice:U,dismissNotice:()=>V(null)},children:(0,b.jsx)(M.Provider,{value:ac,children:a})})},"useChats",0,function(){let a=(0,c.useContext)(L);if(!a)throw Error("useChats() must be used inside <ChatProvider>");return a},"useItemAgent",0,function(a){return(0,c.useContext)(M)[v(a)]}],685698);var N=a.i(108280),O=a.i(899593),P=a.i(256857);let Q={name:"square-check",size:24,node:[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"m16 9-5.5 5.5L8 12",key:"xofnsj"}]],aliases:["check-square-2"]};Q.node;let R=(0,P.default)(Q);a.s(["AttachLabel",0,function({attach:a,className:c}){let d="epic"===a.kind?O.Map:R;return(0,b.jsxs)("span",{className:(0,f.cn)("inline-flex items-center gap-1 font-mono text-[10px] leading-none",c),children:[(0,b.jsx)(d,{className:"size-3"}),a.id]})},"StatusMarker",0,function({status:a,showIdle:c=!1,label:d,className:e}){if("idle"===a&&!c)return null;let g=d??p[a];return(0,b.jsx)("span",{role:"img","aria-label":g,title:g,className:(0,f.cn)("inline-flex size-3 shrink-0 items-center justify-center",e),children:"running"===a?(0,b.jsx)(N.Loader2,{className:"size-3 animate-spin text-accent"}):(0,b.jsx)("span",{className:(0,f.cn)("size-1.5","review"===a?"size-2 rotate-45 rounded-[1px] bg-accent animate-pulse-dot":"rounded-full","needs-answer"===a&&"bg-amber animate-pulse-dot","error"===a&&"bg-danger","idle"===a&&"border border-muted/60")})})},"attachHref",0,function(a){return"epic"===a.kind?`/roadmap?item=${a.id}`:`/board?task=${a.id}`}],598984)}];
4
4
 
5
5
  //# sourceMappingURL=src_context_ChatContext_tsx_0lowp8p._.js.map