vibedoc 1.12.0 → 1.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (800) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-path-routes-manifest.json +3 -1
  3. package/.next/build-manifest.json +3 -3
  4. package/.next/prerender-manifest.json +59 -3
  5. package/.next/routes-manifest.json +12 -0
  6. package/.next/server/app/(app)/activity/page.js.nft.json +1 -1
  7. package/.next/server/app/(app)/activity/page_client-reference-manifest.js +1 -1
  8. package/.next/server/app/(app)/board/page.js.nft.json +1 -1
  9. package/.next/server/app/(app)/board/page_client-reference-manifest.js +1 -1
  10. package/.next/server/app/(app)/chat/page.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)/getting-started/page/app-paths-manifest.json +3 -0
  17. package/.next/server/app/(app)/getting-started/page/build-manifest.json +20 -0
  18. package/.next/server/app/(app)/getting-started/page/next-font-manifest.json +11 -0
  19. package/.next/server/app/(app)/getting-started/page/react-loadable-manifest.json +1 -0
  20. package/.next/server/app/(app)/getting-started/page/server-reference-manifest.json +4 -0
  21. package/.next/server/app/(app)/getting-started/page.js +15 -0
  22. package/.next/server/app/(app)/getting-started/page.js.map +5 -0
  23. package/.next/server/app/(app)/getting-started/page.js.nft.json +1 -0
  24. package/.next/server/app/(app)/getting-started/page_client-reference-manifest.js +3 -0
  25. package/.next/server/app/(app)/graph/page.js.nft.json +1 -1
  26. package/.next/server/app/(app)/graph/page_client-reference-manifest.js +1 -1
  27. package/.next/server/app/(app)/manual-tests/page.js.nft.json +1 -1
  28. package/.next/server/app/(app)/manual-tests/page_client-reference-manifest.js +1 -1
  29. package/.next/server/app/(app)/memory/page.js.nft.json +1 -1
  30. package/.next/server/app/(app)/memory/page_client-reference-manifest.js +1 -1
  31. package/.next/server/app/(app)/roadmap/page.js.nft.json +1 -1
  32. package/.next/server/app/(app)/roadmap/page_client-reference-manifest.js +1 -1
  33. package/.next/server/app/(app)/settings/page.js.nft.json +1 -1
  34. package/.next/server/app/(app)/settings/page_client-reference-manifest.js +1 -1
  35. package/.next/server/app/(app)/setup/page.js.nft.json +1 -1
  36. package/.next/server/app/(app)/setup/page_client-reference-manifest.js +1 -1
  37. package/.next/server/app/_global-error/page.js.nft.json +1 -1
  38. package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  39. package/.next/server/app/_global-error.html +1 -1
  40. package/.next/server/app/_global-error.rsc +1 -1
  41. package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  42. package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  43. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  44. package/.next/server/app/_not-found/page.js.nft.json +1 -1
  45. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  46. package/.next/server/app/_not-found.html +1 -1
  47. package/.next/server/app/_not-found.rsc +2 -2
  48. package/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
  49. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
  50. package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  51. package/.next/server/app/activity.html +1 -1
  52. package/.next/server/app/activity.rsc +7 -7
  53. package/.next/server/app/activity.segments/!KGFwcCk/activity/__PAGE__.segment.rsc +5 -5
  54. package/.next/server/app/activity.segments/_full.segment.rsc +7 -7
  55. package/.next/server/app/activity.segments/_tree.segment.rsc +2 -2
  56. package/.next/server/app/api/activity/route.js +2 -3
  57. package/.next/server/app/api/activity/route.js.nft.json +1 -1
  58. package/.next/server/app/api/chat/route.js +2 -2
  59. package/.next/server/app/api/chat/route.js.nft.json +1 -1
  60. package/.next/server/app/api/context/route.js +2 -3
  61. package/.next/server/app/api/context/route.js.nft.json +1 -1
  62. package/.next/server/app/api/conversations/route.js +3 -4
  63. package/.next/server/app/api/conversations/route.js.nft.json +1 -1
  64. package/.next/server/app/api/decisions/route.js +2 -3
  65. package/.next/server/app/api/decisions/route.js.nft.json +1 -1
  66. package/.next/server/app/api/docs/graph/route.js +2 -4
  67. package/.next/server/app/api/docs/graph/route.js.nft.json +1 -1
  68. package/.next/server/app/api/docs/links/route.js +2 -4
  69. package/.next/server/app/api/docs/links/route.js.nft.json +1 -1
  70. package/.next/server/app/api/docs/route.js +2 -3
  71. package/.next/server/app/api/docs/route.js.nft.json +1 -1
  72. package/.next/server/app/api/explorer/route.js +3 -4
  73. package/.next/server/app/api/explorer/route.js.nft.json +1 -1
  74. package/.next/server/app/api/mcp/route.js +3 -4
  75. package/.next/server/app/api/mcp/route.js.nft.json +1 -1
  76. package/.next/server/app/api/memory/entries/delete/route.js +3 -4
  77. package/.next/server/app/api/memory/entries/delete/route.js.nft.json +1 -1
  78. package/.next/server/app/api/memory/entries/merge/route.js +3 -4
  79. package/.next/server/app/api/memory/entries/merge/route.js.nft.json +1 -1
  80. package/.next/server/app/api/memory/entries/merge/undo/route.js +3 -4
  81. package/.next/server/app/api/memory/entries/merge/undo/route.js.nft.json +1 -1
  82. package/.next/server/app/api/memory/entries/restore/route.js +3 -4
  83. package/.next/server/app/api/memory/entries/restore/route.js.nft.json +1 -1
  84. package/.next/server/app/api/memory/entries/route.js +2 -3
  85. package/.next/server/app/api/memory/entries/route.js.nft.json +1 -1
  86. package/.next/server/app/api/memory/entries/save/route.js +3 -4
  87. package/.next/server/app/api/memory/entries/save/route.js.nft.json +1 -1
  88. package/.next/server/app/api/memory/graph/route.js +3 -4
  89. package/.next/server/app/api/memory/graph/route.js.nft.json +1 -1
  90. package/.next/server/app/api/memory/health/dismiss/route.js +3 -4
  91. package/.next/server/app/api/memory/health/dismiss/route.js.nft.json +1 -1
  92. package/.next/server/app/api/memory/health/route.js +2 -3
  93. package/.next/server/app/api/memory/health/route.js.nft.json +1 -1
  94. package/.next/server/app/api/memory/history/route.js +2 -4
  95. package/.next/server/app/api/memory/history/route.js.nft.json +1 -1
  96. package/.next/server/app/api/memory/restore/route.js +3 -4
  97. package/.next/server/app/api/memory/restore/route.js.nft.json +1 -1
  98. package/.next/server/app/api/memory/route.js +2 -3
  99. package/.next/server/app/api/memory/route.js.nft.json +1 -1
  100. package/.next/server/app/api/memory/versions/route.js +2 -3
  101. package/.next/server/app/api/memory/versions/route.js.nft.json +1 -1
  102. package/.next/server/app/api/plan/apply/route.js +3 -4
  103. package/.next/server/app/api/plan/apply/route.js.nft.json +1 -1
  104. package/.next/server/app/api/projects/route.js +2 -3
  105. package/.next/server/app/api/projects/route.js.nft.json +1 -1
  106. package/.next/server/app/api/registry/route.js +2 -3
  107. package/.next/server/app/api/registry/route.js.nft.json +1 -1
  108. package/.next/server/app/api/roadmap/create/route.js +3 -4
  109. package/.next/server/app/api/roadmap/create/route.js.nft.json +1 -1
  110. package/.next/server/app/api/roadmap/delete/route.js +3 -4
  111. package/.next/server/app/api/roadmap/delete/route.js.nft.json +1 -1
  112. package/.next/server/app/api/roadmap/generate/route.js +3 -4
  113. package/.next/server/app/api/roadmap/generate/route.js.nft.json +1 -1
  114. package/.next/server/app/api/roadmap/layout/route.js +3 -4
  115. package/.next/server/app/api/roadmap/layout/route.js.nft.json +1 -1
  116. package/.next/server/app/api/roadmap/restore/route.js +3 -4
  117. package/.next/server/app/api/roadmap/restore/route.js.nft.json +1 -1
  118. package/.next/server/app/api/roadmap/route.js +2 -3
  119. package/.next/server/app/api/roadmap/route.js.nft.json +1 -1
  120. package/.next/server/app/api/roadmap/update/route.js +3 -4
  121. package/.next/server/app/api/roadmap/update/route.js.nft.json +1 -1
  122. package/.next/server/app/api/sessions/route.js +2 -3
  123. package/.next/server/app/api/sessions/route.js.nft.json +1 -1
  124. package/.next/server/app/api/settings/route.js +2 -3
  125. package/.next/server/app/api/settings/route.js.nft.json +1 -1
  126. package/.next/server/app/api/setup/generate/route.js +2 -3
  127. package/.next/server/app/api/setup/generate/route.js.nft.json +1 -1
  128. package/.next/server/app/api/setup/write/route.js +2 -3
  129. package/.next/server/app/api/setup/write/route.js.nft.json +1 -1
  130. package/.next/server/app/api/summary/route.js +2 -3
  131. package/.next/server/app/api/summary/route.js.nft.json +1 -1
  132. package/.next/server/app/api/tasks/bulk/route.js +3 -4
  133. package/.next/server/app/api/tasks/bulk/route.js.nft.json +1 -1
  134. package/.next/server/app/api/tasks/create/route.js +2 -3
  135. package/.next/server/app/api/tasks/create/route.js.nft.json +1 -1
  136. package/.next/server/app/api/tasks/delete/route.js +3 -4
  137. package/.next/server/app/api/tasks/delete/route.js.nft.json +1 -1
  138. package/.next/server/app/api/tasks/manual-tests/route.js +3 -3
  139. package/.next/server/app/api/tasks/manual-tests/route.js.nft.json +1 -1
  140. package/.next/server/app/api/tasks/restore/route.js +3 -4
  141. package/.next/server/app/api/tasks/restore/route.js.nft.json +1 -1
  142. package/.next/server/app/api/tasks/review/route.js +3 -4
  143. package/.next/server/app/api/tasks/review/route.js.nft.json +1 -1
  144. package/.next/server/app/api/tasks/route.js +2 -3
  145. package/.next/server/app/api/tasks/route.js.nft.json +1 -1
  146. package/.next/server/app/api/tasks/update/route.js +3 -4
  147. package/.next/server/app/api/tasks/update/route.js.nft.json +1 -1
  148. package/.next/server/app/api/views/route.js +2 -3
  149. package/.next/server/app/api/views/route.js.nft.json +1 -1
  150. package/.next/server/app/board.html +1 -1
  151. package/.next/server/app/board.rsc +7 -7
  152. package/.next/server/app/board.segments/!KGFwcCk/board/__PAGE__.segment.rsc +5 -5
  153. package/.next/server/app/board.segments/_full.segment.rsc +7 -7
  154. package/.next/server/app/board.segments/_tree.segment.rsc +2 -2
  155. package/.next/server/app/chat.html +1 -1
  156. package/.next/server/app/chat.rsc +6 -6
  157. package/.next/server/app/chat.segments/!KGFwcCk/chat/__PAGE__.segment.rsc +5 -5
  158. package/.next/server/app/chat.segments/_full.segment.rsc +6 -6
  159. package/.next/server/app/chat.segments/_tree.segment.rsc +2 -2
  160. package/.next/server/app/docs.html +1 -1
  161. package/.next/server/app/docs.rsc +7 -7
  162. package/.next/server/app/docs.segments/!KGFwcCk/docs/__PAGE__.segment.rsc +5 -5
  163. package/.next/server/app/docs.segments/_full.segment.rsc +7 -7
  164. package/.next/server/app/docs.segments/_tree.segment.rsc +2 -2
  165. package/.next/server/app/explorer.html +1 -1
  166. package/.next/server/app/explorer.rsc +7 -7
  167. package/.next/server/app/explorer.segments/!KGFwcCk/explorer/__PAGE__.segment.rsc +5 -5
  168. package/.next/server/app/explorer.segments/_full.segment.rsc +7 -7
  169. package/.next/server/app/explorer.segments/_tree.segment.rsc +2 -2
  170. package/.next/server/app/getting-started.html +1 -0
  171. package/.next/server/app/getting-started.meta +31 -0
  172. package/.next/server/app/getting-started.rsc +31 -0
  173. package/.next/server/app/getting-started.segments/!KGFwcCk/getting-started/__PAGE__.segment.rsc +32 -0
  174. package/.next/server/app/getting-started.segments/_full.segment.rsc +31 -0
  175. package/.next/server/app/getting-started.segments/_tree.segment.rsc +5 -0
  176. package/.next/server/app/graph.html +1 -1
  177. package/.next/server/app/graph.rsc +6 -6
  178. package/.next/server/app/graph.segments/!KGFwcCk/graph/__PAGE__.segment.rsc +5 -5
  179. package/.next/server/app/graph.segments/_full.segment.rsc +6 -6
  180. package/.next/server/app/graph.segments/_tree.segment.rsc +2 -2
  181. package/.next/server/app/index.html +1 -1
  182. package/.next/server/app/index.rsc +2 -2
  183. package/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  184. package/.next/server/app/index.segments/_full.segment.rsc +2 -2
  185. package/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  186. package/.next/server/app/manual-tests.html +1 -1
  187. package/.next/server/app/manual-tests.rsc +7 -7
  188. package/.next/server/app/manual-tests.segments/!KGFwcCk/manual-tests/__PAGE__.segment.rsc +5 -5
  189. package/.next/server/app/manual-tests.segments/_full.segment.rsc +7 -7
  190. package/.next/server/app/manual-tests.segments/_tree.segment.rsc +2 -2
  191. package/.next/server/app/memory.html +1 -1
  192. package/.next/server/app/memory.rsc +7 -7
  193. package/.next/server/app/memory.segments/!KGFwcCk/memory/__PAGE__.segment.rsc +5 -5
  194. package/.next/server/app/memory.segments/_full.segment.rsc +7 -7
  195. package/.next/server/app/memory.segments/_tree.segment.rsc +2 -2
  196. package/.next/server/app/page.js.nft.json +1 -1
  197. package/.next/server/app/page_client-reference-manifest.js +1 -1
  198. package/.next/server/app/roadmap.html +1 -1
  199. package/.next/server/app/roadmap.rsc +7 -7
  200. package/.next/server/app/roadmap.segments/!KGFwcCk/roadmap/__PAGE__.segment.rsc +5 -5
  201. package/.next/server/app/roadmap.segments/_full.segment.rsc +7 -7
  202. package/.next/server/app/roadmap.segments/_tree.segment.rsc +2 -2
  203. package/.next/server/app/settings.html +1 -1
  204. package/.next/server/app/settings.rsc +6 -6
  205. package/.next/server/app/settings.segments/!KGFwcCk/settings/__PAGE__.segment.rsc +5 -5
  206. package/.next/server/app/settings.segments/_full.segment.rsc +6 -6
  207. package/.next/server/app/settings.segments/_tree.segment.rsc +2 -2
  208. package/.next/server/app/setup.html +1 -1
  209. package/.next/server/app/setup.rsc +6 -6
  210. package/.next/server/app/setup.segments/!KGFwcCk/setup/__PAGE__.segment.rsc +5 -5
  211. package/.next/server/app/setup.segments/_full.segment.rsc +6 -6
  212. package/.next/server/app/setup.segments/_tree.segment.rsc +2 -2
  213. package/.next/server/app/welcome/page/app-paths-manifest.json +3 -0
  214. package/.next/server/app/welcome/page/build-manifest.json +20 -0
  215. package/.next/server/app/welcome/page/next-font-manifest.json +11 -0
  216. package/.next/server/app/welcome/page/react-loadable-manifest.json +1 -0
  217. package/.next/server/app/welcome/page/server-reference-manifest.json +4 -0
  218. package/.next/server/app/welcome/page.js +13 -0
  219. package/.next/server/app/welcome/page.js.map +5 -0
  220. package/.next/server/app/welcome/page.js.nft.json +1 -0
  221. package/.next/server/app/welcome/page_client-reference-manifest.js +3 -0
  222. package/.next/server/app/welcome.html +1 -0
  223. package/.next/server/app/welcome.meta +26 -0
  224. package/.next/server/app/welcome.rsc +27 -0
  225. package/.next/server/app/welcome.segments/_full.segment.rsc +27 -0
  226. package/.next/server/app/welcome.segments/_tree.segment.rsc +5 -0
  227. package/.next/server/app/welcome.segments/welcome/__PAGE__.segment.rsc +29 -0
  228. package/.next/server/app-paths-manifest.json +3 -1
  229. package/.next/server/chunks/{11mp_@anthropic-ai_sdk_05ck8py._.js → 11mp_@anthropic-ai_sdk_0-smxh7._.js} +1 -1
  230. package/.next/server/chunks/{11mp_@anthropic-ai_sdk_05w8m72._.js → 11mp_@anthropic-ai_sdk_0-upxuo._.js} +1 -1
  231. package/.next/server/chunks/{11mp_@anthropic-ai_sdk_013qeb4._.js → 11mp_@anthropic-ai_sdk_00stvd0._.js} +1 -1
  232. package/.next/server/chunks/{11mp_@anthropic-ai_sdk_086oevc._.js → 11mp_@anthropic-ai_sdk_05tlp4j._.js} +1 -1
  233. package/.next/server/chunks/11mp_@anthropic-ai_sdk_06i1jku._.js +3 -0
  234. package/.next/server/chunks/11mp_@anthropic-ai_sdk_06pqlwo._.js +3 -0
  235. package/.next/server/chunks/11mp_@anthropic-ai_sdk_06q_bm6._.js +3 -0
  236. package/.next/server/chunks/11mp_@anthropic-ai_sdk_098dref._.js +3 -0
  237. package/.next/server/chunks/11mp_@anthropic-ai_sdk_09q07e_._.js +3 -0
  238. package/.next/server/chunks/11mp_@anthropic-ai_sdk_09r9wsn._.js +3 -0
  239. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0_rnqa6._.js +3 -0
  240. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0ch0mdl._.js +3 -0
  241. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0didq3m._.js +3 -0
  242. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0dwtv_z._.js +3 -0
  243. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0e8sqia._.js +3 -0
  244. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0gk-rze._.js +3 -0
  245. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0gywxp1._.js +3 -0
  246. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0h4l0yx._.js +3 -0
  247. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0hjmy82._.js +3 -0
  248. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0jbmnx_._.js +3 -0
  249. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0l7teck._.js +3 -0
  250. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0ldf-lc._.js +3 -0
  251. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0oe9p6l._.js +3 -0
  252. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0ppgi2h._.js +3 -0
  253. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0ydb8nm._.js +3 -0
  254. package/.next/server/chunks/11mp_@anthropic-ai_sdk_11hsr1e._.js +3 -0
  255. package/.next/server/chunks/11mp_@anthropic-ai_sdk_14pgcis._.js +3 -0
  256. package/.next/server/chunks/11mp_@anthropic-ai_sdk_15_sqq8._.js +3 -0
  257. package/.next/server/chunks/11mp_@anthropic-ai_sdk_16up-b0._.js +3 -0
  258. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1_jm94w._.js +3 -0
  259. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1aswx0v._.js +3 -0
  260. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1bkea9c._.js +3 -0
  261. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1d41_6l._.js +3 -0
  262. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1d959rx._.js +3 -0
  263. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1eughke._.js +3 -0
  264. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1ev29eb._.js +3 -0
  265. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1faxy2m._.js +3 -0
  266. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1lginb1._.js +3 -0
  267. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1pg6fky._.js +3 -0
  268. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1qfho5e._.js +3 -0
  269. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1r9e6jv._.js +3 -0
  270. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1tjlpeq._.js +3 -0
  271. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1wcdj4f._.js +3 -0
  272. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1x25dnb._.js +3 -0
  273. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1ywjkuh._.js +3 -0
  274. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1zbnql3._.js +3 -0
  275. package/.next/server/chunks/11mp_@anthropic-ai_sdk_208gclq._.js +3 -0
  276. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_07rnikd._.js +3 -0
  277. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_0cxqkzo._.js +3 -0
  278. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_0iemvsj._.js +3 -0
  279. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_0losy1p._.js +3 -0
  280. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_0q2-o56._.js +3 -0
  281. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_0v9tonm._.js +3 -0
  282. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_0ve_28v._.js +3 -0
  283. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_0vta7f6._.js +3 -0
  284. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_0xme80s._.js +3 -0
  285. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_12tnhho._.js +3 -0
  286. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_14-nnf3._.js +3 -0
  287. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_14e0xcw._.js +3 -0
  288. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1cbywiw._.js +3 -0
  289. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1d4fc7y._.js +3 -0
  290. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1e89sld._.js +3 -0
  291. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1emt011._.js +3 -0
  292. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1jgaffx._.js +3 -0
  293. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1m9p_w8._.js +3 -0
  294. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1mtv1gy._.js +3 -0
  295. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1plmrbl._.js +3 -0
  296. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1toqkb5._.js +3 -0
  297. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1yc8ml3._.js +3 -0
  298. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1ycnogk._.js +3 -0
  299. package/.next/server/chunks/[root-of-the-server]__02ym03p._.js +3 -0
  300. package/.next/server/chunks/[root-of-the-server]__02ym03p._.js.map +1 -0
  301. package/.next/server/chunks/{[root-of-the-server]__1lxrobr._.js → [root-of-the-server]__04qfxm4._.js} +2 -2
  302. package/.next/server/chunks/{[root-of-the-server]__1lxrobr._.js.map → [root-of-the-server]__04qfxm4._.js.map} +1 -1
  303. package/.next/server/chunks/[root-of-the-server]__04t339z._.js +3 -0
  304. package/.next/server/chunks/[root-of-the-server]__04t339z._.js.map +1 -0
  305. package/.next/server/chunks/[root-of-the-server]__05b72pa._.js +3 -0
  306. package/.next/server/chunks/[root-of-the-server]__05b72pa._.js.map +1 -0
  307. package/.next/server/chunks/[root-of-the-server]__05jwgm-._.js +261 -0
  308. package/.next/server/chunks/[root-of-the-server]__05jwgm-._.js.map +1 -0
  309. package/.next/server/chunks/{[root-of-the-server]__162_l0k._.js → [root-of-the-server]__06ikdrx._.js} +2 -2
  310. package/.next/server/chunks/{[root-of-the-server]__162_l0k._.js.map → [root-of-the-server]__06ikdrx._.js.map} +1 -1
  311. package/.next/server/chunks/[root-of-the-server]__06x7kjp._.js +3 -0
  312. package/.next/server/chunks/{[root-of-the-server]__1s0t8r3._.js.map → [root-of-the-server]__06x7kjp._.js.map} +1 -1
  313. package/.next/server/chunks/[root-of-the-server]__07-qwkc._.js +3 -0
  314. package/.next/server/chunks/[root-of-the-server]__07-qwkc._.js.map +1 -0
  315. package/.next/server/chunks/[root-of-the-server]__0_j-3zy._.js +3 -0
  316. package/.next/server/chunks/{[root-of-the-server]__1r_0uma._.js.map → [root-of-the-server]__0_j-3zy._.js.map} +1 -1
  317. package/.next/server/chunks/{[root-of-the-server]__089ay-q._.js → [root-of-the-server]__0_paned._.js} +2 -2
  318. package/.next/server/chunks/[root-of-the-server]__0_paned._.js.map +1 -0
  319. package/.next/server/chunks/{[root-of-the-server]__1vzxnjb._.js → [root-of-the-server]__0adl8c2._.js} +2 -2
  320. package/.next/server/chunks/[root-of-the-server]__0be-1oe._.js +3 -0
  321. package/.next/server/chunks/[root-of-the-server]__0be-1oe._.js.map +1 -0
  322. package/.next/server/chunks/[root-of-the-server]__0c7qnhb._.js +3 -0
  323. package/.next/server/chunks/{[root-of-the-server]__0vf-0gp._.js.map → [root-of-the-server]__0c7qnhb._.js.map} +1 -1
  324. package/.next/server/chunks/[root-of-the-server]__0dfd91u._.js +3 -0
  325. package/.next/server/chunks/[root-of-the-server]__0dfd91u._.js.map +1 -0
  326. package/.next/server/chunks/[root-of-the-server]__0e_zpd3._.js +3 -0
  327. package/.next/server/chunks/{[root-of-the-server]__0pe1qih._.js.map → [root-of-the-server]__0e_zpd3._.js.map} +1 -1
  328. package/.next/server/chunks/[root-of-the-server]__0efnsph._.js +3 -0
  329. package/.next/server/chunks/[root-of-the-server]__0efnsph._.js.map +1 -0
  330. package/.next/server/chunks/{[root-of-the-server]__1mnzsbh._.js → [root-of-the-server]__0gbhsr4._.js} +2 -2
  331. package/.next/server/chunks/{[root-of-the-server]__1mnzsbh._.js.map → [root-of-the-server]__0gbhsr4._.js.map} +1 -1
  332. package/.next/server/chunks/[root-of-the-server]__0pb7dzk._.js +261 -0
  333. package/.next/server/chunks/[root-of-the-server]__0pb7dzk._.js.map +1 -0
  334. package/.next/server/chunks/[root-of-the-server]__0q-h0w3._.js +3 -0
  335. package/.next/server/chunks/[root-of-the-server]__0q-h0w3._.js.map +1 -0
  336. package/.next/server/chunks/{[root-of-the-server]__04ri_ci._.js → [root-of-the-server]__0r_831n._.js} +2 -2
  337. package/.next/server/chunks/[root-of-the-server]__0s9wedh._.js +3 -0
  338. package/.next/server/chunks/[root-of-the-server]__0s9wedh._.js.map +1 -0
  339. package/.next/server/chunks/{[root-of-the-server]__1zeys20._.js → [root-of-the-server]__0tzsbyx._.js} +2 -2
  340. package/.next/server/chunks/[root-of-the-server]__0uyhc_4._.js +3 -0
  341. package/.next/server/chunks/[root-of-the-server]__0uyhc_4._.js.map +1 -0
  342. package/.next/server/chunks/[root-of-the-server]__0z2h080._.js +3 -0
  343. package/.next/server/chunks/[root-of-the-server]__0z2h080._.js.map +1 -0
  344. package/.next/server/chunks/[root-of-the-server]__1-f1pzo._.js +3 -0
  345. package/.next/server/chunks/{[root-of-the-server]__0b6w_wb._.js.map → [root-of-the-server]__1-f1pzo._.js.map} +1 -1
  346. package/.next/server/chunks/[root-of-the-server]__120uun8._.js +3 -0
  347. package/.next/server/chunks/{[root-of-the-server]__05us508._.js.map → [root-of-the-server]__120uun8._.js.map} +1 -1
  348. package/.next/server/chunks/[root-of-the-server]__12qs29o._.js +261 -0
  349. package/.next/server/chunks/[root-of-the-server]__12qs29o._.js.map +1 -0
  350. package/.next/server/chunks/{[root-of-the-server]__1sd3l-d._.js → [root-of-the-server]__146-7zt._.js} +2 -2
  351. package/.next/server/chunks/[root-of-the-server]__146-7zt._.js.map +1 -0
  352. package/.next/server/chunks/[root-of-the-server]__17_dic_._.js +3 -0
  353. package/.next/server/chunks/[root-of-the-server]__17_dic_._.js.map +1 -0
  354. package/.next/server/chunks/[root-of-the-server]__19a04nn._.js +3 -0
  355. package/.next/server/chunks/{[root-of-the-server]__0hg1r2b._.js.map → [root-of-the-server]__19a04nn._.js.map} +1 -1
  356. package/.next/server/chunks/[root-of-the-server]__1_q8upn._.js +3 -0
  357. package/.next/server/chunks/[root-of-the-server]__1ar-16i._.js +3 -0
  358. package/.next/server/chunks/[root-of-the-server]__1ar-16i._.js.map +1 -0
  359. package/.next/server/chunks/[root-of-the-server]__1egi_4t._.js +3 -0
  360. package/.next/server/chunks/[root-of-the-server]__1egi_4t._.js.map +1 -0
  361. package/.next/server/chunks/[root-of-the-server]__1eh1p2_._.js +3 -0
  362. package/.next/server/chunks/[root-of-the-server]__1eh1p2_._.js.map +1 -0
  363. package/.next/server/chunks/[root-of-the-server]__1gwdudg._.js +3 -0
  364. package/.next/server/chunks/{[root-of-the-server]__18dt3sr._.js.map → [root-of-the-server]__1gwdudg._.js.map} +1 -1
  365. package/.next/server/chunks/[root-of-the-server]__1hz94ca._.js +3 -0
  366. package/.next/server/chunks/[root-of-the-server]__1jyx430._.js +3 -0
  367. package/.next/server/chunks/{[root-of-the-server]__1wcd2x9._.js.map → [root-of-the-server]__1jyx430._.js.map} +1 -1
  368. package/.next/server/chunks/[root-of-the-server]__1meifxd._.js +3 -0
  369. package/.next/server/chunks/[root-of-the-server]__1meifxd._.js.map +1 -0
  370. package/.next/server/chunks/[root-of-the-server]__1mn0d5e._.js +3 -0
  371. package/.next/server/chunks/[root-of-the-server]__1mn0d5e._.js.map +1 -0
  372. package/.next/server/chunks/[root-of-the-server]__1o-hldt._.js +3 -0
  373. package/.next/server/chunks/{[root-of-the-server]__1pjwaan._.js.map → [root-of-the-server]__1o-hldt._.js.map} +1 -1
  374. package/.next/server/chunks/[root-of-the-server]__1ocnzl5._.js +3 -0
  375. package/.next/server/chunks/[root-of-the-server]__1ocnzl5._.js.map +1 -0
  376. package/.next/server/chunks/{[root-of-the-server]__0n0myt9._.js → [root-of-the-server]__1pf07ha._.js} +2 -2
  377. package/.next/server/chunks/{[root-of-the-server]__0756_60._.js → [root-of-the-server]__1rtj94g._.js} +2 -2
  378. package/.next/server/chunks/{[root-of-the-server]__1ntu_6r._.js.map → [root-of-the-server]__1rtj94g._.js.map} +1 -1
  379. package/.next/server/chunks/[root-of-the-server]__1rz7a1h._.js +3 -0
  380. package/.next/server/chunks/[root-of-the-server]__1rz7a1h._.js.map +1 -0
  381. package/.next/server/chunks/[root-of-the-server]__1s7yctb._.js +3 -0
  382. package/.next/server/chunks/{[root-of-the-server]__0rggulw._.js.map → [root-of-the-server]__1s7yctb._.js.map} +1 -1
  383. package/.next/server/chunks/[root-of-the-server]__1tebaoq._.js +3 -0
  384. package/.next/server/chunks/[root-of-the-server]__1tebaoq._.js.map +1 -0
  385. package/.next/server/chunks/[root-of-the-server]__1uh0213._.js +3 -0
  386. package/.next/server/chunks/{[root-of-the-server]__1skrybv._.js.map → [root-of-the-server]__1uh0213._.js.map} +1 -1
  387. package/.next/server/chunks/[root-of-the-server]__1vj_u-e._.js +3 -0
  388. package/.next/server/chunks/{[root-of-the-server]__1p6-0l0._.js.map → [root-of-the-server]__1vj_u-e._.js.map} +1 -1
  389. package/.next/server/chunks/{[root-of-the-server]__1_qenei._.js → [root-of-the-server]__20ctbhx._.js} +2 -2
  390. package/.next/server/chunks/{[root-of-the-server]__1_qenei._.js.map → [root-of-the-server]__20ctbhx._.js.map} +1 -1
  391. package/.next/server/chunks/[root-of-the-server]__20nzp64._.js +3 -0
  392. package/.next/server/chunks/{[root-of-the-server]__0dgwykw._.js.map → [root-of-the-server]__20nzp64._.js.map} +1 -1
  393. package/.next/server/chunks/_04byth9._.js +19 -18
  394. package/.next/server/chunks/_04byth9._.js.map +1 -1
  395. package/.next/server/chunks/_0safx0g._.js +3 -3
  396. package/.next/server/chunks/_0safx0g._.js.map +1 -1
  397. package/.next/server/chunks/_1au4syj._.js +1 -1
  398. package/.next/server/chunks/_1au4syj._.js.map +1 -1
  399. package/.next/server/chunks/_1b5fqxy._.js +1 -1
  400. package/.next/server/chunks/_1b5fqxy._.js.map +1 -1
  401. package/.next/server/chunks/_1ivswa9._.js +1 -1
  402. package/.next/server/chunks/_1ivswa9._.js.map +1 -1
  403. package/.next/server/chunks/_1si7nb_._.js +2 -2
  404. package/.next/server/chunks/_1si7nb_._.js.map +1 -1
  405. package/.next/server/chunks/ssr/{0_nd_mermaid_dist_mermaid_core_mjs_0y_edkq._.js → 0_nd_mermaid_dist_mermaid_core_mjs_1trh599._.js} +2 -2
  406. package/.next/server/chunks/ssr/{1u84_katex_dist_katex_mjs_0yg8zto._.js → 1u84_katex_dist_katex_mjs_0wukkxe._.js} +1 -1
  407. package/.next/server/chunks/ssr/[root-of-the-server]__0dn-5g9._.js +3 -0
  408. package/.next/server/chunks/ssr/[root-of-the-server]__0dn-5g9._.js.map +1 -0
  409. package/.next/server/chunks/ssr/{[root-of-the-server]__08z0szh._.js → [root-of-the-server]__0p_ieww._.js} +1 -1
  410. package/.next/server/chunks/ssr/[root-of-the-server]__1_4pq0_._.js +3 -0
  411. package/.next/server/chunks/ssr/[root-of-the-server]__1_4pq0_._.js.map +1 -0
  412. package/.next/server/chunks/ssr/{[root-of-the-server]__1wdwnnp._.js → [root-of-the-server]__1ecvjg8._.js} +1 -1
  413. package/.next/server/chunks/ssr/_04xff_2._.js +1 -1
  414. package/.next/server/chunks/ssr/_04xff_2._.js.map +1 -1
  415. package/.next/server/chunks/ssr/_09qa3fe._.js +3 -0
  416. package/.next/server/chunks/ssr/_09qa3fe._.js.map +1 -0
  417. package/.next/server/chunks/ssr/_0_74-q8._.js +3 -0
  418. package/.next/server/chunks/ssr/_0_74-q8._.js.map +1 -0
  419. package/.next/server/chunks/ssr/_0cv0ugs._.js +1 -1
  420. package/.next/server/chunks/ssr/_0cv0ugs._.js.map +1 -1
  421. package/.next/server/chunks/ssr/_0hck6f0._.js +3 -0
  422. package/.next/server/chunks/ssr/_0hck6f0._.js.map +1 -0
  423. package/.next/server/chunks/ssr/_0o8t6j-._.js +1 -1
  424. package/.next/server/chunks/ssr/_0o8t6j-._.js.map +1 -1
  425. package/.next/server/chunks/ssr/_0p_5o4z._.js +23 -0
  426. package/.next/server/chunks/ssr/_0p_5o4z._.js.map +1 -0
  427. package/.next/server/chunks/ssr/_0rmo9r-._.js +1 -1
  428. package/.next/server/chunks/ssr/_0rmo9r-._.js.map +1 -1
  429. package/.next/server/chunks/ssr/_0ust7tw._.js +1 -1
  430. package/.next/server/chunks/ssr/_0ust7tw._.js.map +1 -1
  431. package/.next/server/chunks/ssr/_1c46ap6._.js +23 -0
  432. package/.next/server/chunks/ssr/_1c46ap6._.js.map +1 -0
  433. package/.next/server/chunks/ssr/_1gxjjvh._.js +1 -1
  434. package/.next/server/chunks/ssr/_1gxjjvh._.js.map +1 -1
  435. package/.next/server/chunks/ssr/_1jjs63r._.js +131 -0
  436. package/.next/server/chunks/ssr/_1jjs63r._.js.map +1 -0
  437. package/.next/server/chunks/ssr/_1kcyxnh._.js +3 -0
  438. package/.next/server/chunks/ssr/_1kcyxnh._.js.map +1 -0
  439. package/.next/server/chunks/ssr/_1lvbdeq._.js +3 -0
  440. package/.next/server/chunks/ssr/_1lvbdeq._.js.map +1 -0
  441. package/.next/server/chunks/ssr/_1rewjdw._.js +3 -0
  442. package/.next/server/chunks/ssr/_1rewjdw._.js.map +1 -0
  443. package/.next/server/chunks/ssr/_1tv---f._.js +3 -0
  444. package/.next/server/chunks/ssr/_1tv---f._.js.map +1 -0
  445. package/.next/server/chunks/ssr/_1zyvi-w._.js +3 -0
  446. package/.next/server/chunks/ssr/_1zyvi-w._.js.map +1 -0
  447. package/.next/server/chunks/ssr/_next-internal_server_app_(app)_getting-started_page_actions_18jod7i.js +3 -0
  448. package/.next/server/chunks/ssr/_next-internal_server_app_welcome_page_actions_1unjea7.js +3 -0
  449. package/.next/server/chunks/ssr/{node_modules__pnpm_03mp7qw._.js → node_modules__pnpm_0-6sq9f._.js} +2 -2
  450. package/.next/server/chunks/ssr/{node_modules__pnpm_0jampur._.js → node_modules__pnpm_0-vta96._.js} +1 -1
  451. package/.next/server/chunks/ssr/{node_modules__pnpm_00f4yhs._.js → node_modules__pnpm_04qn321._.js} +1 -1
  452. package/.next/server/chunks/ssr/{node_modules__pnpm_0tn5pg3._.js → node_modules__pnpm_06r-oci._.js} +1 -1
  453. package/.next/server/chunks/ssr/{node_modules__pnpm_0iu4132._.js → node_modules__pnpm_0fe8aya._.js} +1 -1
  454. package/.next/server/chunks/ssr/{node_modules__pnpm_0oyo3yo._.js → node_modules__pnpm_0hpufx1._.js} +2 -2
  455. package/.next/server/chunks/ssr/{node_modules__pnpm_0j_-le7._.js → node_modules__pnpm_0k5j0_5._.js} +2 -2
  456. package/.next/server/chunks/ssr/{node_modules__pnpm_0x5wj-4._.js → node_modules__pnpm_0kv8p99._.js} +2 -2
  457. package/.next/server/chunks/ssr/{node_modules__pnpm_06_8fr8._.js → node_modules__pnpm_0m-_au1._.js} +1 -1
  458. package/.next/server/chunks/ssr/{node_modules__pnpm_1zme4rg._.js → node_modules__pnpm_0mrjd3b._.js} +1 -1
  459. package/.next/server/chunks/ssr/{node_modules__pnpm_0mqeoh-._.js → node_modules__pnpm_0p2ufg5._.js} +2 -2
  460. package/.next/server/chunks/ssr/{node_modules__pnpm_03mpmzx._.js → node_modules__pnpm_0r2omyh._.js} +1 -1
  461. package/.next/server/chunks/ssr/{node_modules__pnpm_0_e05ka._.js → node_modules__pnpm_0uh9zwf._.js} +1 -1
  462. package/.next/server/chunks/ssr/{node_modules__pnpm_035haet._.js → node_modules__pnpm_0ujugl_._.js} +1 -1
  463. package/.next/server/chunks/ssr/{node_modules__pnpm_0lkvbt-._.js → node_modules__pnpm_0v-_iaj._.js} +1 -1
  464. package/.next/server/chunks/ssr/{node_modules__pnpm_0rq9x9q._.js → node_modules__pnpm_0xin4nu._.js} +2 -2
  465. package/.next/server/chunks/ssr/{node_modules__pnpm_139-v1i._.js → node_modules__pnpm_1-zfovp._.js} +1 -1
  466. package/.next/server/chunks/ssr/{node_modules__pnpm_1i_chik._.js → node_modules__pnpm_11p7w0z._.js} +1 -1
  467. package/.next/server/chunks/ssr/{node_modules__pnpm_1jgju12._.js → node_modules__pnpm_16l16l0._.js} +1 -1
  468. package/.next/server/chunks/ssr/{node_modules__pnpm_1n9oeu0._.js → node_modules__pnpm_16vl5yb._.js} +1 -1
  469. package/.next/server/chunks/ssr/{node_modules__pnpm_1ydeqw6._.js → node_modules__pnpm_1alnvos._.js} +1 -1
  470. package/.next/server/chunks/ssr/{node_modules__pnpm_03an60e._.js → node_modules__pnpm_1e_74v6._.js} +1 -1
  471. package/.next/server/chunks/ssr/{node_modules__pnpm_2045l51._.js → node_modules__pnpm_1kvkjrs._.js} +1 -1
  472. package/.next/server/chunks/ssr/{node_modules__pnpm_0zz55xq._.js → node_modules__pnpm_1l4yejo._.js} +1 -1
  473. package/.next/server/chunks/ssr/{node_modules__pnpm_1ws3ez9._.js → node_modules__pnpm_1uly489._.js} +1 -1
  474. package/.next/server/chunks/ssr/{node_modules__pnpm_1zum4yd._.js → node_modules__pnpm_1xntybk._.js} +1 -1
  475. package/.next/server/chunks/ssr/{node_modules__pnpm_09nd7ia._.js → node_modules__pnpm_20g30gl._.js} +1 -1
  476. package/.next/server/chunks/ssr/src_app_(app)_activity_page_tsx_13jd6bn._.js +1 -1
  477. package/.next/server/chunks/ssr/src_app_(app)_activity_page_tsx_13jd6bn._.js.map +1 -1
  478. package/.next/server/chunks/ssr/src_app_(app)_board_page_tsx_0gpfc77._.js +1 -1
  479. package/.next/server/chunks/ssr/src_app_(app)_board_page_tsx_0gpfc77._.js.map +1 -1
  480. package/.next/server/chunks/ssr/src_app_(app)_getting-started_page_tsx_0dgdc6p._.js +3 -0
  481. package/.next/server/chunks/ssr/src_app_(app)_getting-started_page_tsx_0dgdc6p._.js.map +1 -0
  482. package/.next/server/chunks/ssr/src_app_(app)_layout_tsx_1yu5hom._.js +1 -1
  483. package/.next/server/chunks/ssr/src_app_(app)_layout_tsx_1yu5hom._.js.map +1 -1
  484. package/.next/server/chunks/ssr/src_app_(app)_manual-tests_page_tsx_01tnunf._.js +1 -1
  485. package/.next/server/chunks/ssr/src_app_(app)_manual-tests_page_tsx_01tnunf._.js.map +1 -1
  486. package/.next/server/chunks/ssr/src_app_(app)_memory_page_tsx_19jhb1c._.js +2 -2
  487. package/.next/server/chunks/ssr/src_app_(app)_memory_page_tsx_19jhb1c._.js.map +1 -1
  488. package/.next/server/chunks/ssr/src_app_(app)_roadmap_page_tsx_0vcq3jr._.js +2 -2
  489. package/.next/server/chunks/ssr/src_app_(app)_roadmap_page_tsx_0vcq3jr._.js.map +1 -1
  490. package/.next/server/chunks/ssr/src_context_ChatContext_tsx_0lowp8p._.js +2 -2
  491. package/.next/server/chunks/ssr/src_context_ChatContext_tsx_0lowp8p._.js.map +1 -1
  492. package/.next/server/middleware-build-manifest.js +3 -3
  493. package/.next/server/next-font-manifest.js +1 -1
  494. package/.next/server/next-font-manifest.json +8 -0
  495. package/.next/server/pages/404.html +1 -1
  496. package/.next/server/pages/500.html +1 -1
  497. package/.next/server/prefetch-hints.json +33 -0
  498. package/.next/server/server-reference-manifest.js +1 -1
  499. package/.next/server/server-reference-manifest.json +1 -1
  500. package/.next/static/chunks/056pca8ms7k-9.js +1 -0
  501. package/.next/static/chunks/07hf_3iqpzmvo.css +1 -0
  502. package/.next/static/chunks/09-kkj4oxfqu1.js +1 -0
  503. package/.next/static/chunks/0fvkvef41i5ka.js +1 -0
  504. package/.next/static/chunks/0kmyxrtasrg2e.js +2107 -0
  505. package/.next/static/chunks/11plpfj6j22fq.js +3 -0
  506. package/.next/static/chunks/{3ly7b47esdb7j.js → 1on4c-091wzdq.js} +1 -1
  507. package/.next/static/chunks/22vfp8880q59s.js +1 -0
  508. package/.next/static/chunks/2kf1_d5fndxdb.js +1 -0
  509. package/.next/static/chunks/{0_8ovyz2sbr3p.js → 2m7a38m38tx5y.js} +1 -1
  510. package/.next/static/chunks/31q2_z_ekk94r.js +1 -0
  511. package/.next/static/chunks/34lxzt8ahe_9n.js +1 -0
  512. package/.next/static/chunks/3fgzdr870mbms.js +2 -0
  513. package/.next/static/chunks/3gzt07wmbrocf.js +12 -0
  514. package/.next/static/chunks/3j_ko3wq2nvby.js +1 -0
  515. package/.next/static/chunks/3l3l7u2t-n2fh.js +3 -0
  516. package/.next/static/chunks/3l4yjycfav_7a.js +1 -0
  517. package/.next/static/chunks/3s8g1yx5n4kmt.js +1 -0
  518. package/.next/static/chunks/3v8szq-k4jtkg.js +1 -0
  519. package/.next/static/chunks/3xp-i_0-8cq9_.js +1 -0
  520. package/.next/static/chunks/41mb4xnwp-aq_.js +1 -0
  521. package/README.md +7 -2
  522. package/bin/vibedoc.check.mts +25 -0
  523. package/bin/vibedoc.mjs +9 -0
  524. package/docs/getting-started.md +93 -0
  525. package/package.json +3 -1
  526. package/.next/server/chunks/0_g__next_1qpfvou._.js +0 -158
  527. package/.next/server/chunks/0_g__next_1qpfvou._.js.map +0 -1
  528. package/.next/server/chunks/11mp_@anthropic-ai_sdk_08rl0hf._.js +0 -3
  529. package/.next/server/chunks/11mp_@anthropic-ai_sdk_09ujrsu._.js +0 -3
  530. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0c3_7p7._.js +0 -3
  531. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0cto43x._.js +0 -3
  532. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0fgisb_._.js +0 -3
  533. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0fy8wd3._.js +0 -3
  534. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0fyvizf._.js +0 -3
  535. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0hg0i2g._.js +0 -3
  536. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0i0sz05._.js +0 -3
  537. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0l0j9c6._.js +0 -3
  538. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0lcm61d._.js +0 -3
  539. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0qtva5j._.js +0 -3
  540. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0r4fkdu._.js +0 -3
  541. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0wbae0t._.js +0 -3
  542. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0wxyz1t._.js +0 -3
  543. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0y2cods._.js +0 -3
  544. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0zu0fj1._.js +0 -3
  545. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0zxpgt0._.js +0 -3
  546. package/.next/server/chunks/11mp_@anthropic-ai_sdk_10_cxcd._.js +0 -3
  547. package/.next/server/chunks/11mp_@anthropic-ai_sdk_10gb7d1._.js +0 -3
  548. package/.next/server/chunks/11mp_@anthropic-ai_sdk_12q70bs._.js +0 -3
  549. package/.next/server/chunks/11mp_@anthropic-ai_sdk_149ltk3._.js +0 -3
  550. package/.next/server/chunks/11mp_@anthropic-ai_sdk_165_uiw._.js +0 -3
  551. package/.next/server/chunks/11mp_@anthropic-ai_sdk_19w4zh6._.js +0 -3
  552. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1adck-s._.js +0 -3
  553. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1c2dwoi._.js +0 -3
  554. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1d9lw_2._.js +0 -3
  555. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1db6a7p._.js +0 -3
  556. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1h2f90s._.js +0 -3
  557. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1k5_i1z._.js +0 -3
  558. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1p3mv6i._.js +0 -3
  559. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1qoom5s._.js +0 -3
  560. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1qsbcbe._.js +0 -3
  561. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1rk0x59._.js +0 -3
  562. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1sd98mi._.js +0 -3
  563. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1sumqg8._.js +0 -3
  564. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1t-rt4q._.js +0 -3
  565. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1tr-k4y._.js +0 -3
  566. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1xk3c39._.js +0 -3
  567. package/.next/server/chunks/11mp_@anthropic-ai_sdk_206l10_._.js +0 -3
  568. package/.next/server/chunks/11mp_@anthropic-ai_sdk_20giys9._.js +0 -3
  569. package/.next/server/chunks/11mp_@anthropic-ai_sdk_20xrvvy._.js +0 -3
  570. package/.next/server/chunks/11mp_@anthropic-ai_sdk_215tg00._.js +0 -3
  571. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_018s_10._.js +0 -3
  572. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_08d6i7w._.js +0 -3
  573. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_09_fd9g._.js +0 -3
  574. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_0eopml6._.js +0 -3
  575. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_0f5epel._.js +0 -3
  576. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_0okfnhu._.js +0 -3
  577. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_0s8-ha8._.js +0 -3
  578. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_0ujs27r._.js +0 -3
  579. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_0uo7rs8._.js +0 -3
  580. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_0vyq_2d._.js +0 -3
  581. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_0w3js74._.js +0 -3
  582. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_0xa4-uq._.js +0 -3
  583. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_113y3so._.js +0 -3
  584. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_12qcr96._.js +0 -3
  585. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_13ixdy8._.js +0 -3
  586. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1708vst._.js +0 -3
  587. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1_rdguq._.js +0 -3
  588. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1bgpe23._.js +0 -3
  589. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1f-tphn._.js +0 -3
  590. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1h1pqdh._.js +0 -3
  591. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1hfj_1d._.js +0 -3
  592. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1ih2qzz._.js +0 -3
  593. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1jatyl1._.js +0 -3
  594. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1v1zbha._.js +0 -3
  595. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1vyqs5z._.js +0 -3
  596. package/.next/server/chunks/[root-of-the-server]__00usbi3._.js +0 -3
  597. package/.next/server/chunks/[root-of-the-server]__00usbi3._.js.map +0 -1
  598. package/.next/server/chunks/[root-of-the-server]__04cwur0._.js +0 -3
  599. package/.next/server/chunks/[root-of-the-server]__04cwur0._.js.map +0 -1
  600. package/.next/server/chunks/[root-of-the-server]__05-be3n._.js +0 -3
  601. package/.next/server/chunks/[root-of-the-server]__05us508._.js +0 -3
  602. package/.next/server/chunks/[root-of-the-server]__089ay-q._.js.map +0 -1
  603. package/.next/server/chunks/[root-of-the-server]__09oyvwa._.js +0 -3
  604. package/.next/server/chunks/[root-of-the-server]__09oyvwa._.js.map +0 -1
  605. package/.next/server/chunks/[root-of-the-server]__0b6w_wb._.js +0 -3
  606. package/.next/server/chunks/[root-of-the-server]__0d4t4q6._.js +0 -3
  607. package/.next/server/chunks/[root-of-the-server]__0d4t4q6._.js.map +0 -1
  608. package/.next/server/chunks/[root-of-the-server]__0dgwykw._.js +0 -3
  609. package/.next/server/chunks/[root-of-the-server]__0exzf-v._.js +0 -3
  610. package/.next/server/chunks/[root-of-the-server]__0exzf-v._.js.map +0 -1
  611. package/.next/server/chunks/[root-of-the-server]__0fn-a8c._.js +0 -105
  612. package/.next/server/chunks/[root-of-the-server]__0fn-a8c._.js.map +0 -1
  613. package/.next/server/chunks/[root-of-the-server]__0gnil0m._.js +0 -3
  614. package/.next/server/chunks/[root-of-the-server]__0gnil0m._.js.map +0 -1
  615. package/.next/server/chunks/[root-of-the-server]__0hg1r2b._.js +0 -3
  616. package/.next/server/chunks/[root-of-the-server]__0khz7sy._.js +0 -3
  617. package/.next/server/chunks/[root-of-the-server]__0khz7sy._.js.map +0 -1
  618. package/.next/server/chunks/[root-of-the-server]__0lf11mz._.js +0 -3
  619. package/.next/server/chunks/[root-of-the-server]__0lf11mz._.js.map +0 -1
  620. package/.next/server/chunks/[root-of-the-server]__0lix3ru._.js +0 -3
  621. package/.next/server/chunks/[root-of-the-server]__0lix3ru._.js.map +0 -1
  622. package/.next/server/chunks/[root-of-the-server]__0pe1qih._.js +0 -3
  623. package/.next/server/chunks/[root-of-the-server]__0pvi3ku._.js +0 -105
  624. package/.next/server/chunks/[root-of-the-server]__0pvi3ku._.js.map +0 -1
  625. package/.next/server/chunks/[root-of-the-server]__0rggulw._.js +0 -3
  626. package/.next/server/chunks/[root-of-the-server]__0s-j6z-._.js +0 -3
  627. package/.next/server/chunks/[root-of-the-server]__0s-j6z-._.js.map +0 -1
  628. package/.next/server/chunks/[root-of-the-server]__0s8v5i-._.js +0 -3
  629. package/.next/server/chunks/[root-of-the-server]__0s8v5i-._.js.map +0 -1
  630. package/.next/server/chunks/[root-of-the-server]__0vf-0gp._.js +0 -3
  631. package/.next/server/chunks/[root-of-the-server]__0yaxn8g._.js +0 -3
  632. package/.next/server/chunks/[root-of-the-server]__0yaxn8g._.js.map +0 -1
  633. package/.next/server/chunks/[root-of-the-server]__15c5snv._.js +0 -3
  634. package/.next/server/chunks/[root-of-the-server]__15c5snv._.js.map +0 -1
  635. package/.next/server/chunks/[root-of-the-server]__16smlkg._.js +0 -3
  636. package/.next/server/chunks/[root-of-the-server]__16smlkg._.js.map +0 -1
  637. package/.next/server/chunks/[root-of-the-server]__18dt3sr._.js +0 -3
  638. package/.next/server/chunks/[root-of-the-server]__19yo85m._.js +0 -3
  639. package/.next/server/chunks/[root-of-the-server]__19yo85m._.js.map +0 -1
  640. package/.next/server/chunks/[root-of-the-server]__1a7d63a._.js +0 -3
  641. package/.next/server/chunks/[root-of-the-server]__1a7d63a._.js.map +0 -1
  642. package/.next/server/chunks/[root-of-the-server]__1e68zmx._.js +0 -3
  643. package/.next/server/chunks/[root-of-the-server]__1e68zmx._.js.map +0 -1
  644. package/.next/server/chunks/[root-of-the-server]__1jel07j._.js +0 -3
  645. package/.next/server/chunks/[root-of-the-server]__1jel07j._.js.map +0 -1
  646. package/.next/server/chunks/[root-of-the-server]__1la-6xe._.js +0 -3
  647. package/.next/server/chunks/[root-of-the-server]__1la-6xe._.js.map +0 -1
  648. package/.next/server/chunks/[root-of-the-server]__1ntu_6r._.js +0 -3
  649. package/.next/server/chunks/[root-of-the-server]__1p4ws5z._.js +0 -3
  650. package/.next/server/chunks/[root-of-the-server]__1p4ws5z._.js.map +0 -1
  651. package/.next/server/chunks/[root-of-the-server]__1p6-0l0._.js +0 -3
  652. package/.next/server/chunks/[root-of-the-server]__1pjwaan._.js +0 -3
  653. package/.next/server/chunks/[root-of-the-server]__1r_0uma._.js +0 -3
  654. package/.next/server/chunks/[root-of-the-server]__1s0t8r3._.js +0 -3
  655. package/.next/server/chunks/[root-of-the-server]__1sd3l-d._.js.map +0 -1
  656. package/.next/server/chunks/[root-of-the-server]__1skrybv._.js +0 -3
  657. package/.next/server/chunks/[root-of-the-server]__1vnine1._.js +0 -105
  658. package/.next/server/chunks/[root-of-the-server]__1vnine1._.js.map +0 -1
  659. package/.next/server/chunks/[root-of-the-server]__1wcd2x9._.js +0 -3
  660. package/.next/server/chunks/ssr/_0-_04ia._.js +0 -3
  661. package/.next/server/chunks/ssr/_0-_04ia._.js.map +0 -1
  662. package/.next/server/chunks/ssr/_0kob2si._.js +0 -151
  663. package/.next/server/chunks/ssr/_0kob2si._.js.map +0 -1
  664. package/.next/server/chunks/ssr/_128p7pz._.js +0 -3
  665. package/.next/server/chunks/ssr/_128p7pz._.js.map +0 -1
  666. package/.next/server/chunks/ssr/_1hm7p_8._.js +0 -3
  667. package/.next/server/chunks/ssr/_1hm7p_8._.js.map +0 -1
  668. package/.next/server/chunks/ssr/_1r_t_wi._.js +0 -3
  669. package/.next/server/chunks/ssr/_1s-2jub._.js +0 -3
  670. package/.next/server/chunks/ssr/_1s-2jub._.js.map +0 -1
  671. package/.next/server/chunks/ssr/node_modules__pnpm_0zz55xq._.js.map +0 -1
  672. package/.next/static/chunks/03tzhv775qv5m.js +0 -1
  673. package/.next/static/chunks/05qw7-fs1exlt.js +0 -1
  674. package/.next/static/chunks/05rjl54wa6y43.js +0 -1
  675. package/.next/static/chunks/0eax07u1ta6tp.css +0 -1
  676. package/.next/static/chunks/0lfd3aomz4wv4.js +0 -1
  677. package/.next/static/chunks/0po8atank1p02.js +0 -12
  678. package/.next/static/chunks/11ou9nrpdg4qo.js +0 -3
  679. package/.next/static/chunks/1b9r_vdcewfu7.js +0 -1
  680. package/.next/static/chunks/1c459q7xpgq6r.js +0 -3
  681. package/.next/static/chunks/1c_8t2kecjnua.js +0 -1
  682. package/.next/static/chunks/1g7st54huk4if.js +0 -1
  683. package/.next/static/chunks/1v63qs4kxxcfh.js +0 -1
  684. package/.next/static/chunks/2-0lpccy0f8bk.js +0 -2
  685. package/.next/static/chunks/36s2k2k_w-or8.js +0 -1
  686. package/.next/static/chunks/37u2gjz5dzhep.js +0 -1
  687. package/.next/static/chunks/3ctec-7mnm19m.js +0 -1
  688. package/.next/static/chunks/40diykjra8f9n.js +0 -2107
  689. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_013qeb4._.js.map → 11mp_@anthropic-ai_sdk_0-smxh7._.js.map} +0 -0
  690. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_05ck8py._.js.map → 11mp_@anthropic-ai_sdk_0-upxuo._.js.map} +0 -0
  691. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_05w8m72._.js.map → 11mp_@anthropic-ai_sdk_00stvd0._.js.map} +0 -0
  692. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_086oevc._.js.map → 11mp_@anthropic-ai_sdk_05tlp4j._.js.map} +0 -0
  693. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_08rl0hf._.js.map → 11mp_@anthropic-ai_sdk_06i1jku._.js.map} +0 -0
  694. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_09ujrsu._.js.map → 11mp_@anthropic-ai_sdk_06pqlwo._.js.map} +0 -0
  695. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0c3_7p7._.js.map → 11mp_@anthropic-ai_sdk_06q_bm6._.js.map} +0 -0
  696. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0cto43x._.js.map → 11mp_@anthropic-ai_sdk_098dref._.js.map} +0 -0
  697. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0fgisb_._.js.map → 11mp_@anthropic-ai_sdk_09q07e_._.js.map} +0 -0
  698. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0fy8wd3._.js.map → 11mp_@anthropic-ai_sdk_09r9wsn._.js.map} +0 -0
  699. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0fyvizf._.js.map → 11mp_@anthropic-ai_sdk_0_rnqa6._.js.map} +0 -0
  700. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0hg0i2g._.js.map → 11mp_@anthropic-ai_sdk_0ch0mdl._.js.map} +0 -0
  701. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0i0sz05._.js.map → 11mp_@anthropic-ai_sdk_0didq3m._.js.map} +0 -0
  702. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0l0j9c6._.js.map → 11mp_@anthropic-ai_sdk_0dwtv_z._.js.map} +0 -0
  703. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0lcm61d._.js.map → 11mp_@anthropic-ai_sdk_0e8sqia._.js.map} +0 -0
  704. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0qtva5j._.js.map → 11mp_@anthropic-ai_sdk_0gk-rze._.js.map} +0 -0
  705. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0r4fkdu._.js.map → 11mp_@anthropic-ai_sdk_0gywxp1._.js.map} +0 -0
  706. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0wbae0t._.js.map → 11mp_@anthropic-ai_sdk_0h4l0yx._.js.map} +0 -0
  707. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0wxyz1t._.js.map → 11mp_@anthropic-ai_sdk_0hjmy82._.js.map} +0 -0
  708. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0y2cods._.js.map → 11mp_@anthropic-ai_sdk_0jbmnx_._.js.map} +0 -0
  709. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0zu0fj1._.js.map → 11mp_@anthropic-ai_sdk_0l7teck._.js.map} +0 -0
  710. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0zxpgt0._.js.map → 11mp_@anthropic-ai_sdk_0ldf-lc._.js.map} +0 -0
  711. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_10_cxcd._.js.map → 11mp_@anthropic-ai_sdk_0oe9p6l._.js.map} +0 -0
  712. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_10gb7d1._.js.map → 11mp_@anthropic-ai_sdk_0ppgi2h._.js.map} +0 -0
  713. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_12q70bs._.js.map → 11mp_@anthropic-ai_sdk_0ydb8nm._.js.map} +0 -0
  714. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_149ltk3._.js.map → 11mp_@anthropic-ai_sdk_11hsr1e._.js.map} +0 -0
  715. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_165_uiw._.js.map → 11mp_@anthropic-ai_sdk_14pgcis._.js.map} +0 -0
  716. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_19w4zh6._.js.map → 11mp_@anthropic-ai_sdk_15_sqq8._.js.map} +0 -0
  717. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1adck-s._.js.map → 11mp_@anthropic-ai_sdk_16up-b0._.js.map} +0 -0
  718. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1c2dwoi._.js.map → 11mp_@anthropic-ai_sdk_1_jm94w._.js.map} +0 -0
  719. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1d9lw_2._.js.map → 11mp_@anthropic-ai_sdk_1aswx0v._.js.map} +0 -0
  720. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1db6a7p._.js.map → 11mp_@anthropic-ai_sdk_1bkea9c._.js.map} +0 -0
  721. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1h2f90s._.js.map → 11mp_@anthropic-ai_sdk_1d41_6l._.js.map} +0 -0
  722. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1k5_i1z._.js.map → 11mp_@anthropic-ai_sdk_1d959rx._.js.map} +0 -0
  723. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1p3mv6i._.js.map → 11mp_@anthropic-ai_sdk_1eughke._.js.map} +0 -0
  724. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1qoom5s._.js.map → 11mp_@anthropic-ai_sdk_1ev29eb._.js.map} +0 -0
  725. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1qsbcbe._.js.map → 11mp_@anthropic-ai_sdk_1faxy2m._.js.map} +0 -0
  726. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1rk0x59._.js.map → 11mp_@anthropic-ai_sdk_1lginb1._.js.map} +0 -0
  727. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1sd98mi._.js.map → 11mp_@anthropic-ai_sdk_1pg6fky._.js.map} +0 -0
  728. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1sumqg8._.js.map → 11mp_@anthropic-ai_sdk_1qfho5e._.js.map} +0 -0
  729. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1t-rt4q._.js.map → 11mp_@anthropic-ai_sdk_1r9e6jv._.js.map} +0 -0
  730. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1tr-k4y._.js.map → 11mp_@anthropic-ai_sdk_1tjlpeq._.js.map} +0 -0
  731. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1xk3c39._.js.map → 11mp_@anthropic-ai_sdk_1wcdj4f._.js.map} +0 -0
  732. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_206l10_._.js.map → 11mp_@anthropic-ai_sdk_1x25dnb._.js.map} +0 -0
  733. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_20giys9._.js.map → 11mp_@anthropic-ai_sdk_1ywjkuh._.js.map} +0 -0
  734. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_20xrvvy._.js.map → 11mp_@anthropic-ai_sdk_1zbnql3._.js.map} +0 -0
  735. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_215tg00._.js.map → 11mp_@anthropic-ai_sdk_208gclq._.js.map} +0 -0
  736. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_018s_10._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_07rnikd._.js.map} +0 -0
  737. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_08d6i7w._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_0cxqkzo._.js.map} +0 -0
  738. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_09_fd9g._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_0iemvsj._.js.map} +0 -0
  739. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_0eopml6._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_0losy1p._.js.map} +0 -0
  740. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_0f5epel._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_0q2-o56._.js.map} +0 -0
  741. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_0okfnhu._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_0v9tonm._.js.map} +0 -0
  742. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_0s8-ha8._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_0ve_28v._.js.map} +0 -0
  743. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_0ujs27r._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_0vta7f6._.js.map} +0 -0
  744. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_0uo7rs8._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_0xme80s._.js.map} +0 -0
  745. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_0vyq_2d._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_12tnhho._.js.map} +0 -0
  746. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_0w3js74._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_14-nnf3._.js.map} +0 -0
  747. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_0xa4-uq._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_14e0xcw._.js.map} +0 -0
  748. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_113y3so._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_1cbywiw._.js.map} +0 -0
  749. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_12qcr96._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_1d4fc7y._.js.map} +0 -0
  750. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_13ixdy8._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_1e89sld._.js.map} +0 -0
  751. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_1708vst._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_1emt011._.js.map} +0 -0
  752. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_1_rdguq._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_1jgaffx._.js.map} +0 -0
  753. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_1bgpe23._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_1m9p_w8._.js.map} +0 -0
  754. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_1f-tphn._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_1mtv1gy._.js.map} +0 -0
  755. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_1h1pqdh._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_1plmrbl._.js.map} +0 -0
  756. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_1hfj_1d._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_1toqkb5._.js.map} +0 -0
  757. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_1ih2qzz._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_1yc8ml3._.js.map} +0 -0
  758. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_1jatyl1._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_1ycnogk._.js.map} +0 -0
  759. /package/.next/server/chunks/{[root-of-the-server]__1vzxnjb._.js.map → [root-of-the-server]__0adl8c2._.js.map} +0 -0
  760. /package/.next/server/chunks/{[root-of-the-server]__04ri_ci._.js.map → [root-of-the-server]__0r_831n._.js.map} +0 -0
  761. /package/.next/server/chunks/{[root-of-the-server]__0756_60._.js.map → [root-of-the-server]__0tzsbyx._.js.map} +0 -0
  762. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_1v1zbha._.js.map → [root-of-the-server]__1_q8upn._.js.map} +0 -0
  763. /package/.next/server/chunks/{[root-of-the-server]__1zeys20._.js.map → [root-of-the-server]__1hz94ca._.js.map} +0 -0
  764. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_1vyqs5z._.js.map → [root-of-the-server]__1pf07ha._.js.map} +0 -0
  765. /package/.next/server/chunks/{[root-of-the-server]__05-be3n._.js.map → ssr/0_nd_mermaid_dist_mermaid_core_mjs_1trh599._.js.map} +0 -0
  766. /package/.next/server/chunks/{[root-of-the-server]__0n0myt9._.js.map → ssr/1u84_katex_dist_katex_mjs_0wukkxe._.js.map} +0 -0
  767. /package/.next/server/chunks/ssr/{[root-of-the-server]__08z0szh._.js.map → [root-of-the-server]__0p_ieww._.js.map} +0 -0
  768. /package/.next/server/chunks/ssr/{[root-of-the-server]__1wdwnnp._.js.map → [root-of-the-server]__1ecvjg8._.js.map} +0 -0
  769. /package/.next/server/chunks/ssr/{0_nd_mermaid_dist_mermaid_core_mjs_0y_edkq._.js.map → _next-internal_server_app_(app)_getting-started_page_actions_18jod7i.js.map} +0 -0
  770. /package/.next/server/chunks/ssr/{1u84_katex_dist_katex_mjs_0yg8zto._.js.map → _next-internal_server_app_welcome_page_actions_1unjea7.js.map} +0 -0
  771. /package/.next/server/chunks/ssr/{node_modules__pnpm_03mp7qw._.js.map → node_modules__pnpm_0-6sq9f._.js.map} +0 -0
  772. /package/.next/server/chunks/ssr/{node_modules__pnpm_0jampur._.js.map → node_modules__pnpm_0-vta96._.js.map} +0 -0
  773. /package/.next/server/chunks/ssr/{_1r_t_wi._.js.map → node_modules__pnpm_04qn321._.js.map} +0 -0
  774. /package/.next/server/chunks/ssr/{node_modules__pnpm_0tn5pg3._.js.map → node_modules__pnpm_06r-oci._.js.map} +0 -0
  775. /package/.next/server/chunks/ssr/{node_modules__pnpm_0iu4132._.js.map → node_modules__pnpm_0fe8aya._.js.map} +0 -0
  776. /package/.next/server/chunks/ssr/{node_modules__pnpm_0oyo3yo._.js.map → node_modules__pnpm_0hpufx1._.js.map} +0 -0
  777. /package/.next/server/chunks/ssr/{node_modules__pnpm_00f4yhs._.js.map → node_modules__pnpm_0k5j0_5._.js.map} +0 -0
  778. /package/.next/server/chunks/ssr/{node_modules__pnpm_0x5wj-4._.js.map → node_modules__pnpm_0kv8p99._.js.map} +0 -0
  779. /package/.next/server/chunks/ssr/{node_modules__pnpm_06_8fr8._.js.map → node_modules__pnpm_0m-_au1._.js.map} +0 -0
  780. /package/.next/server/chunks/ssr/{node_modules__pnpm_1zme4rg._.js.map → node_modules__pnpm_0mrjd3b._.js.map} +0 -0
  781. /package/.next/server/chunks/ssr/{node_modules__pnpm_0mqeoh-._.js.map → node_modules__pnpm_0p2ufg5._.js.map} +0 -0
  782. /package/.next/server/chunks/ssr/{node_modules__pnpm_03mpmzx._.js.map → node_modules__pnpm_0r2omyh._.js.map} +0 -0
  783. /package/.next/server/chunks/ssr/{node_modules__pnpm_0_e05ka._.js.map → node_modules__pnpm_0uh9zwf._.js.map} +0 -0
  784. /package/.next/server/chunks/ssr/{node_modules__pnpm_035haet._.js.map → node_modules__pnpm_0ujugl_._.js.map} +0 -0
  785. /package/.next/server/chunks/ssr/{node_modules__pnpm_0lkvbt-._.js.map → node_modules__pnpm_0v-_iaj._.js.map} +0 -0
  786. /package/.next/server/chunks/ssr/{node_modules__pnpm_0rq9x9q._.js.map → node_modules__pnpm_0xin4nu._.js.map} +0 -0
  787. /package/.next/server/chunks/ssr/{node_modules__pnpm_139-v1i._.js.map → node_modules__pnpm_1-zfovp._.js.map} +0 -0
  788. /package/.next/server/chunks/ssr/{node_modules__pnpm_1i_chik._.js.map → node_modules__pnpm_11p7w0z._.js.map} +0 -0
  789. /package/.next/server/chunks/ssr/{node_modules__pnpm_1jgju12._.js.map → node_modules__pnpm_16l16l0._.js.map} +0 -0
  790. /package/.next/server/chunks/ssr/{node_modules__pnpm_1n9oeu0._.js.map → node_modules__pnpm_16vl5yb._.js.map} +0 -0
  791. /package/.next/server/chunks/ssr/{node_modules__pnpm_1ydeqw6._.js.map → node_modules__pnpm_1alnvos._.js.map} +0 -0
  792. /package/.next/server/chunks/ssr/{node_modules__pnpm_03an60e._.js.map → node_modules__pnpm_1e_74v6._.js.map} +0 -0
  793. /package/.next/server/chunks/ssr/{node_modules__pnpm_2045l51._.js.map → node_modules__pnpm_1kvkjrs._.js.map} +0 -0
  794. /package/.next/server/chunks/ssr/{node_modules__pnpm_0j_-le7._.js.map → node_modules__pnpm_1l4yejo._.js.map} +0 -0
  795. /package/.next/server/chunks/ssr/{node_modules__pnpm_1ws3ez9._.js.map → node_modules__pnpm_1uly489._.js.map} +0 -0
  796. /package/.next/server/chunks/ssr/{node_modules__pnpm_1zum4yd._.js.map → node_modules__pnpm_1xntybk._.js.map} +0 -0
  797. /package/.next/server/chunks/ssr/{node_modules__pnpm_09nd7ia._.js.map → node_modules__pnpm_20g30gl._.js.map} +0 -0
  798. /package/.next/static/{P1gxTEpKVh-OOtIXC432U → BQD2S1kA-_gIYFyMKyJ2F}/_buildManifest.js +0 -0
  799. /package/.next/static/{P1gxTEpKVh-OOtIXC432U → BQD2S1kA-_gIYFyMKyJ2F}/_clientMiddlewareManifest.js +0 -0
  800. /package/.next/static/{P1gxTEpKVh-OOtIXC432U → BQD2S1kA-_gIYFyMKyJ2F}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/app/api/mcp/route.ts","../../../node_modules/.pnpm/next%4016.3.6_%40babel%2Bcore%407.29.7_%40types%2Bnode%4022.20.4_react-dom%4019.3.0_react%4019.3.0__react%4019.3.0/node_modules/next/src/build/templates/app-route.ts"],"sourcesContent":["/**\n * /api/mcp\n *\n * MCP server over HTTP (Streamable HTTP transport).\n * AI agents (Claude Code, Cursor, Windsurf) connect here.\n *\n * Config in Claude Code:\n * {\n * \"mcpServers\": {\n * \"vibedoc\": {\n * \"url\": \"http://localhost:3000/api/mcp\"\n * }\n * }\n * }\n */\n\nimport { NextRequest, NextResponse } from \"next/server\";\nimport { ENTRY_TYPES, type EntryInput } from \"@/lib/entries\";\nimport { formatCompactLine, tokenize } from \"@/lib/recall\";\nimport { formatEntryLinks } from \"@/lib/memory-graph\";\nimport { docLinks, formatRelatedFiles } from \"@/lib/doc-links\";\nimport {\n getConfiguredRoot,\n listDocs,\n readDoc,\n searchDocs,\n writeDoc,\n createDoc,\n getContext,\n getProjectSummary,\n listTasks,\n getTask,\n updateTaskStatus,\n saveManualTests,\n claimNextTask,\n logDecision,\n updateMemory,\n listMemoryVersions,\n getMemoryVersion,\n restoreMemoryVersion,\n saveEntry,\n deleteEntry,\n sessionStartMemory,\n backfillEpisodes,\n currentSessionId,\n writeRunEpisode,\n recallEntries,\n relatedEntries,\n getEntriesByIds,\n markEntriesRecalled,\n getMemoryGraph,\n noteDocEdit,\n setDocProperties,\n readProjectSettings,\n logSessionStart,\n readActivity,\n getDocGraph,\n appendDoc,\n renameDoc,\n deleteDoc,\n listExplorerFiles,\n readRegistry,\n rebuildRegistry,\n updateRegistryAnnotation,\n editDoc,\n listRoadmap,\n createRoadmapItem,\n updateRoadmapItem,\n readPlanningSkill,\n TaskStatus,\n type PlanningKind,\n type CreateRoadmapItemParams,\n type UpdateRoadmapItemPatch,\n} from \"@/lib/core\";\nimport type { TextEdit } from \"@/lib/diff\";\nimport { agentFromUserAgent } from \"@/lib/owner\";\nimport type { StatusDef } from \"@/lib/statuses\";\nimport { planTarget, validatePlan, type Plan } from \"@/lib/plan\";\nimport { TEMPLATES } from \"@/lib/templates\";\nimport { emitUpdate } from \"@/lib/events\";\nimport { groupSessions, sessionDuration, sessionsForTask } from \"@/lib/sessions\";\nimport { dueState, localToday, roadmapHealth, type TaskInfo } from \"@/lib/roadmap-health\";\nimport { latestReview } from \"@/lib/review\";\nimport { PRIORITIES, type Priority } from \"@/lib/doc-priority\";\n\n// Simple hand-rolled MCP handler (avoids stdio transport issues in Next.js)\n// Implements the JSON-RPC 2.0 MCP protocol directly.\n\ntype JsonRpcRequest = {\n jsonrpc: \"2.0\";\n id: string | number | null;\n method: string;\n params?: Record<string, unknown>;\n};\n\nfunction ok(id: JsonRpcRequest[\"id\"], result: unknown) {\n return NextResponse.json({ jsonrpc: \"2.0\", id, result });\n}\n\nfunction err(id: JsonRpcRequest[\"id\"], code: number, message: string) {\n return NextResponse.json({ jsonrpc: \"2.0\", id, error: { code, message } });\n}\n\nconst MAX_ENTRY_IDS = 20;\nconst withGap = (block: string) => (block ? `\\n\\n${block}` : \"\");\n\nconst TOOLS = [\n {\n name: \"vibedoc_get_status\",\n description:\n \"Get project status overview: active tasks, blockers, doc count, memory. Call this at session start.\",\n inputSchema: { type: \"object\", properties: {}, required: [] },\n },\n {\n name: \"vibedoc_get_sessions\",\n description:\n \"Agent and human sessions grouped from the activity log, newest first: who, when, tasks moved, docs changed, ADRs. Call at session start to see what happened recently.\",\n inputSchema: {\n type: \"object\",\n properties: {\n limit: { type: \"number\", description: \"Max sessions to return (default 10)\" },\n taskId: { type: \"string\", description: 'Only sessions that moved this task, e.g. \"T003\"' },\n since: { type: \"string\", description: \"ISO timestamp; only sessions that ended at or after it\" },\n },\n required: [],\n },\n },\n {\n name: \"vibedoc_read_doc\",\n description:\n 'Read a doc file by name. Use: \"CLAUDE\", \"HLD\", \"EVENT_CATALOG\", \"MEMORY\", \"user-service/API\", \"ADR-001\". Ends with a \"## Related files\" footer when the doc has links: what it links to, what links to it (docs by path; tasks, epics, entries, ADRs by id) broken links ([x](y.md) / [[y]] to no file) and stale paths (backticked paths to missing files), so you know what to read next.',\n inputSchema: {\n type: \"object\",\n properties: {\n query: {\n type: \"string\",\n description: 'Doc name, e.g. \"CLAUDE\", \"HLD\", \"user-service/API\"',\n },\n },\n required: [\"query\"],\n },\n },\n {\n name: \"vibedoc_list_docs\",\n description:\n \"List all documentation files grouped by section, with each doc's priority (P0 highest) when set. Use to discover what docs exist.\",\n inputSchema: { type: \"object\", properties: {}, required: [] },\n },\n {\n name: \"vibedoc_set_doc_priority\",\n description:\n 'Set a doc\\'s priority (P0 highest … P3 lowest), or clear it with null. Stored as `priority:` in the doc\\'s frontmatter; nothing else in the file changes.',\n inputSchema: {\n type: \"object\",\n properties: {\n path: { type: \"string\", description: 'Relative path from project root, e.g. \"docs/api/my-guide.md\"' },\n priority: { type: [\"string\", \"null\"], enum: [...PRIORITIES, null], description: \"P0, P1, P2, P3, or null to clear\" },\n },\n required: [\"path\", \"priority\"],\n },\n },\n {\n name: \"vibedoc_search_docs\",\n description:\n \"Full-text search across all docs. Returns files and line snippets.\",\n inputSchema: {\n type: \"object\",\n properties: { query: { type: \"string\", description: \"Search term\" } },\n required: [\"query\"],\n },\n },\n {\n name: \"vibedoc_write_doc\",\n description:\n 'Write or create a documentation file. Use to add new docs or update existing ones. Path is relative to project root (e.g., \"docs/api/endpoints.md\"). Creates parent directories as needed. Triggers real-time browser update so the user can review.',\n inputSchema: {\n type: \"object\",\n properties: {\n path: {\n type: \"string\",\n description:\n 'Relative path from project root, e.g. \"docs/api/my-guide.md\"',\n },\n content: {\n type: \"string\",\n description: \"Full markdown content to write\",\n },\n },\n required: [\"path\", \"content\"],\n },\n },\n {\n name: \"vibedoc_list_tasks\",\n description:\n \"List all tasks as a kanban board. Filter by status optionally.\",\n inputSchema: {\n type: \"object\",\n properties: {\n status: {\n type: \"string\",\n enum: [\"all\", \"todo\", \"in-progress\", \"review\", \"blocked\", \"paused\", \"done\", \"cancelled\"],\n },\n },\n required: [],\n },\n },\n {\n name: \"vibedoc_get_task\",\n description:\n \"Read a specific task file including scope, criteria, and definition of done.\",\n inputSchema: {\n type: \"object\",\n properties: {\n taskId: { type: \"string\", description: 'e.g. \"T001\", \"T003\"' },\n },\n required: [\"taskId\"],\n },\n },\n {\n name: \"vibedoc_update_task\",\n description:\n \"Update task status. Call when starting, finishing, or blocking a task. UI updates in real time. \" +\n \"When moving a task to done, include manualTests: a checklist of what a human should click through to trust it, \" +\n \"written from what you actually changed (optional, never blocks the move).\",\n inputSchema: {\n type: \"object\",\n properties: {\n taskId: { type: \"string\" },\n status: {\n type: \"string\",\n enum: [\"todo\", \"in-progress\", \"review\", \"done\", \"blocked\", \"paused\", \"cancelled\"],\n },\n manualTests: {\n type: \"string\",\n description:\n \"Optional manual test report, saved as the task's `## Manual tests` section (replaces an older one). Markdown checklist: \" +\n \"`### Steps` items as `- [ ] <what to do> → <what you should see>`, then `### Regression risk` items for existing features worth re-checking. \" +\n \"Plain lines become unticked steps.\",\n },\n agent: {\n type: \"string\",\n description: 'Your name as the owner of the task, e.g. \"claude\" (defaults to the MCP client\\'s name). Starting a task makes you its owner.',\n },\n },\n required: [\"taskId\", \"status\"],\n },\n },\n {\n name: \"vibedoc_next_task\",\n description:\n \"Claim the next ready task of an epic (deps done, not taken) and move it to in-progress. Call again after marking it done.\",\n inputSchema: {\n type: \"object\",\n properties: {\n epic: { type: \"string\", description: 'Epic roadmap id, e.g. \"R037\"' },\n agent: {\n type: \"string\",\n description: 'Your name as the owner of the task, e.g. \"claude\" (defaults to the MCP client\\'s name). Starting a task makes you its owner.',\n },\n },\n required: [\"epic\"],\n },\n },\n {\n name: \"vibedoc_log_decision\",\n description:\n \"Write a new Architecture Decision Record (ADR) when making a technical decision.\",\n inputSchema: {\n type: \"object\",\n properties: {\n title: { type: \"string\" },\n context: { type: \"string\" },\n decision: { type: \"string\" },\n rationale: { type: \"string\" },\n alternatives: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n option: { type: \"string\" },\n reason: { type: \"string\" },\n },\n },\n },\n consequences: { type: \"string\" },\n },\n required: [\"title\", \"context\", \"decision\"],\n },\n },\n {\n name: \"vibedoc_read_memory\",\n description:\n \"Read MEMORY.md — the session handoff file. Always call this at session start. If it shows '## ⚠ Memory warnings' (the handoff contradicts the board), fix the handoff with vibedoc_update_memory before starting work.\",\n inputSchema: { type: \"object\", properties: {}, required: [] },\n },\n {\n name: \"vibedoc_update_memory\",\n description:\n \"Update MEMORY.md with session summary. Call at END of every session. Only the sections you pass are rewritten; other sections (including hand-written ones) are kept. Durable facts (conventions, gotchas, decisions, preferences) go to vibedoc_save_entry, not the handoff.\",\n inputSchema: {\n type: \"object\",\n properties: {\n currentState: { type: \"string\" },\n justCompleted: { type: \"array\", items: { type: \"string\" } },\n workingOn: { type: \"string\" },\n upNext: { type: \"array\", items: { type: \"string\" } },\n issues: {\n type: \"array\",\n items: {\n oneOf: [\n { type: \"string\" },\n { type: \"object\", properties: { issue: { type: \"string\" }, severity: { type: \"string\" }, status: { type: \"string\" } }, required: [\"issue\"] },\n ],\n },\n },\n decisions: { type: \"array\", items: { type: \"string\" } },\n techDebt: { type: \"array\", items: { type: \"string\" } },\n handoff: { type: \"string\" },\n },\n required: [],\n },\n },\n {\n name: \"vibedoc_memory_history\",\n description:\n \"Earlier versions of MEMORY.md (a copy is saved before every write). No id → list (newest first); id → that version's content; id + restore: true → write it back (the current file is saved first, so a restore is undoable).\",\n inputSchema: {\n type: \"object\",\n properties: {\n id: { type: \"string\", description: \"Version id from the list, e.g. 20261003T154209123Z-ai\" },\n restore: { type: \"boolean\", description: \"With id: restore that version\" },\n },\n required: [],\n },\n },\n {\n name: \"vibedoc_save_entry\",\n description:\n \"Save one long-lived fact (convention, gotcha, decision, preference) as its own entry. Omit id to create; pass id to update. Put facts that should outlast this session here, not in the handoff.\",\n inputSchema: {\n type: \"object\",\n properties: {\n id: { type: \"string\", description: \"Entry id to update, e.g. E001. Omit to create.\" },\n type: { type: \"string\", enum: [...ENTRY_TYPES] },\n summary: { type: \"string\", description: \"One line, at most 120 characters\" },\n body: { type: \"string\", description: \"Details and the why (markdown)\" },\n },\n required: [\"type\", \"summary\"],\n },\n },\n {\n name: \"vibedoc_recall\",\n description:\n \"Search memory entries by topic or keyword. Returns a compact list (id, type, summary); fetch bodies with vibedoc_get_entries.\",\n inputSchema: {\n type: \"object\",\n properties: {\n query: { type: \"string\", description: \"Topic or keywords, e.g. \\\"sse events\\\"\" },\n type: { type: \"string\", enum: [...ENTRY_TYPES] },\n limit: { type: \"number\", description: \"Max results, default 10\" },\n },\n required: [\"query\"],\n },\n },\n {\n name: \"vibedoc_get_entries\",\n description: \"Fetch full knowledge entries (body included) by id, after vibedoc_recall or the session-start index. Max 20 ids per call.\",\n inputSchema: {\n type: \"object\",\n properties: { ids: { type: \"array\", items: { type: \"string\" }, description: 'e.g. [\"E012\", \"E030\"]' } },\n required: [\"ids\"],\n },\n },\n {\n name: \"vibedoc_delete_entry\",\n description: \"Delete a knowledge entry that is wrong or no longer true. Git keeps its history.\",\n inputSchema: {\n type: \"object\",\n properties: { id: { type: \"string\", description: \"e.g. E001\" } },\n required: [\"id\"],\n },\n },\n {\n name: \"vibedoc_create_doc\",\n description:\n \"Create a new doc from a template. Use vibedoc_list_templates to see available IDs. Fails if file exists.\",\n inputSchema: {\n type: \"object\",\n properties: {\n path: { type: \"string\" },\n templateId: { type: \"string\", description: 'Defaults to \"blank\"' },\n },\n required: [\"path\"],\n },\n },\n {\n name: \"vibedoc_list_templates\",\n description: \"List all doc templates with IDs, names, and default paths.\",\n inputSchema: { type: \"object\", properties: {}, required: [] },\n },\n {\n name: \"vibedoc_get_context\",\n description:\n \"Bundle multiple docs into a single context block. Useful for loading several docs at once before starting a task.\",\n inputSchema: {\n type: \"object\",\n properties: {\n paths: {\n type: \"array\",\n items: { type: \"string\" },\n description: \"Array of relative doc paths to bundle\",\n },\n },\n required: [\"paths\"],\n },\n },\n {\n name: \"vibedoc_propose_edit\",\n description:\n \"Propose targeted edits to a doc for the user to review. Does NOT write the file: the user sees a diff in the UI and accepts or rejects it. Each edit replaces one exact old_string (must match exactly once, include enough surrounding text to be unique) with new_string; edits apply in order. Only send the parts that change. For a brand-new doc, use a single edit with an empty old_string.\",\n inputSchema: {\n type: \"object\",\n properties: {\n path: { type: \"string\", description: \"Relative path to the doc file\" },\n edits: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n old_string: { type: \"string\", description: \"Exact text currently in the doc\" },\n new_string: { type: \"string\", description: \"Replacement text\" },\n },\n required: [\"old_string\", \"new_string\"],\n },\n },\n summary: { type: \"string\", description: \"One short line describing the change\" },\n },\n required: [\"path\", \"edits\"],\n },\n },\n {\n name: \"vibedoc_propose_plan\",\n description:\n \"Propose a plan for the user to review: kind \\\"breakdown\\\" (tasks: pass epic for an existing epic, newEpic to create the epic with the tasks, or neither for loose tasks with no epic) or kind \\\"roadmap\\\" (new horizons and epics: horizons + epics; an epic's parent is an existing horizon id or a horizon key in this plan; epic body = one outcome sentence, a blank line, then **In scope:** / **Out of scope:** / **Done when:**). Does NOT write anything: the user sees the plan in the UI, can uncheck items, and accepts. Validated against the current files; on errors, fix the plan and call again. Each task body is the full markdown below the meta block (## Goal, ## Context, ## Scope, ## Files, ## Acceptance criteria, ## Verify). dependsOn lists keys of earlier tasks in this plan or existing task ids (\\\"T030\\\").\",\n inputSchema: {\n type: \"object\",\n properties: {\n plan: {\n type: \"object\",\n properties: {\n kind: { type: \"string\", enum: [\"breakdown\", \"roadmap\"] },\n epic: { type: \"string\", description: \"breakdown: existing epic id, e.g. R004 (not a horizon). Omit with newEpic or for loose tasks\" },\n newEpic: {\n type: \"object\",\n description: \"breakdown from a spec: create this epic and link the tasks to it (not together with epic)\",\n properties: {\n title: { type: \"string\" },\n parent: { type: \"string\", description: \"Existing horizon id, e.g. R002\" },\n body: { type: \"string\", description: \"One outcome sentence, a blank line, then **In scope:** / **Out of scope:** / **Done when:**\" },\n },\n required: [\"title\", \"parent\", \"body\"],\n },\n horizons: {\n type: \"array\",\n description: \"roadmap: new horizons (no parent)\",\n items: {\n type: \"object\",\n properties: { key: { type: \"string\", description: \"e.g. h1\" }, title: { type: \"string\" }, body: { type: \"string\" } },\n required: [\"key\", \"title\"],\n },\n },\n epics: {\n type: \"array\",\n description: \"roadmap: new epics\",\n items: {\n type: \"object\",\n properties: {\n key: { type: \"string\", description: \"e.g. e1\" },\n title: { type: \"string\" },\n parent: { type: \"string\", description: \"Existing horizon id (R002) or a horizon key in this plan (h1)\" },\n body: { type: \"string\" },\n },\n required: [\"key\", \"title\", \"parent\", \"body\"],\n },\n },\n tasks: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n key: { type: \"string\", description: \"Stable key within the plan, e.g. t1\" },\n title: { type: \"string\" },\n size: { type: \"string\", description: \"S (~1 hr) | M (2–3 hrs) | L (half day)\" },\n dependsOn: { type: \"array\", items: { type: \"string\" } },\n due: { type: \"string\", description: \"YYYY-MM-DD\" },\n body: { type: \"string\", description: \"Markdown below the meta block\" },\n },\n required: [\"key\", \"title\", \"body\"],\n },\n },\n },\n required: [\"kind\"],\n },\n },\n required: [\"plan\"],\n },\n },\n {\n name: \"vibedoc_ask_questions\",\n description:\n \"Ask the user 1–4 multiple-choice questions, shown as a card in the chat UI (same shape as AskUserQuestion). The tool can't wait for answers: after calling it, end your turn. The answers arrive as the next user message, one line per question keyed by its header, e.g. `- Scope: Label A, Label B` or `- Scope: Other: \\\"free text\\\"`.\",\n inputSchema: {\n type: \"object\",\n properties: {\n questions: {\n type: \"array\",\n minItems: 1,\n maxItems: 4,\n items: {\n type: \"object\",\n properties: {\n question: { type: \"string\", description: \"The full question\" },\n header: { type: \"string\", description: \"Short label (max ~12 chars), used as the answer key\" },\n multiSelect: { type: \"boolean\", description: \"true = checkboxes, false = one choice\" },\n options: {\n type: \"array\",\n minItems: 2,\n maxItems: 4,\n items: {\n type: \"object\",\n properties: {\n label: { type: \"string\" },\n description: { type: \"string\" },\n },\n required: [\"label\"],\n },\n },\n },\n required: [\"question\", \"header\", \"multiSelect\", \"options\"],\n },\n },\n },\n required: [\"questions\"],\n },\n },\n {\n name: \"vibedoc_get_planning_guide\",\n description:\n \"Load the instructions for planning work from chat. Call this first when the user asks to plan or generate a roadmap (kind \\\"roadmap\\\") or to break an epic into tasks (kind \\\"breakdown\\\"), then follow it.\",\n inputSchema: {\n type: \"object\",\n properties: {\n kind: { type: \"string\", enum: [\"roadmap\", \"breakdown\"] },\n },\n required: [\"kind\"],\n },\n },\n {\n name: \"vibedoc_append_doc\",\n description:\n \"Append content to an existing doc file. Adds two newlines before the appended content.\",\n inputSchema: {\n type: \"object\",\n properties: {\n path: { type: \"string\", description: \"Relative path to the doc file\" },\n content: { type: \"string\", description: \"Content to append\" },\n },\n required: [\"path\", \"content\"],\n },\n },\n {\n name: \"vibedoc_rename_doc\",\n description: \"Rename or move a doc file to a new path.\",\n inputSchema: {\n type: \"object\",\n properties: {\n oldPath: { type: \"string\", description: \"Current path of the doc\" },\n newPath: { type: \"string\", description: \"New path for the doc\" },\n },\n required: [\"oldPath\", \"newPath\"],\n },\n },\n {\n name: \"vibedoc_delete_doc\",\n description: \"Delete a doc file. This action cannot be undone.\",\n inputSchema: {\n type: \"object\",\n properties: {\n path: { type: \"string\", description: \"Path of the doc to delete\" },\n },\n required: [\"path\"],\n },\n },\n {\n name: \"vibedoc_get_file_map\",\n description:\n \"Get a structured map of all documentation files with descriptions and last-modified dates. Use at session start to orient yourself without reading each file individually.\",\n inputSchema: { type: \"object\", properties: {}, required: [] },\n },\n {\n name: \"vibedoc_read_registry\",\n description:\n \"Read docs/REGISTRY.md — file tree + annotations so you know which doc to open for any task. Call at session start after vibedoc_read_memory. If absent, call vibedoc_rebuild_registry first.\",\n inputSchema: { type: \"object\", properties: {}, required: [] },\n },\n {\n name: \"vibedoc_rebuild_registry\",\n description:\n \"Regenerate docs/REGISTRY.md — refreshes the file tree, adds stub rows for new files, and preserves existing descriptions/keywords. Run after adding or removing docs.\",\n inputSchema: { type: \"object\", properties: {}, required: [] },\n },\n {\n name: \"vibedoc_annotate_doc\",\n description:\n \"Add or update the description and keywords for one doc in the registry without a full rebuild.\",\n inputSchema: {\n type: \"object\",\n properties: {\n path: {\n type: \"string\",\n description: 'Relative path of the doc, e.g. \"docs/api-reference.md\"',\n },\n description: {\n type: \"string\",\n description: \"Short description of what this doc contains\",\n },\n keywords: {\n type: \"string\",\n description: \"Comma-separated keywords for this doc\",\n },\n },\n required: [\"path\", \"description\", \"keywords\"],\n },\n },\n {\n name: \"vibedoc_get_roadmap\",\n description:\n \"Get the product roadmap: horizons (spine nodes, e.g. v2.0) with their nested feature items, statuses and linked tasks.\",\n inputSchema: { type: \"object\", properties: {}, required: [] },\n },\n {\n name: \"vibedoc_create_roadmap_item\",\n description:\n \"Create a roadmap item (plans/roadmap/R*.md). Omit parent to create a horizon on the spine; set parent to a horizon id (e.g. R001) to create a feature under it.\",\n inputSchema: {\n type: \"object\",\n properties: {\n title: { type: \"string\" },\n parent: { type: \"string\", description: \"Horizon id, e.g. R001. Omit for a horizon.\" },\n status: { type: \"string\", enum: [\"planned\", \"in-progress\", \"paused\", \"done\"] },\n order: { type: \"number\", description: \"Sort key (steps of 10). Defaults to last among siblings.\" },\n tasks: { type: \"array\", items: { type: \"string\" }, description: 'Linked task ids, e.g. [\"T001\"]' },\n due: { type: \"string\", description: \"Due date YYYY-MM-DD (optional)\" },\n body: { type: \"string\", description: \"Markdown description\" },\n },\n required: [\"title\"],\n },\n },\n {\n name: \"vibedoc_update_roadmap_item\",\n description:\n \"Update fields of a roadmap item. Only the given fields change. parent: null (or \\\"\\\") makes it a horizon.\",\n inputSchema: {\n type: \"object\",\n properties: {\n id: { type: \"string\", description: \"e.g. R004\" },\n title: { type: \"string\" },\n parent: { type: [\"string\", \"null\"] },\n status: { type: \"string\", enum: [\"planned\", \"in-progress\", \"paused\", \"done\"] },\n order: { type: \"number\" },\n tasks: { type: \"array\", items: { type: \"string\" } },\n due: { type: [\"string\", \"null\"], description: \"Due date YYYY-MM-DD; null clears it\" },\n priority: { type: [\"string\", \"null\"], enum: [...PRIORITIES, null], description: \"P0 (highest) … P3; null clears it\" },\n body: { type: \"string\" },\n },\n required: [\"id\"],\n },\n },\n];\n\n/** Maps the terminal skill's tools to the chat tools. The skill text follows it. */\nconst PLANNING_PREAMBLE = `You are running this planning skill inside the VibeDoc chat, not a terminal:\n- Where it says AskUserQuestion, call vibedoc_ask_questions with the same shape, then END YOUR TURN; answers arrive as the next message (\"Answers: - <header>: <labels>\").\n- Where it says to show the draft and ask Create/Adjust, call vibedoc_propose_plan instead (do not ask a Create/Adjust question); the user previews, unchecks and accepts in the UI, and Accept writes everything. Skip the skill's write steps: never call vibedoc_create_roadmap_item, vibedoc_update_roadmap_item or any other write tool, and never write files yourself.\n- Read the project with vibedoc_* tools (vibedoc_get_roadmap, vibedoc_list_tasks, vibedoc_read_doc, vibedoc_search_docs, vibedoc_get_file_map); you have no shell or file access.\n- Skip steps that need a shell or the codebase beyond what those tools return; say so briefly. Tasks written this way know less about the code than a terminal run would; tell the user that once.\n\n---\n\n`;\n\nasync function taskInfoMap(root: string): Promise<Record<string, TaskInfo>> {\n const { tasks } = await listTasks(root);\n return Object.fromEntries(tasks.map((t) => [t.id, { status: t.status, due: t.due }]));\n}\n\n/** After a task move, point the agent at roadmap items linking it that are now out of sync. */\nasync function roadmapHint(root: string, taskId: string): Promise<string> {\n const { items } = await listRoadmap(root);\n const linked = new Set(items.filter((i) => i.tasks.includes(taskId)).map((i) => i.id));\n if (!linked.size) return \"\";\n const { drift } = roadmapHealth(items, await taskInfoMap(root), localToday());\n const hits = drift.filter((d) => d.suggestedStatus && linked.has(d.id));\n if (!hits.length) return \"\";\n return \"\\n\\n🗺️ Roadmap out of sync:\\n\" + hits\n .map((d) => `- ${d.message} → vibedoc_update_roadmap_item { \"id\": \"${d.id}\", \"status\": \"${d.suggestedStatus}\" }`)\n .join(\"\\n\");\n}\n\n/** `agent` is who is calling (args.agent, else the MCP client from its User-Agent); starting a task makes it the owner. */\nasync function handleTool(name: string, args: Record<string, unknown>, root: string, agent = \"agent\") {\n\n switch (name) {\n case \"vibedoc_get_status\": {\n const s = await getProjectSummary(root);\n const b = s.tasks.board;\n const lines = [\n `## ${s.name} — Project Status`,\n `**Docs:** ${s.docs.total} files`,\n `**Memory:** ${s.memory.exists ? \"exists\" : \"not yet created\"}`,\n \"\",\n \"### Board\",\n `📋 Todo: ${b.todo} 🔨 In Progress: ${b[\"in-progress\"]} 👀 Review: ${b.review ?? 0} 🚫 Blocked: ${b.blocked} ✅ Done: ${b.done}`,\n ];\n if (s.tasks.active.length > 0) {\n lines.push(\"\", \"**Active:**\");\n s.tasks.active.forEach((t) => lines.push(` 🔨 ${t.id}: ${t.title}`));\n }\n if (s.tasks.blocked.length > 0) {\n lines.push(\"\", \"**Blocked:**\");\n s.tasks.blocked.forEach((t) => lines.push(` 🚫 ${t.id}: ${t.title}`));\n }\n lines.push(\"\", \"_See vibedoc_get_sessions for what happened recently._\");\n return lines.join(\"\\n\");\n }\n\n case \"vibedoc_get_sessions\": {\n const limit = Number(args.limit) || 10;\n const since = args.since ? String(args.since) : null;\n let sessions = groupSessions(await readActivity(root, 2000));\n if (args.taskId) sessions = sessionsForTask(sessions, String(args.taskId));\n if (since) {\n const t = Date.parse(since);\n if (Number.isNaN(t)) return `Invalid \"since\": ${since} (expected an ISO timestamp)`;\n sessions = sessions.filter((x) => Date.parse(x.end) >= t);\n }\n sessions = sessions.slice(0, limit);\n if (!sessions.length) return \"No sessions\" + (args.taskId ? ` touched ${args.taskId}` : \"\") + (since ? ` since ${since}` : \"\") + \".\";\n return sessions.map((x) => [\n `### ${x.actor === \"ai\" ? \"🤖 Agent\" : \"👤 Human\"} · ${x.start} (${sessionDuration(x)})`,\n x.headline,\n ...x.tasks.map((t) => `- ${t.id} → ${t.lastStatus}`),\n ...x.docs.map((d) => `- 📄 ${d}`),\n ...x.decisions.map((d) => `- 📝 ${d}`),\n ].join(\"\\n\")).join(\"\\n\\n\");\n }\n\n case \"vibedoc_read_doc\": {\n const { path: docPath, content } = await readDoc(\n String(args.query),\n root,\n );\n emitUpdate(\"doc_read\", { path: docPath });\n const related = formatRelatedFiles(docLinks(await getDocGraph(root), docPath));\n return `## ${docPath}\\n\\n${content}` + (related ? `\\n\\n---\\n\\n${related}` : \"\");\n }\n\n case \"vibedoc_list_docs\": {\n const docs = await listDocs(root);\n const sections: Record<string, string[]> = {};\n for (const d of docs) {\n if (!sections[d.section]) sections[d.section] = [];\n sections[d.section].push(d.priority ? `${d.path} [${d.priority}]` : d.path);\n }\n const lines = [`📚 ${docs.length} files\\n`];\n for (const [s, files] of Object.entries(sections)) {\n lines.push(`**${s}** (${files.length})`);\n files.forEach((f) => lines.push(` ${f}`));\n lines.push(\"\");\n }\n return lines.join(\"\\n\");\n }\n\n case \"vibedoc_search_docs\": {\n const results = await searchDocs(String(args.query), root);\n if (!results.length) return `No results for \"${args.query}\"`;\n const lines = [`🔍 \"${args.query}\" — ${results.length} file(s)\\n`];\n for (const r of results) {\n lines.push(`**${r.file}** (${r.totalHits} hits)`);\n r.hits.forEach((h) => lines.push(` L${h.line}: ${h.text}`));\n lines.push(\"\");\n }\n return lines.join(\"\\n\");\n }\n\n case \"vibedoc_write_doc\": {\n const docPath = String(args.path);\n const content = String(args.content);\n await writeDoc(docPath, content, root);\n await noteDocEdit(root, docPath, \"ai\");\n emitUpdate(\"doc_updated\", { path: docPath, actor: \"ai\" });\n return `✅ Written: ${docPath}`;\n }\n\n case \"vibedoc_set_doc_priority\": {\n const docPath = String(args.path);\n const priority = args.priority ?? null;\n if (priority !== null && !PRIORITIES.includes(priority as Priority)) {\n return `❌ priority must be one of ${PRIORITIES.join(\", \")} or null`;\n }\n await setDocProperties(docPath, { priority: priority as Priority | null }, root);\n await noteDocEdit(root, docPath, \"ai\");\n emitUpdate(\"doc_updated\", { path: docPath, actor: \"ai\", properties: { priority } });\n return priority ? `✅ ${docPath} is now ${priority}` : `✅ Cleared the priority of ${docPath}`;\n }\n\n case \"vibedoc_list_tasks\": {\n const { board, tasks } = await listTasks(root);\n const filter = (args.status as string) || \"all\";\n const cols =\n filter === \"all\"\n ? [\"in-progress\", \"review\", \"blocked\", \"paused\", \"todo\", \"done\", \"cancelled\"]\n : [filter];\n const lines = [`## Tasks (${tasks.length})\\n`];\n for (const col of cols) {\n const items = board[col as TaskStatus] || [];\n lines.push(`### ${col.toUpperCase()} (${items.length})`);\n if (!items.length) lines.push(\" (empty)\");\n items.forEach((t) =>\n lines.push(` **${t.id}** ${t.title}${t.size ? ` — ${t.size}` : \"\"}`),\n );\n lines.push(\"\");\n }\n return lines.join(\"\\n\");\n }\n\n case \"vibedoc_get_task\": {\n const task = await getTask(String(args.taskId), root);\n return `## ${task.file}\\n\\n${task.raw}` + withGap(await relatedEntries(task, root));\n }\n\n case \"vibedoc_update_task\": {\n const report = typeof args.manualTests === \"string\" && args.manualTests.trim() ? args.manualTests : null;\n if (report) await saveManualTests(String(args.taskId), report, root, \"ai\");\n const result = await updateTaskStatus(\n String(args.taskId),\n args.status as TaskStatus,\n root,\n \"ai\",\n { actor: \"ai\", agent },\n );\n emitUpdate(\"task_updated\", {\n taskId: args.taskId,\n status: args.status,\n previousStatus: result.previousStatus,\n task: result.task,\n });\n const tests = result.task.manualTests;\n return `✅ **${result.task.id}** → **${result.task.status}**\\n(was: ${result.previousStatus})` +\n (tests ? `\\n🧪 Manual tests: ${tests.done}/${tests.total} ticked` : \"\") +\n (await roadmapHint(root, result.task.id));\n }\n\n case \"vibedoc_next_task\": {\n const epicId = String(args.epic ?? \"\").trim();\n if (!epicId) throw new Error(\"epic is required\");\n const { result, task, previousStatus } = await claimNextTask(epicId, root, agent);\n // R050: nothing ready = the run is over; leave an episode unless the session wrote a handoff\n const runEnd = async () => {\n const ep = await writeRunEpisode(root, `epic ${epicId.toUpperCase()}`, agent);\n if (!ep) return \"\";\n emitUpdate(\"episode_saved\", ep);\n return `\\n\\nEpisode saved → ${ep.file}`;\n };\n if (result.kind === \"finished\") {\n const { items } = await listRoadmap(root);\n const statuses = await taskInfoMap(root);\n const epic = items.find((i) => i.id === epicId.toUpperCase());\n const id = epic?.id ?? epicId.toUpperCase();\n const n = epic ? epic.tasks.filter((t) => t in statuses).length : 0;\n const nudge = roadmapHealth(items, statuses, localToday()).drift\n .find((d) => d.id === id && d.suggestedStatus === \"done\");\n return `✅ Epic ${id} is finished — all ${n} tasks done or cancelled. Stop here.` +\n (nudge ? `\\n\\n🗺️ ${nudge.message} → vibedoc_update_roadmap_item { \"id\": \"${id}\", \"status\": \"done\" }` : \"\") +\n (await runEnd());\n }\n if (result.kind === \"waiting\") {\n return `⏳ Nothing ready in ${epicId.toUpperCase()}.\\n` + result.waiting.map((w) => `- ${w.reason}`).join(\"\\n\") +\n (result.needsHuman ? \"\\n\\nNeeds a human: approve, send back or unblock one of the tasks above.\" : \"\") +\n (await runEnd());\n }\n if (!task) throw new Error(`claim of ${epicId.toUpperCase()} returned no task`);\n emitUpdate(\"task_updated\", {\n taskId: task.id,\n status: task.status,\n previousStatus,\n task,\n });\n // Sent back from review (R043): the reviewer's note comes first, before the spec\n const review = latestReview(task.raw ?? \"\");\n const changes = review?.outcome === \"changes requested\"\n ? `\\n\\n⚠️ Changes requested (${review.at}):\\n${review.note}\\nAddress this first; the rest of the spec below still applies.`\n : \"\";\n return `🔨 Claimed **${task.id}** ${task.title} (now in-progress)${changes}\\n\\n## ${task.file}\\n\\n${task.raw}` +\n (await roadmapHint(root, task.id)) + withGap(await relatedEntries(task, root));\n }\n\n case \"vibedoc_log_decision\": {\n const result = await logDecision(\n args as unknown as Parameters<typeof logDecision>[0],\n root,\n \"ai\",\n );\n emitUpdate(\"decision_logged\", result);\n return `📝 **${result.adrNumber}** logged\\nFile: ${result.path}`;\n }\n\n case \"vibedoc_read_memory\": {\n // read before logSessionStart, which opens a new session: the one still running is the agent's, never backfill it\n const running = currentSessionId(root);\n await logSessionStart(root, \"ai\");\n emitUpdate(\"session_start\", { root });\n // R050: ended sessions with no handoff get an `inferred` episode first, so the response below can show it\n for (const ep of await backfillEpisodes(root, { excludeSessionId: running })) {\n emitUpdate(\"episode_saved\", ep);\n }\n return sessionStartMemory(root);\n }\n\n case \"vibedoc_update_memory\": {\n await updateMemory(\n args as unknown as Parameters<typeof updateMemory>[0],\n root,\n \"ai\",\n );\n emitUpdate(\"memory_updated\", { root });\n return `🧠 MEMORY.md updated`;\n }\n\n case \"vibedoc_memory_history\": {\n const vid = typeof args.id === \"string\" ? args.id.trim() : \"\";\n if (!vid) {\n const versions = (await listMemoryVersions(root)).slice(0, 20);\n if (!versions.length) return \"No saved versions of MEMORY.md yet.\";\n return versions.map((v) => `${v.id} · ${v.at} · ${v.actor} · ${v.reason} · ${v.excerpt}`).join(\"\\n\");\n }\n // a malformed id throws in core; to the agent it is just as missing\n const content = await getMemoryVersion(vid, root).catch(() => null);\n if (content === null) return `Version ${vid} not found`;\n if (args.restore !== true) return content;\n const { restoredFrom, newId } = await restoreMemoryVersion(vid, root, \"ai\");\n emitUpdate(\"memory_updated\", { root });\n return `Restored MEMORY.md to ${restoredFrom}; the replaced version is ${newId ?? \"(none — there was no MEMORY.md)\"}`;\n }\n\n case \"vibedoc_save_entry\": {\n const entry = await saveEntry(args as unknown as EntryInput, root, \"ai\", agent);\n emitUpdate(\"memory_updated\", { root, entryId: entry.id });\n return `🧠 Saved **${entry.id}** · ${entry.type} · ${entry.summary}\\n${entry.file}`;\n }\n\n case \"vibedoc_recall\": {\n const query = String(args.query ?? \"\");\n if (!tokenize(query).length) {\n return `No searchable words in \"${query}\". Use topic words, e.g. vibedoc_recall { \"query\": \"sse events\" }.`;\n }\n const limit = Number(args.limit) > 0 ? Math.floor(Number(args.limit)) : undefined;\n const hits = await recallEntries(query, { type: args.type ? String(args.type) : undefined, limit }, root);\n if (!hits.length) return `No entries match \"${query}\".`;\n return `${hits.length} ${hits.length === 1 ? \"match\" : \"matches\"} for \"${query}\"\\n` +\n hits.map(formatCompactLine).join(\"\\n\") +\n `\\nFetch full entries with vibedoc_get_entries { ids: [...] }`;\n }\n\n case \"vibedoc_get_entries\": {\n const ids = Array.isArray(args.ids) ? args.ids.map(String) : [];\n if (!ids.length) throw new Error('ids must be a non-empty array, e.g. { \"ids\": [\"E001\"] }');\n if (ids.length > MAX_ENTRY_IDS) throw new Error(`Too many ids (${ids.length}); fetch at most ${MAX_ENTRY_IDS} per call and split the rest`);\n const [{ found, missing }, graph] = await Promise.all([getEntriesByIds(ids, root), getMemoryGraph(root)]);\n // R051: a full-body fetch is what counts as \"recalled\" (not recall lists or the session index)\n if (await markEntriesRecalled(found.map((e) => e.id), root)) emitUpdate(\"memory_updated\", { root });\n const blocks = found.map((e) => {\n const links = formatEntryLinks(graph, e.id);\n return `## ${e.id} · ${e.type} · ${e.summary}\\nupdated ${e.updatedAt}${e.body ? `\\n\\n${e.body}` : \"\"}` +\n (links.length ? `\\n\\n${links.join(\"\\n\")}` : \"\");\n });\n if (missing.length) blocks.push(`Not found: ${missing.join(\", \")}`);\n return blocks.join(\"\\n\\n\");\n }\n\n case \"vibedoc_delete_entry\": {\n const entry = await deleteEntry(String(args.id ?? \"\"), root, \"ai\");\n emitUpdate(\"memory_updated\", { root, entryId: entry.id });\n return `🗑️ Deleted **${entry.id}** · ${entry.summary}`;\n }\n\n case \"vibedoc_create_doc\": {\n const docPath = String(args.path);\n const templateId = args.templateId ? String(args.templateId) : \"blank\";\n const template =\n TEMPLATES.find((t) => t.id === templateId) ??\n TEMPLATES.find((t) => t.id === \"blank\")!;\n await createDoc(docPath, template.content, root);\n emitUpdate(\"doc_created\", { path: docPath });\n return `✅ Created: ${docPath} (template: ${template.name})`;\n }\n\n case \"vibedoc_list_templates\": {\n return TEMPLATES.map(\n (t) =>\n `**${t.id}** — ${t.name}\\n ${t.description}\\n Default: \\`${t.defaultPath}\\``,\n ).join(\"\\n\\n\");\n }\n\n case \"vibedoc_get_context\": {\n const paths = args.paths as string[];\n const context = await getContext(paths, root);\n if (!context) return \"(no content — check paths are correct)\";\n return context;\n }\n\n case \"vibedoc_propose_edit\": {\n const docPath = String(args.path);\n const edits = Array.isArray(args.edits) ? (args.edits as TextEdit[]) : [];\n if (edits.length === 0) throw new Error(\"edits must be a non-empty array\");\n // Validate now so the agent can fix a bad old_string before the user ever sees it\n await editDoc(docPath, edits, root, true);\n return `📝 Proposed ${edits.length} edit(s) to ${docPath}. The user will accept or reject them in the UI; not applied yet.`;\n }\n\n case \"vibedoc_propose_plan\": {\n // Validate only, like propose_edit: the UI writes via POST /api/plan/apply after Accept.\n const [{ items }, { tasks }] = await Promise.all([listRoadmap(root), listTasks(root)]);\n const errors = validatePlan(args.plan, { roadmap: items, taskIds: tasks.map((t) => t.id) });\n if (errors.length > 0) throw new Error(`Invalid plan:\\n- ${errors.join(\"\\n- \")}`);\n const plan = args.plan as Plan;\n if (plan.kind === \"roadmap\") {\n return `📋 Proposed ${(plan.horizons ?? []).length} horizons and ${(plan.epics ?? []).length} epics. The user reviews and accepts in the UI; nothing is written yet.`;\n }\n return `📋 Proposed ${plan.tasks.length} tasks for ${planTarget(plan)}. The user reviews and accepts in the UI; nothing is written yet.`;\n }\n\n case \"vibedoc_ask_questions\": {\n // Records nothing: the UI renders the tool input as a card and sends the answers as the next message.\n const qs = args.questions;\n const errors: string[] = [];\n if (!Array.isArray(qs) || qs.length < 1 || qs.length > 4) {\n errors.push(`questions must be an array of 1–4 items (got ${Array.isArray(qs) ? qs.length : typeof qs})`);\n } else {\n qs.forEach((q: Record<string, unknown>, i: number) => {\n const at = `questions[${i}]`;\n if (!q || typeof q !== \"object\") return errors.push(`${at} must be an object`);\n if (typeof q.question !== \"string\" || !q.question.trim()) errors.push(`${at}.question must be a non-empty string`);\n if (typeof q.header !== \"string\" || !q.header.trim()) errors.push(`${at}.header must be a non-empty string`);\n if (typeof q.multiSelect !== \"boolean\") errors.push(`${at}.multiSelect must be a boolean`);\n const opts = q.options;\n if (!Array.isArray(opts) || opts.length < 2 || opts.length > 4) {\n errors.push(`${at}.options must have 2–4 items (got ${Array.isArray(opts) ? opts.length : typeof opts})`);\n } else {\n opts.forEach((o: Record<string, unknown>, j: number) => {\n if (!o || typeof o.label !== \"string\" || !o.label.trim()) errors.push(`${at}.options[${j}].label must be a non-empty string`);\n if (o && o.description !== undefined && typeof o.description !== \"string\") errors.push(`${at}.options[${j}].description must be a string`);\n });\n }\n });\n }\n if (errors.length > 0) throw new Error(`Invalid questions:\\n- ${errors.join(\"\\n- \")}`);\n return `❓ Shown ${(qs as unknown[]).length} question(s) to the user. End your turn now; their answers arrive in the next message.`;\n }\n\n case \"vibedoc_get_planning_guide\":\n return PLANNING_PREAMBLE + (await readPlanningSkill(String(args.kind) as PlanningKind));\n\n case \"vibedoc_append_doc\": {\n const docPath = String(args.path);\n const content = String(args.content);\n await appendDoc(docPath, content, root);\n await noteDocEdit(root, docPath, \"ai\");\n emitUpdate(\"doc_updated\", { path: docPath, actor: \"ai\" });\n return `✅ Appended to: ${docPath}`;\n }\n\n case \"vibedoc_rename_doc\": {\n const oldPath = String(args.oldPath);\n const newPath = String(args.newPath);\n await renameDoc(oldPath, newPath, root);\n emitUpdate(\"doc_renamed\", { oldPath, newPath });\n return `✅ Renamed: ${oldPath} → ${newPath}`;\n }\n\n case \"vibedoc_delete_doc\": {\n const docPath = String(args.path);\n await deleteDoc(docPath, root);\n emitUpdate(\"doc_deleted\", { path: docPath });\n return `✅ Deleted: ${docPath}`;\n }\n\n case \"vibedoc_get_file_map\": {\n const files = await listExplorerFiles(root);\n return JSON.stringify(files, null, 2);\n }\n\n case \"vibedoc_read_registry\": {\n const { content, exists } = await readRegistry(root);\n if (!exists)\n return `*(No REGISTRY.md found — call vibedoc_rebuild_registry to generate it)*`;\n return content;\n }\n\n case \"vibedoc_rebuild_registry\": {\n const result = await rebuildRegistry(root, \"ai\");\n emitUpdate(\"registry_rebuilt\", {\n path: result.path,\n totalFiles: result.totalFiles,\n });\n return `✅ Registry rebuilt: ${result.path}\\n${result.totalFiles} files indexed`;\n }\n\n case \"vibedoc_annotate_doc\": {\n const docPath = String(args.path);\n const description = String(args.description);\n const keywords = String(args.keywords);\n await updateRegistryAnnotation(docPath, description, keywords, root);\n emitUpdate(\"registry_rebuilt\", { path: \"docs/REGISTRY.md\" });\n return `✅ Annotation updated for: ${docPath}`;\n }\n\n case \"vibedoc_get_roadmap\": {\n const { items } = await listRoadmap(root);\n if (items.length === 0) return \"No roadmap items yet (plans/roadmap/ is empty).\";\n const today = localToday();\n const { progress, drift } = roadmapHealth(items, await taskInfoMap(root), today);\n const icon = { done: \"✓\", \"in-progress\": \"◐\", paused: \"⏸\", planned: \"○\" } as const;\n const atRisk = new Set(drift.filter((d) => d.kind === \"at-risk\").map((d) => d.id));\n const fmt = (i: (typeof items)[number]) =>\n `${icon[i.status]} **${i.id}** ${i.title} — ${i.status}` +\n (i.tasks.length ? ` (tasks: ${i.tasks.join(\", \")})` : \"\") +\n (progress[i.id] ? ` [${progress[i.id].done}/${progress[i.id].total} done]` : \"\") +\n (i.due ? ` due ${i.due}${dueState(i.due, i.status, today) === \"overdue\" ? \" ⚠ overdue\" : \"\"}` : \"\") +\n (atRisk.has(i.id) ? \" ⚠ at risk\" : \"\");\n const horizons = items.filter((i) => i.parent === null);\n const lines = [\"## Roadmap\"];\n for (const h of horizons) {\n lines.push(\"\", `### ${fmt(h)}`);\n for (const c of items.filter((i) => i.parent === h.id)) lines.push(`- ${fmt(c)}`);\n }\n const orphans = items.filter((i) => i.parent !== null && !horizons.some((h) => h.id === i.parent));\n if (orphans.length) {\n lines.push(\"\", \"### Orphans (parent missing)\");\n for (const o of orphans) lines.push(`- ${fmt(o)} (parent: ${o.parent})`);\n }\n if (drift.length) {\n lines.push(\"\", \"### ⚠️ Needs attention\");\n for (const d of drift) lines.push(`- ${d.message}${d.suggestedStatus ? ` → suggest status \"${d.suggestedStatus}\"` : \"\"}`);\n }\n return lines.join(\"\\n\");\n }\n\n case \"vibedoc_create_roadmap_item\": {\n const item = await createRoadmapItem(args as unknown as CreateRoadmapItemParams, root, \"ai\");\n emitUpdate(\"roadmap_updated\", { kind: \"create\", id: item.id });\n return `✅ Created **${item.id}** ${item.title}\\nFile: ${item.file}`;\n }\n\n case \"vibedoc_update_roadmap_item\": {\n const { id, ...patch } = args;\n const item = await updateRoadmapItem(String(id ?? \"\"), patch as UpdateRoadmapItemPatch, root, \"ai\");\n emitUpdate(\"roadmap_updated\", { kind: \"update\", id: item.id });\n return `✅ Updated **${item.id}** ${item.title} — ${item.status}${item.parent ? ` (parent: ${item.parent})` : \" (horizon)\"}`;\n }\n\n default:\n throw new Error(`Unknown tool: ${name}`);\n }\n}\n\nfunction withProjectStatuses(statuses: StatusDef[]) {\n const custom = statuses.filter((d) => d.id !== d.category);\n if (!custom.length) return TOOLS;\n return TOOLS.map((t) => {\n if (t.name !== \"vibedoc_update_task\") return t;\n return {\n ...t,\n description: t.description + \" This project also has its own statuses: \" +\n custom.map((d) => `\"${d.id}\" (${d.label}, works like ${d.category})`).join(\", \") + \".\",\n inputSchema: {\n ...t.inputSchema,\n properties: { ...t.inputSchema.properties, status: { type: \"string\", enum: statuses.map((d) => d.id) } },\n },\n };\n });\n}\n\nexport async function POST(req: NextRequest) {\n let body: JsonRpcRequest;\n try {\n body = await req.json();\n } catch {\n return err(null, -32700, \"Parse error\");\n }\n\n const { id, method, params } = body;\n\n // MCP initialize\n if (method === \"initialize\") {\n return ok(id, {\n protocolVersion: \"2024-11-05\",\n capabilities: { tools: {} },\n serverInfo: { name: \"vibedoc\", version: \"1.0.0\" },\n });\n }\n\n // tools/list: vibedoc_update_task's status enum follows the project's statuses (R055)\n if (method === \"tools/list\") {\n const root = req.nextUrl.searchParams.get(\"root\") || getConfiguredRoot();\n return ok(id, { tools: withProjectStatuses((await readProjectSettings(root)).statuses) });\n }\n\n // tools/call\n if (method === \"tools/call\") {\n const name = (params?.name as string) || \"\";\n const args = (params?.arguments as Record<string, unknown>) || {};\n try {\n const root = req.nextUrl.searchParams.get(\"root\") || getConfiguredRoot();\n const agent = typeof args.agent === \"string\" && args.agent.trim() ? args.agent.trim() : agentFromUserAgent(req.headers.get(\"user-agent\"));\n const text = await handleTool(name, args, root, agent);\n return ok(id, { content: [{ type: \"text\", text }] });\n } catch (e: unknown) {\n const msg = e instanceof Error ? e.message : String(e);\n return ok(id, {\n content: [{ type: \"text\", text: `❌ ${msg}` }],\n isError: true,\n });\n }\n }\n\n return err(id, -32601, `Method not found: ${method}`);\n}\n\n// GET for connection test / SSE upgrade (some clients use GET)\nexport async function GET() {\n return NextResponse.json({\n name: \"vibedoc\",\n version: \"1.0.0\",\n status: \"ready\",\n tools: TOOLS.map((t) => t.name),\n });\n}\n","import {\n AppRouteRouteModule,\n type AppRouteRouteHandlerContext,\n type AppRouteRouteModuleOptions,\n} from '../../server/route-modules/app-route/module.compiled'\nimport { RouteKind } from '../../server/route-kind'\nimport { patchFetch as _patchFetch } from '../../server/lib/patch-fetch'\nimport type { IncomingMessage, ServerResponse } from 'node:http'\nimport {\n addRequestMeta,\n getRequestMeta,\n setRequestMeta,\n type RequestMeta,\n} from '../../server/request-meta'\nimport {\n getTracer,\n type Span,\n SpanKind,\n SpanStatusCode,\n} from '../../server/lib/trace/tracer'\nimport { setManifestsSingleton } from '../../server/app-render/manifests-singleton'\nimport { normalizeAppPath } from '../../shared/lib/router/utils/app-paths'\nimport { NodeNextRequest, NodeNextResponse } from '../../server/base-http/node'\nimport {\n NextRequestAdapter,\n signalFromNodeResponse,\n} from '../../server/web/spec-extension/adapters/next-request'\nimport { BaseServerSpan } from '../../server/lib/trace/constants'\nimport { getRevalidateReason } from '../../server/instrumentation/utils'\nimport { sendResponse } from '../../server/send-response'\nimport {\n fromNodeOutgoingHttpHeaders,\n toNodeOutgoingHttpHeaders,\n} from '../../server/web/utils'\nimport { getCacheControlHeader } from '../../server/lib/cache-control'\nimport { INFINITE_CACHE, NEXT_CACHE_TAGS_HEADER } from '../../lib/constants'\nimport { NoFallbackError } from '../../shared/lib/no-fallback-error.external'\nimport {\n CachedRouteKind,\n type ResponseCacheEntry,\n type ResponseGenerator,\n} from '../../server/response-cache'\n\n// These are injected by the loader afterwards. This is injected as a variable\n// instead of a replacement because this could also be `undefined` instead of\n// an empty string.\ndeclare const nextConfigOutput: AppRouteRouteModuleOptions['nextConfigOutput']\n\n// We inject the nextConfigOutput here so that we can use them in the route\n// module.\n// INJECT:nextConfigOutput\n\nconst routeModule = new AppRouteRouteModule({\n definition: {\n kind: RouteKind.APP_ROUTE,\n page: 'VAR_DEFINITION_PAGE',\n pathname: 'VAR_DEFINITION_PATHNAME',\n filename: 'VAR_DEFINITION_FILENAME',\n bundlePath: 'VAR_DEFINITION_BUNDLE_PATH',\n },\n distDir: process.env.__NEXT_RELATIVE_DIST_DIR || '',\n relativeProjectDir: process.env.__NEXT_RELATIVE_PROJECT_DIR || '',\n resolvedPagePath: 'VAR_RESOLVED_PAGE_PATH',\n nextConfigOutput,\n // The lazy require factory ensures that:\n // - In dev: devRequestTimingInternalsEnd is set before userland executes,\n // correctly attributing module load time to application-code rather than\n // framework internals.\n // - In all modes: async modules (route files with top-level await) are\n // handled correctly — require() returns a Promise for such modules, which\n // ensureUserland() awaits before the first request is handled.\n userland: () => require('VAR_USERLAND') as typeof import('VAR_USERLAND'),\n // In Turbopack dev mode, also provide a synchronous per-request getter so\n // server HMR updates are picked up without re-executing the entry chunk.\n // Using require() (synchronous) avoids adding async overhead that would be\n // incorrectly attributed to application-code time in devRequestTiming.\n ...(process.env.TURBOPACK && process.env.__NEXT_DEV_SERVER\n ? {\n getUserland: () =>\n require('VAR_USERLAND') as typeof import('VAR_USERLAND'),\n }\n : {}),\n})\n\n// Pull out the exports that we need to expose from the module. This should\n// be eliminated when we've moved the other routes to the new format. These\n// are used to hook into the route.\nconst { workAsyncStorage, workUnitAsyncStorage, serverHooks } = routeModule\n\nfunction patchFetch() {\n return _patchFetch({\n workAsyncStorage,\n workUnitAsyncStorage,\n })\n}\n\nexport {\n routeModule,\n workAsyncStorage,\n workUnitAsyncStorage,\n serverHooks,\n patchFetch,\n}\n\nexport async function handler(\n req: IncomingMessage,\n res: ServerResponse,\n ctx: {\n waitUntil?: (prom: Promise<void>) => void\n requestMeta?: RequestMeta\n }\n) {\n if (ctx.requestMeta) {\n setRequestMeta(req, ctx.requestMeta)\n }\n if (routeModule.isDev) {\n addRequestMeta(req, 'devRequestTimingInternalsEnd', process.hrtime.bigint())\n }\n let srcPage = 'VAR_DEFINITION_PAGE'\n\n // turbopack doesn't normalize `/index` in the page name\n // so we need to to process dynamic routes properly\n // TODO: fix turbopack providing differing value from webpack\n if (process.env.TURBOPACK) {\n srcPage = srcPage.replace(/\\/index$/, '') || '/'\n } else if (srcPage === '/index') {\n // we always normalize /index specifically\n srcPage = '/'\n }\n const multiZoneDraftMode = process.env\n .__NEXT_MULTI_ZONE_DRAFT_MODE as any as boolean\n\n const prepareResult = await routeModule.prepare(req, res, {\n srcPage,\n multiZoneDraftMode,\n })\n\n if (!prepareResult) {\n res.statusCode = 400\n res.end('Bad Request')\n ctx.waitUntil?.(Promise.resolve())\n return null\n }\n\n const {\n buildId,\n deploymentId,\n params,\n nextConfig,\n parsedUrl,\n isDraftMode,\n prerenderManifest,\n routerServerContext,\n isOnDemandRevalidate,\n revalidateOnlyGenerated,\n resolvedPathname,\n clientReferenceManifest,\n serverActionsManifest,\n } = prepareResult\n\n const normalizedSrcPage = normalizeAppPath(srcPage)\n\n let isIsr = Boolean(\n prerenderManifest.dynamicRoutes[normalizedSrcPage] ||\n prerenderManifest.routes[resolvedPathname]\n )\n\n const render404 = async () => {\n // TODO: should route-module itself handle rendering the 404\n if (routerServerContext?.render404) {\n await routerServerContext.render404(req, res, parsedUrl, false)\n } else {\n res.end('This page could not be found')\n }\n return null\n }\n\n if (isIsr && !isDraftMode) {\n const isPrerendered = Boolean(prerenderManifest.routes[resolvedPathname])\n const prerenderInfo = prerenderManifest.dynamicRoutes[normalizedSrcPage]\n\n if (prerenderInfo) {\n if (prerenderInfo.fallback === false && !isPrerendered) {\n if (nextConfig.adapterPath) {\n return await render404()\n }\n throw new NoFallbackError()\n }\n }\n }\n\n let cacheKey: string | null = null\n\n if (isIsr && !routeModule.isDev && !isDraftMode) {\n cacheKey = resolvedPathname\n // ensure /index and / is normalized to one key\n cacheKey = cacheKey === '/index' ? '/' : cacheKey\n }\n\n const supportsDynamicResponse: boolean =\n // If we're in development, we always support dynamic HTML\n routeModule.isDev === true ||\n // If this is not SSG or does not have static paths, then it supports\n // dynamic HTML.\n !isIsr\n\n // This is a revalidation request if the request is for a static\n // page and it is not being resumed from a postponed render and\n // it is not a dynamic RSC request then it is a revalidation\n // request.\n const isStaticGeneration = isIsr && !supportsDynamicResponse\n\n // Before rendering (which initializes component tree modules), we have to\n // set the reference manifests to our global store so Server Action's\n // encryption util can access to them at the top level of the page module.\n if (serverActionsManifest && clientReferenceManifest) {\n setManifestsSingleton({\n page: srcPage,\n clientReferenceManifest,\n serverActionsManifest,\n })\n }\n\n const method = req.method || 'GET'\n const tracer = getTracer()\n const activeSpan = tracer.getActiveScopeSpan()\n const isWrappedByNextServer = Boolean(\n routerServerContext?.isWrappedByNextServer\n )\n const isMinimalMode = Boolean(getRequestMeta(req, 'minimalMode'))\n\n const incrementalCache =\n getRequestMeta(req, 'incrementalCache') ||\n (await routeModule.getIncrementalCache(\n req,\n nextConfig,\n prerenderManifest,\n isMinimalMode\n ))\n\n incrementalCache?.resetRequestCache()\n ;(globalThis as any).__incrementalCache = incrementalCache\n\n const context: AppRouteRouteHandlerContext = {\n params,\n previewProps: prerenderManifest.preview,\n renderOpts: {\n experimental: {\n authInterrupts: Boolean(nextConfig.experimental.authInterrupts),\n useCacheTimeout: nextConfig.experimental.useCacheTimeout,\n },\n cacheComponents: Boolean(nextConfig.cacheComponents),\n validationLevel: nextConfig.experimental.instantInsights.validationLevel,\n supportsDynamicResponse,\n incrementalCache,\n hmrRefreshHash: getRequestMeta(req, 'hmrRefreshHash'),\n cacheLifeProfiles: nextConfig.cacheLife,\n staticPageGenerationTimeout: nextConfig.staticPageGenerationTimeout,\n waitUntil: ctx.waitUntil,\n onClose: (cb) => {\n res.on('close', cb)\n },\n onAfterTaskError: undefined,\n onInstrumentationRequestError: (\n error,\n _request,\n errorContext,\n silenceLog\n ) =>\n routeModule.onRequestError(\n req,\n error,\n errorContext,\n silenceLog,\n routerServerContext\n ),\n },\n sharedContext: {\n buildId,\n deploymentId,\n },\n }\n const nodeNextReq = new NodeNextRequest(req)\n const nodeNextRes = new NodeNextResponse(res)\n\n const nextReq = NextRequestAdapter.fromNodeNextRequest(\n nodeNextReq,\n signalFromNodeResponse(res)\n )\n\n const responseGenerator: ResponseGenerator = async ({\n previousCacheEntry,\n }) => {\n try {\n if (\n !isMinimalMode &&\n isOnDemandRevalidate &&\n revalidateOnlyGenerated &&\n !previousCacheEntry\n ) {\n res.statusCode = 404\n // on-demand revalidate always sets this header\n res.setHeader('x-nextjs-cache', 'REVALIDATED')\n res.end('This page could not be found')\n return null\n }\n\n const response = await routeModule.handle(nextReq, context)\n\n ;(req as any).fetchMetrics = (context.renderOpts as any).fetchMetrics\n let pendingWaitUntil = context.renderOpts.pendingWaitUntil\n\n // Attempt using provided waitUntil if available\n // if it's not we fallback to sendResponse's handling\n if (pendingWaitUntil) {\n if (ctx.waitUntil) {\n ctx.waitUntil(pendingWaitUntil)\n pendingWaitUntil = undefined\n }\n }\n const cacheTags = context.renderOpts.collectedTags\n\n // If the request is for a static response, we can cache it so long\n // as it's not edge.\n if (isIsr) {\n const blob = await response.blob()\n\n // Copy the headers from the response.\n const headers = toNodeOutgoingHttpHeaders(response.headers)\n\n if (cacheTags) {\n headers[NEXT_CACHE_TAGS_HEADER] = cacheTags\n }\n\n if (!headers['content-type'] && blob.type) {\n headers['content-type'] = blob.type\n }\n\n const revalidate =\n typeof context.renderOpts.collectedRevalidate === 'undefined' ||\n context.renderOpts.collectedRevalidate >= INFINITE_CACHE\n ? false\n : context.renderOpts.collectedRevalidate\n\n const expire =\n typeof context.renderOpts.collectedExpire === 'undefined' ||\n context.renderOpts.collectedExpire >= INFINITE_CACHE\n ? // Fall back to the global `expireTime` config when the\n // route has a numeric `revalidate` but didn't declare an\n // explicit `expire` (e.g. via `cacheLife`). This mirrors the\n // build-time fallback in `build/index.ts` so cache entries\n // and the response Cache-Control header agree on the route's\n // effective expire. Routes that opt out of revalidation\n // (`revalidate: false`) or that are dynamic (`revalidate: 0`)\n // keep `expire: undefined`.\n revalidate !== false && revalidate > 0\n ? nextConfig.expireTime\n : undefined\n : context.renderOpts.collectedExpire\n\n // Create the cache entry for the response.\n const cacheEntry: ResponseCacheEntry = {\n value: {\n kind: CachedRouteKind.APP_ROUTE,\n status: response.status,\n body: Buffer.from(await blob.arrayBuffer()),\n headers,\n },\n cacheControl: { revalidate, expire },\n }\n\n return cacheEntry\n } else {\n // send response without caching if not ISR\n await sendResponse(nodeNextReq, nodeNextRes, response, pendingWaitUntil)\n return null\n }\n } catch (err) {\n // if this is a background revalidate we need to report\n // the request error here as it won't be bubbled\n if (previousCacheEntry?.isStale) {\n const silenceLog = false\n await routeModule.onRequestError(\n req,\n err,\n {\n routerKind: 'App Router',\n routePath: srcPage,\n routeType: 'route',\n revalidateReason: getRevalidateReason({\n isStaticGeneration,\n isOnDemandRevalidate,\n }),\n },\n silenceLog,\n routerServerContext\n )\n }\n throw err\n }\n }\n\n const handleResponse = async (\n currentSpan: Span | undefined,\n parentSpan: Span | undefined\n ) => {\n try {\n const cacheEntry = await routeModule.handleResponse({\n req,\n nextConfig,\n cacheKey,\n routeKind: RouteKind.APP_ROUTE,\n isFallback: false,\n prerenderManifest,\n isRoutePPREnabled: false,\n isOnDemandRevalidate,\n revalidateOnlyGenerated,\n responseGenerator,\n waitUntil: ctx.waitUntil,\n isMinimalMode,\n })\n\n // we don't create a cacheEntry for ISR\n if (!isIsr) {\n return\n }\n\n if (cacheEntry?.value?.kind !== CachedRouteKind.APP_ROUTE) {\n throw new Error(\n `Invariant: app-route received invalid cache entry ${cacheEntry?.value?.kind}`\n )\n }\n\n if (!isMinimalMode) {\n res.setHeader(\n 'x-nextjs-cache',\n isOnDemandRevalidate\n ? 'REVALIDATED'\n : cacheEntry.isMiss\n ? 'MISS'\n : cacheEntry.isStale\n ? 'STALE'\n : 'HIT'\n )\n }\n\n // Draft mode should never be cached\n if (isDraftMode) {\n res.setHeader(\n 'Cache-Control',\n 'private, no-cache, no-store, max-age=0, must-revalidate'\n )\n }\n\n const headers = fromNodeOutgoingHttpHeaders(cacheEntry.value.headers)\n\n if (!(isMinimalMode && isIsr)) {\n headers.delete(NEXT_CACHE_TAGS_HEADER)\n }\n\n // If cache control is already set on the response we don't\n // override it to allow users to customize it via next.config\n if (\n cacheEntry.cacheControl &&\n !res.getHeader('Cache-Control') &&\n !headers.get('Cache-Control')\n ) {\n headers.set(\n 'Cache-Control',\n getCacheControlHeader(cacheEntry.cacheControl)\n )\n }\n\n await sendResponse(\n nodeNextReq,\n nodeNextRes,\n // @ts-expect-error - Argument of type 'Buffer<ArrayBufferLike>' is not assignable to parameter of type 'BodyInit | null | undefined'.\n new Response(cacheEntry.value.body, {\n headers,\n status: cacheEntry.value.status || 200,\n })\n )\n return\n } catch (err) {\n if (!(err instanceof NoFallbackError)) {\n const silenceLog = false\n await routeModule.onRequestError(\n req,\n err,\n {\n routerKind: 'App Router',\n routePath: normalizedSrcPage,\n routeType: 'route',\n revalidateReason: getRevalidateReason({\n isStaticGeneration,\n isOnDemandRevalidate,\n }),\n },\n silenceLog,\n routerServerContext\n )\n }\n\n // rethrow so that we can handle serving error page\n\n // If this is during static generation, throw the error again.\n if (isIsr) throw err\n\n // Otherwise, send a 500 response.\n await sendResponse(\n nodeNextReq,\n nodeNextRes,\n new Response(null, { status: 500 })\n )\n return\n } finally {\n ;(() => {\n if (!currentSpan) {\n return\n }\n\n let statusCode = res.statusCode\n\n currentSpan.setAttributes({\n 'http.status_code': statusCode,\n 'next.rsc': false,\n })\n\n if (statusCode && statusCode >= 500) {\n // For 5xx status codes: SHOULD be set to 'Error' span status.\n // x-ref: https://opentelemetry.io/docs/specs/semconv/http/http-spans/#status\n currentSpan.setStatus({\n code: SpanStatusCode.ERROR,\n })\n // For span status 'Error', SHOULD set 'error.type' attribute.\n currentSpan.setAttribute('error.type', statusCode.toString())\n }\n\n const rootSpanAttributes = tracer.getRootSpanAttributes()\n // We were unable to get attributes, probably OTEL is not enabled\n if (!rootSpanAttributes) {\n return\n }\n\n if (\n rootSpanAttributes.get('next.span_type') !==\n BaseServerSpan.handleRequest\n ) {\n console.warn(\n `Unexpected root span type '${rootSpanAttributes.get(\n 'next.span_type'\n )}'. Please report this Next.js issue https://github.com/vercel/next.js`\n )\n return\n }\n\n const route = rootSpanAttributes.get('next.route') || normalizedSrcPage\n const name = `${method} ${route}`\n\n currentSpan.setAttributes({\n 'next.route': route,\n 'http.route': route,\n 'next.span_name': name,\n })\n currentSpan.updateName(name)\n\n // Propagate http.route to the parent span if one exists (e.g.\n // a platform-created HTTP span in adapter deployments).\n if (parentSpan && parentSpan !== currentSpan) {\n parentSpan.setAttribute('http.route', route)\n parentSpan.updateName(name)\n }\n })()\n }\n }\n\n // TODO: activeSpan code path is for when wrapped by\n // next-server can be removed when this is no longer used\n if (isWrappedByNextServer && activeSpan) {\n await handleResponse(activeSpan, undefined)\n } else {\n let parentSpan = tracer.getActiveScopeSpan()\n await tracer.withPropagatedContext(\n req.headers,\n () =>\n tracer.trace(\n BaseServerSpan.handleRequest,\n {\n spanName: `${method} ${srcPage}`,\n kind: SpanKind.SERVER,\n attributes: {\n 'http.method': method,\n 'http.target': req.url,\n },\n },\n (span) => handleResponse(span, parentSpan)\n ),\n undefined,\n !isWrappedByNextServer\n )\n }\n}\n"],"names":["ok","id","result","json","jsonrpc","err","code","message","error","MAX_ENTRY_IDS","withGap","block","TOOLS","name","description","inputSchema","type","properties","required","limit","taskId","since","query","path","priority","enum","content","status","manualTests","agent","epic","title","context","decision","rationale","alternatives","items","option","reason","consequences","currentState","justCompleted","workingOn","upNext","issues","oneOf","issue","severity","decisions","techDebt","handoff","restore","summary","body","ids","templateId","paths","edits","old_string","new_string","plan","kind","newEpic","parent","horizons","key","epics","tasks","size","dependsOn","due","questions","minItems","maxItems","question","header","multiSelect","options","label","oldPath","newPath","keywords","order","PLANNING_PREAMBLE","taskInfoMap","root","Object","fromEntries","map","t","roadmapHint","linked","Set","filter","i","includes","drift","hits","d","suggestedStatus","has","length","join","handleTool","args","s","b","board","lines","docs","total","memory","exists","todo","review","blocked","done","active","push","forEach","Number","String","sessions","Date","parse","isNaN","x","end","slice","actor","start","headline","lastStatus","docPath","related","sections","section","files","entries","f","results","r","file","totalHits","h","line","text","cols","col","toUpperCase","task","raw","report","trim","previousStatus","tests","epicId","Error","runEnd","ep","statuses","find","n","nudge","waiting","w","needsHuman","changes","outcome","at","note","adrNumber","running","excludeSessionId","vid","versions","v","excerpt","catch","restoredFrom","newId","entry","entryId","Math","floor","undefined","Array","isArray","found","missing","graph","Promise","all","e","blocks","links","updatedAt","template","defaultPath","errors","roadmap","taskIds","qs","q","opts","o","j","JSON","stringify","totalFiles","today","progress","icon","paused","planned","atRisk","fmt","c","orphans","some","item","patch","withProjectStatuses","custom","category","POST","req","method","params","protocolVersion","capabilities","tools","serverInfo","version","nextUrl","searchParams","get","arguments","headers","msg","isError","GET","AppRouteRouteModule","RouteKind","patchFetch","_patchFetch","addRequestMeta","getRequestMeta","setRequestMeta","getTracer","SpanKind","SpanStatusCode","setManifestsSingleton","normalizeAppPath","NodeNextRequest","NodeNextResponse","NextRequestAdapter","signalFromNodeResponse","BaseServerSpan","getRevalidateReason","sendResponse","fromNodeOutgoingHttpHeaders","toNodeOutgoingHttpHeaders","getCacheControlHeader","INFINITE_CACHE","NEXT_CACHE_TAGS_HEADER","NoFallbackError","CachedRouteKind","routeModule","definition","APP_ROUTE","page","pathname","filename","bundlePath","distDir","process","env","__NEXT_RELATIVE_DIST_DIR","relativeProjectDir","__NEXT_RELATIVE_PROJECT_DIR","resolvedPagePath","nextConfigOutput","userland","require","TURBOPACK","__NEXT_DEV_SERVER","getUserland","workAsyncStorage","workUnitAsyncStorage","serverHooks","handler","res","ctx","requestMeta","isDev","hrtime","bigint","srcPage","replace","multiZoneDraftMode","__NEXT_MULTI_ZONE_DRAFT_MODE","prepareResult","prepare","statusCode","waitUntil","resolve","buildId","deploymentId","nextConfig","parsedUrl","isDraftMode","prerenderManifest","routerServerContext","isOnDemandRevalidate","revalidateOnlyGenerated","resolvedPathname","clientReferenceManifest","serverActionsManifest","normalizedSrcPage","isIsr","Boolean","dynamicRoutes","routes","render404","isPrerendered","prerenderInfo","fallback","adapterPath","cacheKey","supportsDynamicResponse","isStaticGeneration","tracer","activeSpan","getActiveScopeSpan","isWrappedByNextServer","isMinimalMode","incrementalCache","getIncrementalCache","resetRequestCache","globalThis","__incrementalCache","previewProps","preview","renderOpts","experimental","authInterrupts","useCacheTimeout","cacheComponents","validationLevel","instantInsights","hmrRefreshHash","cacheLifeProfiles","cacheLife","staticPageGenerationTimeout","onClose","cb","on","onAfterTaskError","onInstrumentationRequestError","_request","errorContext","silenceLog","onRequestError","sharedContext","nodeNextReq","nodeNextRes","nextReq","fromNodeNextRequest","responseGenerator","previousCacheEntry","setHeader","response","handle","fetchMetrics","pendingWaitUntil","cacheTags","collectedTags","blob","revalidate","collectedRevalidate","expire","collectedExpire","expireTime","cacheEntry","value","Buffer","from","arrayBuffer","cacheControl","isStale","routerKind","routePath","routeType","revalidateReason","handleResponse","currentSpan","parentSpan","routeKind","isFallback","isRoutePPREnabled","isMiss","delete","getHeader","set","Response","setAttributes","setStatus","ERROR","setAttribute","toString","rootSpanAttributes","getRootSpanAttributes","handleRequest","console","warn","route","updateName","withPropagatedContext","trace","spanName","SERVER","attributes","url","span"],"mappings":"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","ignoreList":[1]}
1
+ {"version":3,"sources":["../../../src/app/api/mcp/route.ts","../../../node_modules/.pnpm/next%4016.3.6_%40babel%2Bcore%407.29.7_%40types%2Bnode%4022.20.4_react-dom%4019.3.0_react%4019.3.0__react%4019.3.0/node_modules/next/src/build/templates/app-route.ts"],"sourcesContent":["/**\n * /api/mcp\n *\n * MCP server over HTTP (Streamable HTTP transport).\n * AI agents (Claude Code, Cursor, Windsurf) connect here.\n *\n * Config in Claude Code:\n * {\n * \"mcpServers\": {\n * \"vibedoc\": {\n * \"url\": \"http://localhost:3000/api/mcp\"\n * }\n * }\n * }\n */\n\nimport { NextRequest, NextResponse } from \"next/server\";\nimport { ENTRY_TYPES, type EntryInput } from \"@/lib/entries\";\nimport { formatCompactLine, tokenize } from \"@/lib/recall\";\nimport { formatEntryLinks } from \"@/lib/memory-graph\";\nimport { docLinks, formatRelatedFiles } from \"@/lib/doc-links\";\nimport {\n rootFrom,\n listDocs,\n readDoc,\n searchDocs,\n writeDoc,\n createDoc,\n getContext,\n getProjectSummary,\n listTasks,\n getTask,\n updateTaskStatus,\n saveManualTests,\n claimNextTask,\n logDecision,\n updateMemory,\n listMemoryVersions,\n getMemoryVersion,\n restoreMemoryVersion,\n saveEntry,\n importClaudeMemory,\n exportEntries,\n deleteEntry,\n sessionStartMemory,\n backfillEpisodes,\n currentSessionId,\n writeRunEpisode,\n recallEntries,\n relatedEntries,\n getEntriesByIds,\n markEntriesRecalled,\n getMemoryGraph,\n noteDocEdit,\n setDocProperties,\n readProjectSettings,\n logSessionStart,\n readActivity,\n getDocGraph,\n appendDoc,\n renameDoc,\n deleteDoc,\n listExplorerFiles,\n readRegistry,\n rebuildRegistry,\n updateRegistryAnnotation,\n editDoc,\n listRoadmap,\n createRoadmapItem,\n updateRoadmapItem,\n readPlanningSkill,\n TaskStatus,\n type PlanningKind,\n type CreateRoadmapItemParams,\n type UpdateRoadmapItemPatch,\n} from \"@/lib/core\";\nimport type { TextEdit } from \"@/lib/diff\";\nimport { agentFromUserAgent } from \"@/lib/owner\";\nimport type { StatusDef } from \"@/lib/statuses\";\nimport { planTarget, validatePlan, type Plan } from \"@/lib/plan\";\nimport { isDemo } from \"@/lib/demo\";\nimport { TEMPLATES } from \"@/lib/templates\";\nimport { emitUpdate } from \"@/lib/events\";\nimport { groupSessions, sessionDuration, sessionsForTask } from \"@/lib/sessions\";\nimport { dueState, localToday, roadmapHealth, type TaskInfo } from \"@/lib/roadmap-health\";\nimport { latestReview } from \"@/lib/review\";\nimport { PRIORITIES, type Priority } from \"@/lib/doc-priority\";\n\n// Simple hand-rolled MCP handler (avoids stdio transport issues in Next.js)\n// Implements the JSON-RPC 2.0 MCP protocol directly.\n\ntype JsonRpcRequest = {\n jsonrpc: \"2.0\";\n id: string | number | null;\n method: string;\n params?: Record<string, unknown>;\n};\n\nfunction ok(id: JsonRpcRequest[\"id\"], result: unknown) {\n return NextResponse.json({ jsonrpc: \"2.0\", id, result });\n}\n\nfunction err(id: JsonRpcRequest[\"id\"], code: number, message: string) {\n return NextResponse.json({ jsonrpc: \"2.0\", id, error: { code, message } });\n}\n\nconst MAX_ENTRY_IDS = 20;\n\n/** Demo mode (R042) runs only these. An allowlist, so a new write tool is refused until it is added here. */\nconst DEMO_TOOLS = new Set([\n \"vibedoc_get_status\", \"vibedoc_get_sessions\", \"vibedoc_read_doc\", \"vibedoc_list_docs\", \"vibedoc_search_docs\",\n \"vibedoc_list_tasks\", \"vibedoc_get_task\", \"vibedoc_read_memory\", \"vibedoc_memory_history\", \"vibedoc_recall\",\n \"vibedoc_get_entries\", \"vibedoc_list_templates\", \"vibedoc_get_context\", \"vibedoc_get_planning_guide\",\n \"vibedoc_get_file_map\", \"vibedoc_read_registry\", \"vibedoc_get_roadmap\",\n]);\n\n/** False for a write in demo mode. `vibedoc_memory_history` reads, except with `restore: true`. */\nfunction allowedInDemo(name: string, args: Record<string, unknown>): boolean {\n return DEMO_TOOLS.has(name) && !(name === \"vibedoc_memory_history\" && args.restore === true);\n}\n\nconst visibleTools = () => (isDemo() ? TOOLS.filter((t) => DEMO_TOOLS.has(t.name)) : TOOLS);\nconst MEMORY_SOURCES = [\"claude-code\"] as const; // R052: Cursor / Cline importers are out of scope\nconst withGap = (block: string) => (block ? `\\n\\n${block}` : \"\");\n\nconst TOOLS = [\n {\n name: \"vibedoc_get_status\",\n description:\n \"Get project status overview: active tasks, blockers, doc count, memory. Call this at session start.\",\n inputSchema: { type: \"object\", properties: {}, required: [] },\n },\n {\n name: \"vibedoc_get_sessions\",\n description:\n \"Agent and human sessions grouped from the activity log, newest first: who, when, tasks moved, docs changed, ADRs. Call at session start to see what happened recently.\",\n inputSchema: {\n type: \"object\",\n properties: {\n limit: { type: \"number\", description: \"Max sessions to return (default 10)\" },\n taskId: { type: \"string\", description: 'Only sessions that moved this task, e.g. \"T003\"' },\n since: { type: \"string\", description: \"ISO timestamp; only sessions that ended at or after it\" },\n },\n required: [],\n },\n },\n {\n name: \"vibedoc_read_doc\",\n description:\n 'Read a doc file by name. Use: \"CLAUDE\", \"HLD\", \"EVENT_CATALOG\", \"MEMORY\", \"user-service/API\", \"ADR-001\". Ends with a \"## Related files\" footer when the doc has links: what it links to, what links to it (docs by path; tasks, epics, entries, ADRs by id) broken links ([x](y.md) / [[y]] to no file) and stale paths (backticked paths to missing files), so you know what to read next.',\n inputSchema: {\n type: \"object\",\n properties: {\n query: {\n type: \"string\",\n description: 'Doc name, e.g. \"CLAUDE\", \"HLD\", \"user-service/API\"',\n },\n },\n required: [\"query\"],\n },\n },\n {\n name: \"vibedoc_list_docs\",\n description:\n \"List all documentation files grouped by section, with each doc's priority (P0 highest) when set. Use to discover what docs exist.\",\n inputSchema: { type: \"object\", properties: {}, required: [] },\n },\n {\n name: \"vibedoc_set_doc_priority\",\n description:\n 'Set a doc\\'s priority (P0 highest … P3 lowest), or clear it with null. Stored as `priority:` in the doc\\'s frontmatter; nothing else in the file changes.',\n inputSchema: {\n type: \"object\",\n properties: {\n path: { type: \"string\", description: 'Relative path from project root, e.g. \"docs/api/my-guide.md\"' },\n priority: { type: [\"string\", \"null\"], enum: [...PRIORITIES, null], description: \"P0, P1, P2, P3, or null to clear\" },\n },\n required: [\"path\", \"priority\"],\n },\n },\n {\n name: \"vibedoc_search_docs\",\n description:\n \"Full-text search across all docs. Returns files and line snippets.\",\n inputSchema: {\n type: \"object\",\n properties: { query: { type: \"string\", description: \"Search term\" } },\n required: [\"query\"],\n },\n },\n {\n name: \"vibedoc_write_doc\",\n description:\n 'Write or create a documentation file. Use to add new docs or update existing ones. Path is relative to project root (e.g., \"docs/api/endpoints.md\"). Creates parent directories as needed. Triggers real-time browser update so the user can review.',\n inputSchema: {\n type: \"object\",\n properties: {\n path: {\n type: \"string\",\n description:\n 'Relative path from project root, e.g. \"docs/api/my-guide.md\"',\n },\n content: {\n type: \"string\",\n description: \"Full markdown content to write\",\n },\n },\n required: [\"path\", \"content\"],\n },\n },\n {\n name: \"vibedoc_list_tasks\",\n description:\n \"List all tasks as a kanban board. Filter by status optionally.\",\n inputSchema: {\n type: \"object\",\n properties: {\n status: {\n type: \"string\",\n enum: [\"all\", \"todo\", \"in-progress\", \"review\", \"blocked\", \"paused\", \"done\", \"cancelled\"],\n },\n },\n required: [],\n },\n },\n {\n name: \"vibedoc_get_task\",\n description:\n \"Read a specific task file including scope, criteria, and definition of done.\",\n inputSchema: {\n type: \"object\",\n properties: {\n taskId: { type: \"string\", description: 'e.g. \"T001\", \"T003\"' },\n },\n required: [\"taskId\"],\n },\n },\n {\n name: \"vibedoc_update_task\",\n description:\n \"Update task status. Call when starting, finishing, or blocking a task. UI updates in real time. \" +\n \"When moving a task to done, include manualTests: a checklist of what a human should click through to trust it, \" +\n \"written from what you actually changed (optional, never blocks the move).\",\n inputSchema: {\n type: \"object\",\n properties: {\n taskId: { type: \"string\" },\n status: {\n type: \"string\",\n enum: [\"todo\", \"in-progress\", \"review\", \"done\", \"blocked\", \"paused\", \"cancelled\"],\n },\n manualTests: {\n type: \"string\",\n description:\n \"Optional manual test report, saved as the task's `## Manual tests` section (replaces an older one). Markdown checklist: \" +\n \"`### Steps` items as `- [ ] <what to do> → <what you should see>`, then `### Regression risk` items for existing features worth re-checking. \" +\n \"Plain lines become unticked steps.\",\n },\n agent: {\n type: \"string\",\n description: 'Your name as the owner of the task, e.g. \"claude\" (defaults to the MCP client\\'s name). Starting a task makes you its owner.',\n },\n },\n required: [\"taskId\", \"status\"],\n },\n },\n {\n name: \"vibedoc_next_task\",\n description:\n \"Claim the next ready task of an epic (deps done, not taken) and move it to in-progress. Call again after marking it done.\",\n inputSchema: {\n type: \"object\",\n properties: {\n epic: { type: \"string\", description: 'Epic roadmap id, e.g. \"R037\"' },\n agent: {\n type: \"string\",\n description: 'Your name as the owner of the task, e.g. \"claude\" (defaults to the MCP client\\'s name). Starting a task makes you its owner.',\n },\n },\n required: [\"epic\"],\n },\n },\n {\n name: \"vibedoc_log_decision\",\n description:\n \"Write a new Architecture Decision Record (ADR) when making a technical decision.\",\n inputSchema: {\n type: \"object\",\n properties: {\n title: { type: \"string\" },\n context: { type: \"string\" },\n decision: { type: \"string\" },\n rationale: { type: \"string\" },\n alternatives: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n option: { type: \"string\" },\n reason: { type: \"string\" },\n },\n },\n },\n consequences: { type: \"string\" },\n },\n required: [\"title\", \"context\", \"decision\"],\n },\n },\n {\n name: \"vibedoc_read_memory\",\n description:\n \"Read MEMORY.md — the session handoff file. Always call this at session start. If it shows '## ⚠ Memory warnings' (the handoff contradicts the board), fix the handoff with vibedoc_update_memory before starting work.\",\n inputSchema: { type: \"object\", properties: {}, required: [] },\n },\n {\n name: \"vibedoc_update_memory\",\n description:\n \"Update MEMORY.md with session summary. Call at END of every session. Only the sections you pass are rewritten; other sections (including hand-written ones) are kept. Durable facts (conventions, gotchas, decisions, preferences) go to vibedoc_save_entry, not the handoff.\",\n inputSchema: {\n type: \"object\",\n properties: {\n currentState: { type: \"string\" },\n justCompleted: { type: \"array\", items: { type: \"string\" } },\n workingOn: { type: \"string\" },\n upNext: { type: \"array\", items: { type: \"string\" } },\n issues: {\n type: \"array\",\n items: {\n oneOf: [\n { type: \"string\" },\n { type: \"object\", properties: { issue: { type: \"string\" }, severity: { type: \"string\" }, status: { type: \"string\" } }, required: [\"issue\"] },\n ],\n },\n },\n decisions: { type: \"array\", items: { type: \"string\" } },\n techDebt: { type: \"array\", items: { type: \"string\" } },\n handoff: { type: \"string\" },\n },\n required: [],\n },\n },\n {\n name: \"vibedoc_memory_history\",\n description:\n \"Earlier versions of MEMORY.md (a copy is saved before every write). No id → list (newest first); id → that version's content; id + restore: true → write it back (the current file is saved first, so a restore is undoable).\",\n inputSchema: {\n type: \"object\",\n properties: {\n id: { type: \"string\", description: \"Version id from the list, e.g. 20261003T154209123Z-ai\" },\n restore: { type: \"boolean\", description: \"With id: restore that version\" },\n },\n required: [],\n },\n },\n {\n name: \"vibedoc_save_entry\",\n description:\n \"Save one long-lived fact (convention, gotcha, decision, preference) as its own entry. Omit id to create; pass id to update. Put facts that should outlast this session here, not in the handoff.\",\n inputSchema: {\n type: \"object\",\n properties: {\n id: { type: \"string\", description: \"Entry id to update, e.g. E001. Omit to create.\" },\n type: { type: \"string\", enum: [...ENTRY_TYPES] },\n summary: { type: \"string\", description: \"One line, at most 120 characters\" },\n body: { type: \"string\", description: \"Details and the why (markdown)\" },\n },\n required: [\"type\", \"summary\"],\n },\n },\n {\n name: \"vibedoc_import_memory\",\n description:\n \"Import the developer's Claude Code memory for this project into knowledge entries. Without apply it only previews; call again with apply: true to write.\",\n inputSchema: {\n type: \"object\",\n properties: {\n source: { type: \"string\", enum: [...MEMORY_SOURCES] },\n apply: { type: \"boolean\", description: \"Write the previewed entries. Default false (preview only).\" },\n },\n required: [\"source\"],\n },\n },\n {\n name: \"vibedoc_export_memory\",\n description:\n \"Write the knowledge entries into a managed block in AGENTS.md (created if missing) and CLAUDE.md (if it exists), so Cursor, Codex and other agents see the same conventions. Text outside the block is never touched.\",\n inputSchema: { type: \"object\", properties: {} },\n },\n {\n name: \"vibedoc_recall\",\n description:\n \"Search memory entries by topic or keyword. Returns a compact list (id, type, summary); fetch bodies with vibedoc_get_entries.\",\n inputSchema: {\n type: \"object\",\n properties: {\n query: { type: \"string\", description: \"Topic or keywords, e.g. \\\"sse events\\\"\" },\n type: { type: \"string\", enum: [...ENTRY_TYPES] },\n limit: { type: \"number\", description: \"Max results, default 10\" },\n },\n required: [\"query\"],\n },\n },\n {\n name: \"vibedoc_get_entries\",\n description: \"Fetch full knowledge entries (body included) by id, after vibedoc_recall or the session-start index. Max 20 ids per call.\",\n inputSchema: {\n type: \"object\",\n properties: { ids: { type: \"array\", items: { type: \"string\" }, description: 'e.g. [\"E012\", \"E030\"]' } },\n required: [\"ids\"],\n },\n },\n {\n name: \"vibedoc_delete_entry\",\n description: \"Delete a knowledge entry that is wrong or no longer true. Git keeps its history.\",\n inputSchema: {\n type: \"object\",\n properties: { id: { type: \"string\", description: \"e.g. E001\" } },\n required: [\"id\"],\n },\n },\n {\n name: \"vibedoc_create_doc\",\n description:\n \"Create a new doc from a template. Use vibedoc_list_templates to see available IDs. Fails if file exists.\",\n inputSchema: {\n type: \"object\",\n properties: {\n path: { type: \"string\" },\n templateId: { type: \"string\", description: 'Defaults to \"blank\"' },\n },\n required: [\"path\"],\n },\n },\n {\n name: \"vibedoc_list_templates\",\n description: \"List all doc templates with IDs, names, and default paths.\",\n inputSchema: { type: \"object\", properties: {}, required: [] },\n },\n {\n name: \"vibedoc_get_context\",\n description:\n \"Bundle multiple docs into a single context block. Useful for loading several docs at once before starting a task.\",\n inputSchema: {\n type: \"object\",\n properties: {\n paths: {\n type: \"array\",\n items: { type: \"string\" },\n description: \"Array of relative doc paths to bundle\",\n },\n },\n required: [\"paths\"],\n },\n },\n {\n name: \"vibedoc_propose_edit\",\n description:\n \"Propose targeted edits to a doc for the user to review. Does NOT write the file: the user sees a diff in the UI and accepts or rejects it. Each edit replaces one exact old_string (must match exactly once, include enough surrounding text to be unique) with new_string; edits apply in order. Only send the parts that change. For a brand-new doc, use a single edit with an empty old_string.\",\n inputSchema: {\n type: \"object\",\n properties: {\n path: { type: \"string\", description: \"Relative path to the doc file\" },\n edits: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n old_string: { type: \"string\", description: \"Exact text currently in the doc\" },\n new_string: { type: \"string\", description: \"Replacement text\" },\n },\n required: [\"old_string\", \"new_string\"],\n },\n },\n summary: { type: \"string\", description: \"One short line describing the change\" },\n },\n required: [\"path\", \"edits\"],\n },\n },\n {\n name: \"vibedoc_propose_plan\",\n description:\n \"Propose a plan for the user to review: kind \\\"breakdown\\\" (tasks: pass epic for an existing epic, newEpic to create the epic with the tasks, or neither for loose tasks with no epic) or kind \\\"roadmap\\\" (new horizons and epics: horizons + epics; an epic's parent is an existing horizon id or a horizon key in this plan; epic body = one outcome sentence, a blank line, then **In scope:** / **Out of scope:** / **Done when:**). Does NOT write anything: the user sees the plan in the UI, can uncheck items, and accepts. Validated against the current files; on errors, fix the plan and call again. Each task body is the full markdown below the meta block (## Goal, ## Context, ## Scope, ## Files, ## Acceptance criteria, ## Verify). dependsOn lists keys of earlier tasks in this plan or existing task ids (\\\"T030\\\").\",\n inputSchema: {\n type: \"object\",\n properties: {\n plan: {\n type: \"object\",\n properties: {\n kind: { type: \"string\", enum: [\"breakdown\", \"roadmap\"] },\n epic: { type: \"string\", description: \"breakdown: existing epic id, e.g. R004 (not a horizon). Omit with newEpic or for loose tasks\" },\n newEpic: {\n type: \"object\",\n description: \"breakdown from a spec: create this epic and link the tasks to it (not together with epic)\",\n properties: {\n title: { type: \"string\" },\n parent: { type: \"string\", description: \"Existing horizon id, e.g. R002\" },\n body: { type: \"string\", description: \"One outcome sentence, a blank line, then **In scope:** / **Out of scope:** / **Done when:**\" },\n },\n required: [\"title\", \"parent\", \"body\"],\n },\n horizons: {\n type: \"array\",\n description: \"roadmap: new horizons (no parent)\",\n items: {\n type: \"object\",\n properties: { key: { type: \"string\", description: \"e.g. h1\" }, title: { type: \"string\" }, body: { type: \"string\" } },\n required: [\"key\", \"title\"],\n },\n },\n epics: {\n type: \"array\",\n description: \"roadmap: new epics\",\n items: {\n type: \"object\",\n properties: {\n key: { type: \"string\", description: \"e.g. e1\" },\n title: { type: \"string\" },\n parent: { type: \"string\", description: \"Existing horizon id (R002) or a horizon key in this plan (h1)\" },\n body: { type: \"string\" },\n },\n required: [\"key\", \"title\", \"parent\", \"body\"],\n },\n },\n tasks: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n key: { type: \"string\", description: \"Stable key within the plan, e.g. t1\" },\n title: { type: \"string\" },\n size: { type: \"string\", description: \"S (~1 hr) | M (2–3 hrs) | L (half day)\" },\n dependsOn: { type: \"array\", items: { type: \"string\" } },\n due: { type: \"string\", description: \"YYYY-MM-DD\" },\n body: { type: \"string\", description: \"Markdown below the meta block\" },\n },\n required: [\"key\", \"title\", \"body\"],\n },\n },\n },\n required: [\"kind\"],\n },\n },\n required: [\"plan\"],\n },\n },\n {\n name: \"vibedoc_ask_questions\",\n description:\n \"Ask the user 1–4 multiple-choice questions, shown as a card in the chat UI (same shape as AskUserQuestion). The tool can't wait for answers: after calling it, end your turn. The answers arrive as the next user message, one line per question keyed by its header, e.g. `- Scope: Label A, Label B` or `- Scope: Other: \\\"free text\\\"`.\",\n inputSchema: {\n type: \"object\",\n properties: {\n questions: {\n type: \"array\",\n minItems: 1,\n maxItems: 4,\n items: {\n type: \"object\",\n properties: {\n question: { type: \"string\", description: \"The full question\" },\n header: { type: \"string\", description: \"Short label (max ~12 chars), used as the answer key\" },\n multiSelect: { type: \"boolean\", description: \"true = checkboxes, false = one choice\" },\n options: {\n type: \"array\",\n minItems: 2,\n maxItems: 4,\n items: {\n type: \"object\",\n properties: {\n label: { type: \"string\" },\n description: { type: \"string\" },\n },\n required: [\"label\"],\n },\n },\n },\n required: [\"question\", \"header\", \"multiSelect\", \"options\"],\n },\n },\n },\n required: [\"questions\"],\n },\n },\n {\n name: \"vibedoc_get_planning_guide\",\n description:\n \"Load the instructions for planning work from chat. Call this first when the user asks to plan or generate a roadmap (kind \\\"roadmap\\\") or to break an epic into tasks (kind \\\"breakdown\\\"), then follow it.\",\n inputSchema: {\n type: \"object\",\n properties: {\n kind: { type: \"string\", enum: [\"roadmap\", \"breakdown\"] },\n },\n required: [\"kind\"],\n },\n },\n {\n name: \"vibedoc_append_doc\",\n description:\n \"Append content to an existing doc file. Adds two newlines before the appended content.\",\n inputSchema: {\n type: \"object\",\n properties: {\n path: { type: \"string\", description: \"Relative path to the doc file\" },\n content: { type: \"string\", description: \"Content to append\" },\n },\n required: [\"path\", \"content\"],\n },\n },\n {\n name: \"vibedoc_rename_doc\",\n description: \"Rename or move a doc file to a new path.\",\n inputSchema: {\n type: \"object\",\n properties: {\n oldPath: { type: \"string\", description: \"Current path of the doc\" },\n newPath: { type: \"string\", description: \"New path for the doc\" },\n },\n required: [\"oldPath\", \"newPath\"],\n },\n },\n {\n name: \"vibedoc_delete_doc\",\n description: \"Delete a doc file. This action cannot be undone.\",\n inputSchema: {\n type: \"object\",\n properties: {\n path: { type: \"string\", description: \"Path of the doc to delete\" },\n },\n required: [\"path\"],\n },\n },\n {\n name: \"vibedoc_get_file_map\",\n description:\n \"Get a structured map of all documentation files with descriptions and last-modified dates. Use at session start to orient yourself without reading each file individually.\",\n inputSchema: { type: \"object\", properties: {}, required: [] },\n },\n {\n name: \"vibedoc_read_registry\",\n description:\n \"Read docs/REGISTRY.md — file tree + annotations so you know which doc to open for any task. Call at session start after vibedoc_read_memory. If absent, call vibedoc_rebuild_registry first.\",\n inputSchema: { type: \"object\", properties: {}, required: [] },\n },\n {\n name: \"vibedoc_rebuild_registry\",\n description:\n \"Regenerate docs/REGISTRY.md — refreshes the file tree, adds stub rows for new files, and preserves existing descriptions/keywords. Run after adding or removing docs.\",\n inputSchema: { type: \"object\", properties: {}, required: [] },\n },\n {\n name: \"vibedoc_annotate_doc\",\n description:\n \"Add or update the description and keywords for one doc in the registry without a full rebuild.\",\n inputSchema: {\n type: \"object\",\n properties: {\n path: {\n type: \"string\",\n description: 'Relative path of the doc, e.g. \"docs/api-reference.md\"',\n },\n description: {\n type: \"string\",\n description: \"Short description of what this doc contains\",\n },\n keywords: {\n type: \"string\",\n description: \"Comma-separated keywords for this doc\",\n },\n },\n required: [\"path\", \"description\", \"keywords\"],\n },\n },\n {\n name: \"vibedoc_get_roadmap\",\n description:\n \"Get the product roadmap: horizons (spine nodes, e.g. v2.0) with their nested feature items, statuses and linked tasks.\",\n inputSchema: { type: \"object\", properties: {}, required: [] },\n },\n {\n name: \"vibedoc_create_roadmap_item\",\n description:\n \"Create a roadmap item (plans/roadmap/R*.md). Omit parent to create a horizon on the spine; set parent to a horizon id (e.g. R001) to create a feature under it.\",\n inputSchema: {\n type: \"object\",\n properties: {\n title: { type: \"string\" },\n parent: { type: \"string\", description: \"Horizon id, e.g. R001. Omit for a horizon.\" },\n status: { type: \"string\", enum: [\"planned\", \"in-progress\", \"paused\", \"done\"] },\n order: { type: \"number\", description: \"Sort key (steps of 10). Defaults to last among siblings.\" },\n tasks: { type: \"array\", items: { type: \"string\" }, description: 'Linked task ids, e.g. [\"T001\"]' },\n due: { type: \"string\", description: \"Due date YYYY-MM-DD (optional)\" },\n body: { type: \"string\", description: \"Markdown description\" },\n },\n required: [\"title\"],\n },\n },\n {\n name: \"vibedoc_update_roadmap_item\",\n description:\n \"Update fields of a roadmap item. Only the given fields change. parent: null (or \\\"\\\") makes it a horizon.\",\n inputSchema: {\n type: \"object\",\n properties: {\n id: { type: \"string\", description: \"e.g. R004\" },\n title: { type: \"string\" },\n parent: { type: [\"string\", \"null\"] },\n status: { type: \"string\", enum: [\"planned\", \"in-progress\", \"paused\", \"done\"] },\n order: { type: \"number\" },\n tasks: { type: \"array\", items: { type: \"string\" } },\n due: { type: [\"string\", \"null\"], description: \"Due date YYYY-MM-DD; null clears it\" },\n priority: { type: [\"string\", \"null\"], enum: [...PRIORITIES, null], description: \"P0 (highest) … P3; null clears it\" },\n body: { type: \"string\" },\n },\n required: [\"id\"],\n },\n },\n];\n\n/** Maps the terminal skill's tools to the chat tools. The skill text follows it. */\nconst PLANNING_PREAMBLE = `You are running this planning skill inside the VibeDoc chat, not a terminal:\n- Where it says AskUserQuestion, call vibedoc_ask_questions with the same shape, then END YOUR TURN; answers arrive as the next message (\"Answers: - <header>: <labels>\").\n- Where it says to show the draft and ask Create/Adjust, call vibedoc_propose_plan instead (do not ask a Create/Adjust question); the user previews, unchecks and accepts in the UI, and Accept writes everything. Skip the skill's write steps: never call vibedoc_create_roadmap_item, vibedoc_update_roadmap_item or any other write tool, and never write files yourself.\n- Read the project with vibedoc_* tools (vibedoc_get_roadmap, vibedoc_list_tasks, vibedoc_read_doc, vibedoc_search_docs, vibedoc_get_file_map); you have no shell or file access.\n- Skip steps that need a shell or the codebase beyond what those tools return; say so briefly. Tasks written this way know less about the code than a terminal run would; tell the user that once.\n\n---\n\n`;\n\nasync function taskInfoMap(root: string): Promise<Record<string, TaskInfo>> {\n const { tasks } = await listTasks(root);\n return Object.fromEntries(tasks.map((t) => [t.id, { status: t.status, due: t.due }]));\n}\n\n/** After a task move, point the agent at roadmap items linking it that are now out of sync. */\nasync function roadmapHint(root: string, taskId: string): Promise<string> {\n const { items } = await listRoadmap(root);\n const linked = new Set(items.filter((i) => i.tasks.includes(taskId)).map((i) => i.id));\n if (!linked.size) return \"\";\n const { drift } = roadmapHealth(items, await taskInfoMap(root), localToday());\n const hits = drift.filter((d) => d.suggestedStatus && linked.has(d.id));\n if (!hits.length) return \"\";\n return \"\\n\\n🗺️ Roadmap out of sync:\\n\" + hits\n .map((d) => `- ${d.message} → vibedoc_update_roadmap_item { \"id\": \"${d.id}\", \"status\": \"${d.suggestedStatus}\" }`)\n .join(\"\\n\");\n}\n\n/** `agent` is who is calling (args.agent, else the MCP client from its User-Agent); starting a task makes it the owner. */\nasync function handleTool(name: string, args: Record<string, unknown>, root: string, agent = \"agent\") {\n\n switch (name) {\n case \"vibedoc_get_status\": {\n const s = await getProjectSummary(root);\n const b = s.tasks.board;\n const lines = [\n `## ${s.name} — Project Status`,\n `**Docs:** ${s.docs.total} files`,\n `**Memory:** ${s.memory.exists ? \"exists\" : \"not yet created\"}`,\n \"\",\n \"### Board\",\n `📋 Todo: ${b.todo} 🔨 In Progress: ${b[\"in-progress\"]} 👀 Review: ${b.review ?? 0} 🚫 Blocked: ${b.blocked} ✅ Done: ${b.done}`,\n ];\n if (s.tasks.active.length > 0) {\n lines.push(\"\", \"**Active:**\");\n s.tasks.active.forEach((t) => lines.push(` 🔨 ${t.id}: ${t.title}`));\n }\n if (s.tasks.blocked.length > 0) {\n lines.push(\"\", \"**Blocked:**\");\n s.tasks.blocked.forEach((t) => lines.push(` 🚫 ${t.id}: ${t.title}`));\n }\n lines.push(\"\", \"_See vibedoc_get_sessions for what happened recently._\");\n return lines.join(\"\\n\");\n }\n\n case \"vibedoc_get_sessions\": {\n const limit = Number(args.limit) || 10;\n const since = args.since ? String(args.since) : null;\n let sessions = groupSessions(await readActivity(root, 2000));\n if (args.taskId) sessions = sessionsForTask(sessions, String(args.taskId));\n if (since) {\n const t = Date.parse(since);\n if (Number.isNaN(t)) return `Invalid \"since\": ${since} (expected an ISO timestamp)`;\n sessions = sessions.filter((x) => Date.parse(x.end) >= t);\n }\n sessions = sessions.slice(0, limit);\n if (!sessions.length) return \"No sessions\" + (args.taskId ? ` touched ${args.taskId}` : \"\") + (since ? ` since ${since}` : \"\") + \".\";\n return sessions.map((x) => [\n `### ${x.actor === \"ai\" ? \"🤖 Agent\" : \"👤 Human\"} · ${x.start} (${sessionDuration(x)})`,\n x.headline,\n ...x.tasks.map((t) => `- ${t.id} → ${t.lastStatus}`),\n ...x.docs.map((d) => `- 📄 ${d}`),\n ...x.decisions.map((d) => `- 📝 ${d}`),\n ].join(\"\\n\")).join(\"\\n\\n\");\n }\n\n case \"vibedoc_read_doc\": {\n const { path: docPath, content } = await readDoc(\n String(args.query),\n root,\n );\n emitUpdate(\"doc_read\", { path: docPath });\n const related = formatRelatedFiles(docLinks(await getDocGraph(root), docPath));\n return `## ${docPath}\\n\\n${content}` + (related ? `\\n\\n---\\n\\n${related}` : \"\");\n }\n\n case \"vibedoc_list_docs\": {\n const docs = await listDocs(root);\n const sections: Record<string, string[]> = {};\n for (const d of docs) {\n if (!sections[d.section]) sections[d.section] = [];\n sections[d.section].push(d.priority ? `${d.path} [${d.priority}]` : d.path);\n }\n const lines = [`📚 ${docs.length} files\\n`];\n for (const [s, files] of Object.entries(sections)) {\n lines.push(`**${s}** (${files.length})`);\n files.forEach((f) => lines.push(` ${f}`));\n lines.push(\"\");\n }\n return lines.join(\"\\n\");\n }\n\n case \"vibedoc_search_docs\": {\n const results = await searchDocs(String(args.query), root);\n if (!results.length) return `No results for \"${args.query}\"`;\n const lines = [`🔍 \"${args.query}\" — ${results.length} file(s)\\n`];\n for (const r of results) {\n lines.push(`**${r.file}** (${r.totalHits} hits)`);\n r.hits.forEach((h) => lines.push(` L${h.line}: ${h.text}`));\n lines.push(\"\");\n }\n return lines.join(\"\\n\");\n }\n\n case \"vibedoc_write_doc\": {\n const docPath = String(args.path);\n const content = String(args.content);\n await writeDoc(docPath, content, root);\n await noteDocEdit(root, docPath, \"ai\");\n emitUpdate(\"doc_updated\", { path: docPath, actor: \"ai\" });\n return `✅ Written: ${docPath}`;\n }\n\n case \"vibedoc_set_doc_priority\": {\n const docPath = String(args.path);\n const priority = args.priority ?? null;\n if (priority !== null && !PRIORITIES.includes(priority as Priority)) {\n return `❌ priority must be one of ${PRIORITIES.join(\", \")} or null`;\n }\n await setDocProperties(docPath, { priority: priority as Priority | null }, root);\n await noteDocEdit(root, docPath, \"ai\");\n emitUpdate(\"doc_updated\", { path: docPath, actor: \"ai\", properties: { priority } });\n return priority ? `✅ ${docPath} is now ${priority}` : `✅ Cleared the priority of ${docPath}`;\n }\n\n case \"vibedoc_list_tasks\": {\n const { board, tasks } = await listTasks(root);\n const filter = (args.status as string) || \"all\";\n const cols =\n filter === \"all\"\n ? [\"in-progress\", \"review\", \"blocked\", \"paused\", \"todo\", \"done\", \"cancelled\"]\n : [filter];\n const lines = [`## Tasks (${tasks.length})\\n`];\n for (const col of cols) {\n const items = board[col as TaskStatus] || [];\n lines.push(`### ${col.toUpperCase()} (${items.length})`);\n if (!items.length) lines.push(\" (empty)\");\n items.forEach((t) =>\n lines.push(` **${t.id}** ${t.title}${t.size ? ` — ${t.size}` : \"\"}`),\n );\n lines.push(\"\");\n }\n return lines.join(\"\\n\");\n }\n\n case \"vibedoc_get_task\": {\n const task = await getTask(String(args.taskId), root);\n return `## ${task.file}\\n\\n${task.raw}` + withGap(await relatedEntries(task, root));\n }\n\n case \"vibedoc_update_task\": {\n const report = typeof args.manualTests === \"string\" && args.manualTests.trim() ? args.manualTests : null;\n if (report) await saveManualTests(String(args.taskId), report, root, \"ai\");\n const result = await updateTaskStatus(\n String(args.taskId),\n args.status as TaskStatus,\n root,\n \"ai\",\n { actor: \"ai\", agent },\n );\n emitUpdate(\"task_updated\", {\n taskId: args.taskId,\n status: args.status,\n previousStatus: result.previousStatus,\n task: result.task,\n });\n const tests = result.task.manualTests;\n return `✅ **${result.task.id}** → **${result.task.status}**\\n(was: ${result.previousStatus})` +\n (tests ? `\\n🧪 Manual tests: ${tests.done}/${tests.total} ticked` : \"\") +\n (await roadmapHint(root, result.task.id));\n }\n\n case \"vibedoc_next_task\": {\n const epicId = String(args.epic ?? \"\").trim();\n if (!epicId) throw new Error(\"epic is required\");\n const { result, task, previousStatus } = await claimNextTask(epicId, root, agent);\n // R050: nothing ready = the run is over; leave an episode unless the session wrote a handoff\n const runEnd = async () => {\n const ep = await writeRunEpisode(root, `epic ${epicId.toUpperCase()}`, agent);\n if (!ep) return \"\";\n emitUpdate(\"episode_saved\", ep);\n return `\\n\\nEpisode saved → ${ep.file}`;\n };\n if (result.kind === \"finished\") {\n const { items } = await listRoadmap(root);\n const statuses = await taskInfoMap(root);\n const epic = items.find((i) => i.id === epicId.toUpperCase());\n const id = epic?.id ?? epicId.toUpperCase();\n const n = epic ? epic.tasks.filter((t) => t in statuses).length : 0;\n const nudge = roadmapHealth(items, statuses, localToday()).drift\n .find((d) => d.id === id && d.suggestedStatus === \"done\");\n return `✅ Epic ${id} is finished — all ${n} tasks done or cancelled. Stop here.` +\n (nudge ? `\\n\\n🗺️ ${nudge.message} → vibedoc_update_roadmap_item { \"id\": \"${id}\", \"status\": \"done\" }` : \"\") +\n (await runEnd());\n }\n if (result.kind === \"waiting\") {\n return `⏳ Nothing ready in ${epicId.toUpperCase()}.\\n` + result.waiting.map((w) => `- ${w.reason}`).join(\"\\n\") +\n (result.needsHuman ? \"\\n\\nNeeds a human: approve, send back or unblock one of the tasks above.\" : \"\") +\n (await runEnd());\n }\n if (!task) throw new Error(`claim of ${epicId.toUpperCase()} returned no task`);\n emitUpdate(\"task_updated\", {\n taskId: task.id,\n status: task.status,\n previousStatus,\n task,\n });\n // Sent back from review (R043): the reviewer's note comes first, before the spec\n const review = latestReview(task.raw ?? \"\");\n const changes = review?.outcome === \"changes requested\"\n ? `\\n\\n⚠️ Changes requested (${review.at}):\\n${review.note}\\nAddress this first; the rest of the spec below still applies.`\n : \"\";\n return `🔨 Claimed **${task.id}** ${task.title} (now in-progress)${changes}\\n\\n## ${task.file}\\n\\n${task.raw}` +\n (await roadmapHint(root, task.id)) + withGap(await relatedEntries(task, root));\n }\n\n case \"vibedoc_log_decision\": {\n const result = await logDecision(\n args as unknown as Parameters<typeof logDecision>[0],\n root,\n \"ai\",\n );\n emitUpdate(\"decision_logged\", result);\n return `📝 **${result.adrNumber}** logged\\nFile: ${result.path}`;\n }\n\n case \"vibedoc_read_memory\": {\n // read before logSessionStart, which opens a new session: the one still running is the agent's, never backfill it\n const running = currentSessionId(root);\n await logSessionStart(root, \"ai\");\n emitUpdate(\"session_start\", { root });\n // R050: ended sessions with no handoff get an `inferred` episode first, so the response below can show it\n for (const ep of await backfillEpisodes(root, { excludeSessionId: running })) {\n emitUpdate(\"episode_saved\", ep);\n }\n return sessionStartMemory(root);\n }\n\n case \"vibedoc_update_memory\": {\n await updateMemory(\n args as unknown as Parameters<typeof updateMemory>[0],\n root,\n \"ai\",\n );\n emitUpdate(\"memory_updated\", { root });\n return `🧠 MEMORY.md updated`;\n }\n\n case \"vibedoc_memory_history\": {\n const vid = typeof args.id === \"string\" ? args.id.trim() : \"\";\n if (!vid) {\n const versions = (await listMemoryVersions(root)).slice(0, 20);\n if (!versions.length) return \"No saved versions of MEMORY.md yet.\";\n return versions.map((v) => `${v.id} · ${v.at} · ${v.actor} · ${v.reason} · ${v.excerpt}`).join(\"\\n\");\n }\n // a malformed id throws in core; to the agent it is just as missing\n const content = await getMemoryVersion(vid, root).catch(() => null);\n if (content === null) return `Version ${vid} not found`;\n if (args.restore !== true) return content;\n const { restoredFrom, newId } = await restoreMemoryVersion(vid, root, \"ai\");\n emitUpdate(\"memory_updated\", { root });\n return `Restored MEMORY.md to ${restoredFrom}; the replaced version is ${newId ?? \"(none — there was no MEMORY.md)\"}`;\n }\n\n case \"vibedoc_save_entry\": {\n // only the declared fields: agents never set **Source:** by hand (R052)\n const { id, type, summary, body } = args as unknown as EntryInput;\n const entry = await saveEntry({ id, type, summary, body }, root, \"ai\", agent);\n emitUpdate(\"memory_updated\", { root, entryId: entry.id });\n return `🧠 Saved **${entry.id}** · ${entry.type} · ${entry.summary}\\n${entry.file}`;\n }\n\n case \"vibedoc_import_memory\": {\n if (!(MEMORY_SOURCES as readonly unknown[]).includes(args.source)) {\n throw new Error(`Unknown source \"${String(args.source ?? \"\")}\": use one of ${MEMORY_SOURCES.join(\", \")}`);\n }\n const apply = args.apply === true;\n const { dir, found, plan, written } = await importClaudeMemory(root, \"ai\", apply, agent);\n if (!found && !plan.onlyInVibedoc.length) return `No Claude Code memory found at ${dir}`;\n if (written) emitUpdate(\"memory_updated\", { root });\n const pad = (s: string, n: number) => s.padEnd(n);\n const rows = [\n `📥 Claude Code memory → ${found} found in ${dir}`,\n ...plan.create.map((c) => `+ ${pad(apply ? \"created\" : \"new\", 10)} ${pad(c.type, 11)} ${c.summary} (${c.name})`),\n ...plan.update.map((u) => `~ ${pad(apply ? \"updated\" : \"update\", 10)} ${pad(u.entry.id, 11)} ${u.candidate.type} ${u.candidate.summary}`),\n `= ${pad(\"unchanged\", 10)} ${plan.unchanged.length}`,\n ...plan.onlyInVibedoc.map((e) => `? ${pad(\"only in VibeDoc\", 10)} ${e.id} ${e.summary} (${e.source}, not deleted)`),\n ];\n const counts = `${plan.create.length} new · ${plan.update.length} update · ${plan.unchanged.length} unchanged`;\n if (!apply) rows.push(counts, plan.create.length + plan.update.length ? \"Call again with apply: true to write.\" : \"Nothing to write.\");\n else rows.push(written ? `Wrote ${written} ${written === 1 ? \"entry\" : \"entries\"} (${plan.create.length} created · ${plan.update.length} updated).` : \"Nothing to write.\");\n return rows.join(\"\\n\");\n }\n\n case \"vibedoc_export_memory\": {\n const { count, files } = await exportEntries(root, \"ai\");\n // whole-file shape (no edits): an open editor re-reads the file and splices in the difference\n for (const f of files) if (f.changed) emitUpdate(\"doc_updated\", { path: f.file, actor: \"ai\" });\n return `📤 Exported ${count} ${count === 1 ? \"entry\" : \"entries\"} → ${files.map((f) => `${f.file} (${f.changed ? \"updated\" : \"unchanged\"})`).join(\", \")}`;\n }\n\n case \"vibedoc_recall\": {\n const query = String(args.query ?? \"\");\n if (!tokenize(query).length) {\n return `No searchable words in \"${query}\". Use topic words, e.g. vibedoc_recall { \"query\": \"sse events\" }.`;\n }\n const limit = Number(args.limit) > 0 ? Math.floor(Number(args.limit)) : undefined;\n const hits = await recallEntries(query, { type: args.type ? String(args.type) : undefined, limit }, root);\n if (!hits.length) return `No entries match \"${query}\".`;\n return `${hits.length} ${hits.length === 1 ? \"match\" : \"matches\"} for \"${query}\"\\n` +\n hits.map(formatCompactLine).join(\"\\n\") +\n `\\nFetch full entries with vibedoc_get_entries { ids: [...] }`;\n }\n\n case \"vibedoc_get_entries\": {\n const ids = Array.isArray(args.ids) ? args.ids.map(String) : [];\n if (!ids.length) throw new Error('ids must be a non-empty array, e.g. { \"ids\": [\"E001\"] }');\n if (ids.length > MAX_ENTRY_IDS) throw new Error(`Too many ids (${ids.length}); fetch at most ${MAX_ENTRY_IDS} per call and split the rest`);\n const [{ found, missing }, graph] = await Promise.all([getEntriesByIds(ids, root), getMemoryGraph(root)]);\n // R051: a full-body fetch is what counts as \"recalled\" (not recall lists or the session index)\n if (await markEntriesRecalled(found.map((e) => e.id), root)) emitUpdate(\"memory_updated\", { root });\n const blocks = found.map((e) => {\n const links = formatEntryLinks(graph, e.id);\n return `## ${e.id} · ${e.type} · ${e.summary}\\nupdated ${e.updatedAt}${e.source ? `\\nSource: ${e.source}` : \"\"}${e.body ? `\\n\\n${e.body}` : \"\"}` +\n (links.length ? `\\n\\n${links.join(\"\\n\")}` : \"\");\n });\n if (missing.length) blocks.push(`Not found: ${missing.join(\", \")}`);\n return blocks.join(\"\\n\\n\");\n }\n\n case \"vibedoc_delete_entry\": {\n const entry = await deleteEntry(String(args.id ?? \"\"), root, \"ai\");\n emitUpdate(\"memory_updated\", { root, entryId: entry.id });\n return `🗑️ Deleted **${entry.id}** · ${entry.summary}`;\n }\n\n case \"vibedoc_create_doc\": {\n const docPath = String(args.path);\n const templateId = args.templateId ? String(args.templateId) : \"blank\";\n const template =\n TEMPLATES.find((t) => t.id === templateId) ??\n TEMPLATES.find((t) => t.id === \"blank\")!;\n await createDoc(docPath, template.content, root, \"ai\");\n emitUpdate(\"doc_created\", { path: docPath });\n return `✅ Created: ${docPath} (template: ${template.name})`;\n }\n\n case \"vibedoc_list_templates\": {\n return TEMPLATES.map(\n (t) =>\n `**${t.id}** — ${t.name}\\n ${t.description}\\n Default: \\`${t.defaultPath}\\``,\n ).join(\"\\n\\n\");\n }\n\n case \"vibedoc_get_context\": {\n const paths = args.paths as string[];\n const context = await getContext(paths, root);\n if (!context) return \"(no content — check paths are correct)\";\n return context;\n }\n\n case \"vibedoc_propose_edit\": {\n const docPath = String(args.path);\n const edits = Array.isArray(args.edits) ? (args.edits as TextEdit[]) : [];\n if (edits.length === 0) throw new Error(\"edits must be a non-empty array\");\n // Validate now so the agent can fix a bad old_string before the user ever sees it\n await editDoc(docPath, edits, root, true);\n return `📝 Proposed ${edits.length} edit(s) to ${docPath}. The user will accept or reject them in the UI; not applied yet.`;\n }\n\n case \"vibedoc_propose_plan\": {\n // Validate only, like propose_edit: the UI writes via POST /api/plan/apply after Accept.\n const [{ items }, { tasks }] = await Promise.all([listRoadmap(root), listTasks(root)]);\n const errors = validatePlan(args.plan, { roadmap: items, taskIds: tasks.map((t) => t.id) });\n if (errors.length > 0) throw new Error(`Invalid plan:\\n- ${errors.join(\"\\n- \")}`);\n const plan = args.plan as Plan;\n if (plan.kind === \"roadmap\") {\n return `📋 Proposed ${(plan.horizons ?? []).length} horizons and ${(plan.epics ?? []).length} epics. The user reviews and accepts in the UI; nothing is written yet.`;\n }\n return `📋 Proposed ${plan.tasks.length} tasks for ${planTarget(plan)}. The user reviews and accepts in the UI; nothing is written yet.`;\n }\n\n case \"vibedoc_ask_questions\": {\n // Records nothing: the UI renders the tool input as a card and sends the answers as the next message.\n const qs = args.questions;\n const errors: string[] = [];\n if (!Array.isArray(qs) || qs.length < 1 || qs.length > 4) {\n errors.push(`questions must be an array of 1–4 items (got ${Array.isArray(qs) ? qs.length : typeof qs})`);\n } else {\n qs.forEach((q: Record<string, unknown>, i: number) => {\n const at = `questions[${i}]`;\n if (!q || typeof q !== \"object\") return errors.push(`${at} must be an object`);\n if (typeof q.question !== \"string\" || !q.question.trim()) errors.push(`${at}.question must be a non-empty string`);\n if (typeof q.header !== \"string\" || !q.header.trim()) errors.push(`${at}.header must be a non-empty string`);\n if (typeof q.multiSelect !== \"boolean\") errors.push(`${at}.multiSelect must be a boolean`);\n const opts = q.options;\n if (!Array.isArray(opts) || opts.length < 2 || opts.length > 4) {\n errors.push(`${at}.options must have 2–4 items (got ${Array.isArray(opts) ? opts.length : typeof opts})`);\n } else {\n opts.forEach((o: Record<string, unknown>, j: number) => {\n if (!o || typeof o.label !== \"string\" || !o.label.trim()) errors.push(`${at}.options[${j}].label must be a non-empty string`);\n if (o && o.description !== undefined && typeof o.description !== \"string\") errors.push(`${at}.options[${j}].description must be a string`);\n });\n }\n });\n }\n if (errors.length > 0) throw new Error(`Invalid questions:\\n- ${errors.join(\"\\n- \")}`);\n return `❓ Shown ${(qs as unknown[]).length} question(s) to the user. End your turn now; their answers arrive in the next message.`;\n }\n\n case \"vibedoc_get_planning_guide\":\n return PLANNING_PREAMBLE + (await readPlanningSkill(String(args.kind) as PlanningKind));\n\n case \"vibedoc_append_doc\": {\n const docPath = String(args.path);\n const content = String(args.content);\n await appendDoc(docPath, content, root);\n await noteDocEdit(root, docPath, \"ai\");\n emitUpdate(\"doc_updated\", { path: docPath, actor: \"ai\" });\n return `✅ Appended to: ${docPath}`;\n }\n\n case \"vibedoc_rename_doc\": {\n const oldPath = String(args.oldPath);\n const newPath = String(args.newPath);\n await renameDoc(oldPath, newPath, root, \"ai\");\n emitUpdate(\"doc_renamed\", { oldPath, newPath });\n return `✅ Renamed: ${oldPath} → ${newPath}`;\n }\n\n case \"vibedoc_delete_doc\": {\n const docPath = String(args.path);\n await deleteDoc(docPath, root, \"ai\");\n emitUpdate(\"doc_deleted\", { path: docPath });\n return `✅ Deleted: ${docPath}`;\n }\n\n case \"vibedoc_get_file_map\": {\n const files = await listExplorerFiles(root);\n return JSON.stringify(files, null, 2);\n }\n\n case \"vibedoc_read_registry\": {\n const { content, exists } = await readRegistry(root);\n if (!exists)\n return `*(No REGISTRY.md found — call vibedoc_rebuild_registry to generate it)*`;\n return content;\n }\n\n case \"vibedoc_rebuild_registry\": {\n const result = await rebuildRegistry(root, \"ai\");\n emitUpdate(\"registry_rebuilt\", {\n path: result.path,\n totalFiles: result.totalFiles,\n });\n return `✅ Registry rebuilt: ${result.path}\\n${result.totalFiles} files indexed`;\n }\n\n case \"vibedoc_annotate_doc\": {\n const docPath = String(args.path);\n const description = String(args.description);\n const keywords = String(args.keywords);\n await updateRegistryAnnotation(docPath, description, keywords, root);\n emitUpdate(\"registry_rebuilt\", { path: \"docs/REGISTRY.md\" });\n return `✅ Annotation updated for: ${docPath}`;\n }\n\n case \"vibedoc_get_roadmap\": {\n const { items } = await listRoadmap(root);\n if (items.length === 0) return \"No roadmap items yet (plans/roadmap/ is empty).\";\n const today = localToday();\n const { progress, drift } = roadmapHealth(items, await taskInfoMap(root), today);\n const icon = { done: \"✓\", \"in-progress\": \"◐\", paused: \"⏸\", planned: \"○\" } as const;\n const atRisk = new Set(drift.filter((d) => d.kind === \"at-risk\").map((d) => d.id));\n const fmt = (i: (typeof items)[number]) =>\n `${icon[i.status]} **${i.id}** ${i.title} — ${i.status}` +\n (i.tasks.length ? ` (tasks: ${i.tasks.join(\", \")})` : \"\") +\n (progress[i.id] ? ` [${progress[i.id].done}/${progress[i.id].total} done]` : \"\") +\n (i.due ? ` due ${i.due}${dueState(i.due, i.status, today) === \"overdue\" ? \" ⚠ overdue\" : \"\"}` : \"\") +\n (atRisk.has(i.id) ? \" ⚠ at risk\" : \"\");\n const horizons = items.filter((i) => i.parent === null);\n const lines = [\"## Roadmap\"];\n for (const h of horizons) {\n lines.push(\"\", `### ${fmt(h)}`);\n for (const c of items.filter((i) => i.parent === h.id)) lines.push(`- ${fmt(c)}`);\n }\n const orphans = items.filter((i) => i.parent !== null && !horizons.some((h) => h.id === i.parent));\n if (orphans.length) {\n lines.push(\"\", \"### Orphans (parent missing)\");\n for (const o of orphans) lines.push(`- ${fmt(o)} (parent: ${o.parent})`);\n }\n if (drift.length) {\n lines.push(\"\", \"### ⚠️ Needs attention\");\n for (const d of drift) lines.push(`- ${d.message}${d.suggestedStatus ? ` → suggest status \"${d.suggestedStatus}\"` : \"\"}`);\n }\n return lines.join(\"\\n\");\n }\n\n case \"vibedoc_create_roadmap_item\": {\n const item = await createRoadmapItem(args as unknown as CreateRoadmapItemParams, root, \"ai\");\n emitUpdate(\"roadmap_updated\", { kind: \"create\", id: item.id });\n return `✅ Created **${item.id}** ${item.title}\\nFile: ${item.file}`;\n }\n\n case \"vibedoc_update_roadmap_item\": {\n const { id, ...patch } = args;\n const item = await updateRoadmapItem(String(id ?? \"\"), patch as UpdateRoadmapItemPatch, root, \"ai\");\n emitUpdate(\"roadmap_updated\", { kind: \"update\", id: item.id });\n return `✅ Updated **${item.id}** ${item.title} — ${item.status}${item.parent ? ` (parent: ${item.parent})` : \" (horizon)\"}`;\n }\n\n default:\n throw new Error(`Unknown tool: ${name}`);\n }\n}\n\nfunction withProjectStatuses(statuses: StatusDef[]) {\n const custom = statuses.filter((d) => d.id !== d.category);\n if (!custom.length) return visibleTools();\n return visibleTools().map((t) => {\n if (t.name !== \"vibedoc_update_task\") return t;\n return {\n ...t,\n description: t.description + \" This project also has its own statuses: \" +\n custom.map((d) => `\"${d.id}\" (${d.label}, works like ${d.category})`).join(\", \") + \".\",\n inputSchema: {\n ...t.inputSchema,\n properties: { ...t.inputSchema.properties, status: { type: \"string\", enum: statuses.map((d) => d.id) } },\n },\n };\n });\n}\n\nexport async function POST(req: NextRequest) {\n let body: JsonRpcRequest;\n try {\n body = await req.json();\n } catch {\n return err(null, -32700, \"Parse error\");\n }\n\n const { id, method, params } = body;\n\n // MCP initialize\n if (method === \"initialize\") {\n return ok(id, {\n protocolVersion: \"2024-11-05\",\n capabilities: { tools: {} },\n serverInfo: { name: \"vibedoc\", version: \"1.0.0\" },\n });\n }\n\n // tools/list: vibedoc_update_task's status enum follows the project's statuses (R055)\n if (method === \"tools/list\") {\n const root = rootFrom(req.nextUrl.searchParams.get(\"root\"));\n return ok(id, { tools: withProjectStatuses((await readProjectSettings(root)).statuses) });\n }\n\n // tools/call\n if (method === \"tools/call\") {\n const name = (params?.name as string) || \"\";\n const args = (params?.arguments as Record<string, unknown>) || {};\n if (isDemo() && !allowedInDemo(name, args)) return err(id, -32000, \"read-only demo\");\n try {\n const root = rootFrom(req.nextUrl.searchParams.get(\"root\"));\n const agent = typeof args.agent === \"string\" && args.agent.trim() ? args.agent.trim() : agentFromUserAgent(req.headers.get(\"user-agent\"));\n const text = await handleTool(name, args, root, agent);\n return ok(id, { content: [{ type: \"text\", text }] });\n } catch (e: unknown) {\n const msg = e instanceof Error ? e.message : String(e);\n return ok(id, {\n content: [{ type: \"text\", text: `❌ ${msg}` }],\n isError: true,\n });\n }\n }\n\n return err(id, -32601, `Method not found: ${method}`);\n}\n\n// GET for connection test / SSE upgrade (some clients use GET)\nexport async function GET() {\n return NextResponse.json({\n name: \"vibedoc\",\n version: \"1.0.0\",\n status: \"ready\",\n tools: visibleTools().map((t) => t.name),\n });\n}\n","import {\n AppRouteRouteModule,\n type AppRouteRouteHandlerContext,\n type AppRouteRouteModuleOptions,\n} from '../../server/route-modules/app-route/module.compiled'\nimport { RouteKind } from '../../server/route-kind'\nimport { patchFetch as _patchFetch } from '../../server/lib/patch-fetch'\nimport type { IncomingMessage, ServerResponse } from 'node:http'\nimport {\n addRequestMeta,\n getRequestMeta,\n setRequestMeta,\n type RequestMeta,\n} from '../../server/request-meta'\nimport {\n getTracer,\n type Span,\n SpanKind,\n SpanStatusCode,\n} from '../../server/lib/trace/tracer'\nimport { setManifestsSingleton } from '../../server/app-render/manifests-singleton'\nimport { normalizeAppPath } from '../../shared/lib/router/utils/app-paths'\nimport { NodeNextRequest, NodeNextResponse } from '../../server/base-http/node'\nimport {\n NextRequestAdapter,\n signalFromNodeResponse,\n} from '../../server/web/spec-extension/adapters/next-request'\nimport { BaseServerSpan } from '../../server/lib/trace/constants'\nimport { getRevalidateReason } from '../../server/instrumentation/utils'\nimport { sendResponse } from '../../server/send-response'\nimport {\n fromNodeOutgoingHttpHeaders,\n toNodeOutgoingHttpHeaders,\n} from '../../server/web/utils'\nimport { getCacheControlHeader } from '../../server/lib/cache-control'\nimport { INFINITE_CACHE, NEXT_CACHE_TAGS_HEADER } from '../../lib/constants'\nimport { NoFallbackError } from '../../shared/lib/no-fallback-error.external'\nimport {\n CachedRouteKind,\n type ResponseCacheEntry,\n type ResponseGenerator,\n} from '../../server/response-cache'\n\n// These are injected by the loader afterwards. This is injected as a variable\n// instead of a replacement because this could also be `undefined` instead of\n// an empty string.\ndeclare const nextConfigOutput: AppRouteRouteModuleOptions['nextConfigOutput']\n\n// We inject the nextConfigOutput here so that we can use them in the route\n// module.\n// INJECT:nextConfigOutput\n\nconst routeModule = new AppRouteRouteModule({\n definition: {\n kind: RouteKind.APP_ROUTE,\n page: 'VAR_DEFINITION_PAGE',\n pathname: 'VAR_DEFINITION_PATHNAME',\n filename: 'VAR_DEFINITION_FILENAME',\n bundlePath: 'VAR_DEFINITION_BUNDLE_PATH',\n },\n distDir: process.env.__NEXT_RELATIVE_DIST_DIR || '',\n relativeProjectDir: process.env.__NEXT_RELATIVE_PROJECT_DIR || '',\n resolvedPagePath: 'VAR_RESOLVED_PAGE_PATH',\n nextConfigOutput,\n // The lazy require factory ensures that:\n // - In dev: devRequestTimingInternalsEnd is set before userland executes,\n // correctly attributing module load time to application-code rather than\n // framework internals.\n // - In all modes: async modules (route files with top-level await) are\n // handled correctly — require() returns a Promise for such modules, which\n // ensureUserland() awaits before the first request is handled.\n userland: () => require('VAR_USERLAND') as typeof import('VAR_USERLAND'),\n // In Turbopack dev mode, also provide a synchronous per-request getter so\n // server HMR updates are picked up without re-executing the entry chunk.\n // Using require() (synchronous) avoids adding async overhead that would be\n // incorrectly attributed to application-code time in devRequestTiming.\n ...(process.env.TURBOPACK && process.env.__NEXT_DEV_SERVER\n ? {\n getUserland: () =>\n require('VAR_USERLAND') as typeof import('VAR_USERLAND'),\n }\n : {}),\n})\n\n// Pull out the exports that we need to expose from the module. This should\n// be eliminated when we've moved the other routes to the new format. These\n// are used to hook into the route.\nconst { workAsyncStorage, workUnitAsyncStorage, serverHooks } = routeModule\n\nfunction patchFetch() {\n return _patchFetch({\n workAsyncStorage,\n workUnitAsyncStorage,\n })\n}\n\nexport {\n routeModule,\n workAsyncStorage,\n workUnitAsyncStorage,\n serverHooks,\n patchFetch,\n}\n\nexport async function handler(\n req: IncomingMessage,\n res: ServerResponse,\n ctx: {\n waitUntil?: (prom: Promise<void>) => void\n requestMeta?: RequestMeta\n }\n) {\n if (ctx.requestMeta) {\n setRequestMeta(req, ctx.requestMeta)\n }\n if (routeModule.isDev) {\n addRequestMeta(req, 'devRequestTimingInternalsEnd', process.hrtime.bigint())\n }\n let srcPage = 'VAR_DEFINITION_PAGE'\n\n // turbopack doesn't normalize `/index` in the page name\n // so we need to to process dynamic routes properly\n // TODO: fix turbopack providing differing value from webpack\n if (process.env.TURBOPACK) {\n srcPage = srcPage.replace(/\\/index$/, '') || '/'\n } else if (srcPage === '/index') {\n // we always normalize /index specifically\n srcPage = '/'\n }\n const multiZoneDraftMode = process.env\n .__NEXT_MULTI_ZONE_DRAFT_MODE as any as boolean\n\n const prepareResult = await routeModule.prepare(req, res, {\n srcPage,\n multiZoneDraftMode,\n })\n\n if (!prepareResult) {\n res.statusCode = 400\n res.end('Bad Request')\n ctx.waitUntil?.(Promise.resolve())\n return null\n }\n\n const {\n buildId,\n deploymentId,\n params,\n nextConfig,\n parsedUrl,\n isDraftMode,\n prerenderManifest,\n routerServerContext,\n isOnDemandRevalidate,\n revalidateOnlyGenerated,\n resolvedPathname,\n clientReferenceManifest,\n serverActionsManifest,\n } = prepareResult\n\n const normalizedSrcPage = normalizeAppPath(srcPage)\n\n let isIsr = Boolean(\n prerenderManifest.dynamicRoutes[normalizedSrcPage] ||\n prerenderManifest.routes[resolvedPathname]\n )\n\n const render404 = async () => {\n // TODO: should route-module itself handle rendering the 404\n if (routerServerContext?.render404) {\n await routerServerContext.render404(req, res, parsedUrl, false)\n } else {\n res.end('This page could not be found')\n }\n return null\n }\n\n if (isIsr && !isDraftMode) {\n const isPrerendered = Boolean(prerenderManifest.routes[resolvedPathname])\n const prerenderInfo = prerenderManifest.dynamicRoutes[normalizedSrcPage]\n\n if (prerenderInfo) {\n if (prerenderInfo.fallback === false && !isPrerendered) {\n if (nextConfig.adapterPath) {\n return await render404()\n }\n throw new NoFallbackError()\n }\n }\n }\n\n let cacheKey: string | null = null\n\n if (isIsr && !routeModule.isDev && !isDraftMode) {\n cacheKey = resolvedPathname\n // ensure /index and / is normalized to one key\n cacheKey = cacheKey === '/index' ? '/' : cacheKey\n }\n\n const supportsDynamicResponse: boolean =\n // If we're in development, we always support dynamic HTML\n routeModule.isDev === true ||\n // If this is not SSG or does not have static paths, then it supports\n // dynamic HTML.\n !isIsr\n\n // This is a revalidation request if the request is for a static\n // page and it is not being resumed from a postponed render and\n // it is not a dynamic RSC request then it is a revalidation\n // request.\n const isStaticGeneration = isIsr && !supportsDynamicResponse\n\n // Before rendering (which initializes component tree modules), we have to\n // set the reference manifests to our global store so Server Action's\n // encryption util can access to them at the top level of the page module.\n if (serverActionsManifest && clientReferenceManifest) {\n setManifestsSingleton({\n page: srcPage,\n clientReferenceManifest,\n serverActionsManifest,\n })\n }\n\n const method = req.method || 'GET'\n const tracer = getTracer()\n const activeSpan = tracer.getActiveScopeSpan()\n const isWrappedByNextServer = Boolean(\n routerServerContext?.isWrappedByNextServer\n )\n const isMinimalMode = Boolean(getRequestMeta(req, 'minimalMode'))\n\n const incrementalCache =\n getRequestMeta(req, 'incrementalCache') ||\n (await routeModule.getIncrementalCache(\n req,\n nextConfig,\n prerenderManifest,\n isMinimalMode\n ))\n\n incrementalCache?.resetRequestCache()\n ;(globalThis as any).__incrementalCache = incrementalCache\n\n const context: AppRouteRouteHandlerContext = {\n params,\n previewProps: prerenderManifest.preview,\n renderOpts: {\n experimental: {\n authInterrupts: Boolean(nextConfig.experimental.authInterrupts),\n useCacheTimeout: nextConfig.experimental.useCacheTimeout,\n },\n cacheComponents: Boolean(nextConfig.cacheComponents),\n validationLevel: nextConfig.experimental.instantInsights.validationLevel,\n supportsDynamicResponse,\n incrementalCache,\n hmrRefreshHash: getRequestMeta(req, 'hmrRefreshHash'),\n cacheLifeProfiles: nextConfig.cacheLife,\n staticPageGenerationTimeout: nextConfig.staticPageGenerationTimeout,\n waitUntil: ctx.waitUntil,\n onClose: (cb) => {\n res.on('close', cb)\n },\n onAfterTaskError: undefined,\n onInstrumentationRequestError: (\n error,\n _request,\n errorContext,\n silenceLog\n ) =>\n routeModule.onRequestError(\n req,\n error,\n errorContext,\n silenceLog,\n routerServerContext\n ),\n },\n sharedContext: {\n buildId,\n deploymentId,\n },\n }\n const nodeNextReq = new NodeNextRequest(req)\n const nodeNextRes = new NodeNextResponse(res)\n\n const nextReq = NextRequestAdapter.fromNodeNextRequest(\n nodeNextReq,\n signalFromNodeResponse(res)\n )\n\n const responseGenerator: ResponseGenerator = async ({\n previousCacheEntry,\n }) => {\n try {\n if (\n !isMinimalMode &&\n isOnDemandRevalidate &&\n revalidateOnlyGenerated &&\n !previousCacheEntry\n ) {\n res.statusCode = 404\n // on-demand revalidate always sets this header\n res.setHeader('x-nextjs-cache', 'REVALIDATED')\n res.end('This page could not be found')\n return null\n }\n\n const response = await routeModule.handle(nextReq, context)\n\n ;(req as any).fetchMetrics = (context.renderOpts as any).fetchMetrics\n let pendingWaitUntil = context.renderOpts.pendingWaitUntil\n\n // Attempt using provided waitUntil if available\n // if it's not we fallback to sendResponse's handling\n if (pendingWaitUntil) {\n if (ctx.waitUntil) {\n ctx.waitUntil(pendingWaitUntil)\n pendingWaitUntil = undefined\n }\n }\n const cacheTags = context.renderOpts.collectedTags\n\n // If the request is for a static response, we can cache it so long\n // as it's not edge.\n if (isIsr) {\n const blob = await response.blob()\n\n // Copy the headers from the response.\n const headers = toNodeOutgoingHttpHeaders(response.headers)\n\n if (cacheTags) {\n headers[NEXT_CACHE_TAGS_HEADER] = cacheTags\n }\n\n if (!headers['content-type'] && blob.type) {\n headers['content-type'] = blob.type\n }\n\n const revalidate =\n typeof context.renderOpts.collectedRevalidate === 'undefined' ||\n context.renderOpts.collectedRevalidate >= INFINITE_CACHE\n ? false\n : context.renderOpts.collectedRevalidate\n\n const expire =\n typeof context.renderOpts.collectedExpire === 'undefined' ||\n context.renderOpts.collectedExpire >= INFINITE_CACHE\n ? // Fall back to the global `expireTime` config when the\n // route has a numeric `revalidate` but didn't declare an\n // explicit `expire` (e.g. via `cacheLife`). This mirrors the\n // build-time fallback in `build/index.ts` so cache entries\n // and the response Cache-Control header agree on the route's\n // effective expire. Routes that opt out of revalidation\n // (`revalidate: false`) or that are dynamic (`revalidate: 0`)\n // keep `expire: undefined`.\n revalidate !== false && revalidate > 0\n ? nextConfig.expireTime\n : undefined\n : context.renderOpts.collectedExpire\n\n // Create the cache entry for the response.\n const cacheEntry: ResponseCacheEntry = {\n value: {\n kind: CachedRouteKind.APP_ROUTE,\n status: response.status,\n body: Buffer.from(await blob.arrayBuffer()),\n headers,\n },\n cacheControl: { revalidate, expire },\n }\n\n return cacheEntry\n } else {\n // send response without caching if not ISR\n await sendResponse(nodeNextReq, nodeNextRes, response, pendingWaitUntil)\n return null\n }\n } catch (err) {\n // if this is a background revalidate we need to report\n // the request error here as it won't be bubbled\n if (previousCacheEntry?.isStale) {\n const silenceLog = false\n await routeModule.onRequestError(\n req,\n err,\n {\n routerKind: 'App Router',\n routePath: srcPage,\n routeType: 'route',\n revalidateReason: getRevalidateReason({\n isStaticGeneration,\n isOnDemandRevalidate,\n }),\n },\n silenceLog,\n routerServerContext\n )\n }\n throw err\n }\n }\n\n const handleResponse = async (\n currentSpan: Span | undefined,\n parentSpan: Span | undefined\n ) => {\n try {\n const cacheEntry = await routeModule.handleResponse({\n req,\n nextConfig,\n cacheKey,\n routeKind: RouteKind.APP_ROUTE,\n isFallback: false,\n prerenderManifest,\n isRoutePPREnabled: false,\n isOnDemandRevalidate,\n revalidateOnlyGenerated,\n responseGenerator,\n waitUntil: ctx.waitUntil,\n isMinimalMode,\n })\n\n // we don't create a cacheEntry for ISR\n if (!isIsr) {\n return\n }\n\n if (cacheEntry?.value?.kind !== CachedRouteKind.APP_ROUTE) {\n throw new Error(\n `Invariant: app-route received invalid cache entry ${cacheEntry?.value?.kind}`\n )\n }\n\n if (!isMinimalMode) {\n res.setHeader(\n 'x-nextjs-cache',\n isOnDemandRevalidate\n ? 'REVALIDATED'\n : cacheEntry.isMiss\n ? 'MISS'\n : cacheEntry.isStale\n ? 'STALE'\n : 'HIT'\n )\n }\n\n // Draft mode should never be cached\n if (isDraftMode) {\n res.setHeader(\n 'Cache-Control',\n 'private, no-cache, no-store, max-age=0, must-revalidate'\n )\n }\n\n const headers = fromNodeOutgoingHttpHeaders(cacheEntry.value.headers)\n\n if (!(isMinimalMode && isIsr)) {\n headers.delete(NEXT_CACHE_TAGS_HEADER)\n }\n\n // If cache control is already set on the response we don't\n // override it to allow users to customize it via next.config\n if (\n cacheEntry.cacheControl &&\n !res.getHeader('Cache-Control') &&\n !headers.get('Cache-Control')\n ) {\n headers.set(\n 'Cache-Control',\n getCacheControlHeader(cacheEntry.cacheControl)\n )\n }\n\n await sendResponse(\n nodeNextReq,\n nodeNextRes,\n // @ts-expect-error - Argument of type 'Buffer<ArrayBufferLike>' is not assignable to parameter of type 'BodyInit | null | undefined'.\n new Response(cacheEntry.value.body, {\n headers,\n status: cacheEntry.value.status || 200,\n })\n )\n return\n } catch (err) {\n if (!(err instanceof NoFallbackError)) {\n const silenceLog = false\n await routeModule.onRequestError(\n req,\n err,\n {\n routerKind: 'App Router',\n routePath: normalizedSrcPage,\n routeType: 'route',\n revalidateReason: getRevalidateReason({\n isStaticGeneration,\n isOnDemandRevalidate,\n }),\n },\n silenceLog,\n routerServerContext\n )\n }\n\n // rethrow so that we can handle serving error page\n\n // If this is during static generation, throw the error again.\n if (isIsr) throw err\n\n // Otherwise, send a 500 response.\n await sendResponse(\n nodeNextReq,\n nodeNextRes,\n new Response(null, { status: 500 })\n )\n return\n } finally {\n ;(() => {\n if (!currentSpan) {\n return\n }\n\n let statusCode = res.statusCode\n\n currentSpan.setAttributes({\n 'http.status_code': statusCode,\n 'next.rsc': false,\n })\n\n if (statusCode && statusCode >= 500) {\n // For 5xx status codes: SHOULD be set to 'Error' span status.\n // x-ref: https://opentelemetry.io/docs/specs/semconv/http/http-spans/#status\n currentSpan.setStatus({\n code: SpanStatusCode.ERROR,\n })\n // For span status 'Error', SHOULD set 'error.type' attribute.\n currentSpan.setAttribute('error.type', statusCode.toString())\n }\n\n const rootSpanAttributes = tracer.getRootSpanAttributes()\n // We were unable to get attributes, probably OTEL is not enabled\n if (!rootSpanAttributes) {\n return\n }\n\n if (\n rootSpanAttributes.get('next.span_type') !==\n BaseServerSpan.handleRequest\n ) {\n console.warn(\n `Unexpected root span type '${rootSpanAttributes.get(\n 'next.span_type'\n )}'. Please report this Next.js issue https://github.com/vercel/next.js`\n )\n return\n }\n\n const route = rootSpanAttributes.get('next.route') || normalizedSrcPage\n const name = `${method} ${route}`\n\n currentSpan.setAttributes({\n 'next.route': route,\n 'http.route': route,\n 'next.span_name': name,\n })\n currentSpan.updateName(name)\n\n // Propagate http.route to the parent span if one exists (e.g.\n // a platform-created HTTP span in adapter deployments).\n if (parentSpan && parentSpan !== currentSpan) {\n parentSpan.setAttribute('http.route', route)\n parentSpan.updateName(name)\n }\n })()\n }\n }\n\n // TODO: activeSpan code path is for when wrapped by\n // next-server can be removed when this is no longer used\n if (isWrappedByNextServer && activeSpan) {\n await handleResponse(activeSpan, undefined)\n } else {\n let parentSpan = tracer.getActiveScopeSpan()\n await tracer.withPropagatedContext(\n req.headers,\n () =>\n tracer.trace(\n BaseServerSpan.handleRequest,\n {\n spanName: `${method} ${srcPage}`,\n kind: SpanKind.SERVER,\n attributes: {\n 'http.method': method,\n 'http.target': req.url,\n },\n },\n (span) => handleResponse(span, parentSpan)\n ),\n undefined,\n !isWrappedByNextServer\n )\n }\n}\n"],"names":["ok","id","result","json","jsonrpc","err","code","message","error","MAX_ENTRY_IDS","DEMO_TOOLS","Set","allowedInDemo","name","args","has","restore","visibleTools","TOOLS","filter","t","MEMORY_SOURCES","withGap","block","description","inputSchema","type","properties","required","limit","taskId","since","query","path","priority","enum","content","status","manualTests","agent","epic","title","context","decision","rationale","alternatives","items","option","reason","consequences","currentState","justCompleted","workingOn","upNext","issues","oneOf","issue","severity","decisions","techDebt","handoff","summary","body","source","apply","ids","templateId","paths","edits","old_string","new_string","plan","kind","newEpic","parent","horizons","key","epics","tasks","size","dependsOn","due","questions","minItems","maxItems","question","header","multiSelect","options","label","oldPath","newPath","keywords","order","PLANNING_PREAMBLE","taskInfoMap","root","Object","fromEntries","map","roadmapHint","linked","i","includes","drift","hits","d","suggestedStatus","length","join","handleTool","s","b","board","lines","docs","total","memory","exists","todo","review","blocked","done","active","push","forEach","Number","String","sessions","Date","parse","isNaN","x","end","slice","actor","start","headline","lastStatus","docPath","related","sections","section","files","entries","f","results","r","file","totalHits","h","line","text","cols","col","toUpperCase","task","raw","report","trim","previousStatus","tests","epicId","Error","runEnd","ep","statuses","find","n","nudge","waiting","w","needsHuman","changes","outcome","at","note","adrNumber","running","excludeSessionId","vid","versions","v","excerpt","catch","restoredFrom","newId","entry","entryId","dir","found","written","onlyInVibedoc","pad","padEnd","rows","create","c","update","u","candidate","unchanged","e","counts","count","changed","Math","floor","undefined","Array","isArray","missing","graph","Promise","all","blocks","links","updatedAt","template","defaultPath","errors","roadmap","taskIds","qs","q","opts","o","j","JSON","stringify","totalFiles","today","progress","icon","paused","planned","atRisk","fmt","orphans","some","item","patch","withProjectStatuses","custom","category","POST","req","method","params","protocolVersion","capabilities","tools","serverInfo","version","nextUrl","searchParams","get","arguments","headers","msg","isError","GET","AppRouteRouteModule","RouteKind","patchFetch","_patchFetch","addRequestMeta","getRequestMeta","setRequestMeta","getTracer","SpanKind","SpanStatusCode","setManifestsSingleton","normalizeAppPath","NodeNextRequest","NodeNextResponse","NextRequestAdapter","signalFromNodeResponse","BaseServerSpan","getRevalidateReason","sendResponse","fromNodeOutgoingHttpHeaders","toNodeOutgoingHttpHeaders","getCacheControlHeader","INFINITE_CACHE","NEXT_CACHE_TAGS_HEADER","NoFallbackError","CachedRouteKind","routeModule","definition","APP_ROUTE","page","pathname","filename","bundlePath","distDir","process","env","__NEXT_RELATIVE_DIST_DIR","relativeProjectDir","__NEXT_RELATIVE_PROJECT_DIR","resolvedPagePath","nextConfigOutput","userland","require","TURBOPACK","__NEXT_DEV_SERVER","getUserland","workAsyncStorage","workUnitAsyncStorage","serverHooks","handler","res","ctx","requestMeta","isDev","hrtime","bigint","srcPage","replace","multiZoneDraftMode","__NEXT_MULTI_ZONE_DRAFT_MODE","prepareResult","prepare","statusCode","waitUntil","resolve","buildId","deploymentId","nextConfig","parsedUrl","isDraftMode","prerenderManifest","routerServerContext","isOnDemandRevalidate","revalidateOnlyGenerated","resolvedPathname","clientReferenceManifest","serverActionsManifest","normalizedSrcPage","isIsr","Boolean","dynamicRoutes","routes","render404","isPrerendered","prerenderInfo","fallback","adapterPath","cacheKey","supportsDynamicResponse","isStaticGeneration","tracer","activeSpan","getActiveScopeSpan","isWrappedByNextServer","isMinimalMode","incrementalCache","getIncrementalCache","resetRequestCache","globalThis","__incrementalCache","previewProps","preview","renderOpts","experimental","authInterrupts","useCacheTimeout","cacheComponents","validationLevel","instantInsights","hmrRefreshHash","cacheLifeProfiles","cacheLife","staticPageGenerationTimeout","onClose","cb","on","onAfterTaskError","onInstrumentationRequestError","_request","errorContext","silenceLog","onRequestError","sharedContext","nodeNextReq","nodeNextRes","nextReq","fromNodeNextRequest","responseGenerator","previousCacheEntry","setHeader","response","handle","fetchMetrics","pendingWaitUntil","cacheTags","collectedTags","blob","revalidate","collectedRevalidate","expire","collectedExpire","expireTime","cacheEntry","value","Buffer","from","arrayBuffer","cacheControl","isStale","routerKind","routePath","routeType","revalidateReason","handleResponse","currentSpan","parentSpan","routeKind","isFallback","isRoutePPREnabled","isMiss","delete","getHeader","set","Response","setAttributes","setStatus","ERROR","setAttribute","toString","rootSpanAttributes","getRootSpanAttributes","handleRequest","console","warn","route","updateName","withPropagatedContext","trace","spanName","SERVER","attributes","url","span"],"mappings":"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","ignoreList":[1]}