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
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../node_modules/.pnpm/glob%4013.0.6/node_modules/glob/dist/esm/index.min.js","../../../src/lib/diff.ts","../../../src/lib/doc-priority.ts","../../../src/lib/owner.ts","../../../src/lib/sessions.ts","../../../src/lib/auto-dates.ts","../../../src/lib/statuses.ts","../../../src/lib/review.ts","../../../src/lib/manual-tests.ts","../../../src/lib/work-queue.ts","../../../src/lib/roadmap-import.ts","../../../src/lib/plan.ts","../../../src/lib/roadmap-health.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/client/components/hooks-server-context.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/client/components/static-generation-bailout.ts","../../../node_modules/.pnpm/next%4016.3.6_%40babel%2Bcore%407.29.7_%40types%2Bnode%4022.20.4_react-dom%4019.3.0_react%4019.3.0__react%4019.3.0/node_modules/next/src/shared/lib/invariant-error.ts","../../../node_modules/.pnpm/next%4016.3.6_%40babel%2Bcore%407.29.7_%40types%2Bnode%4022.20.4_react-dom%4019.3.0_react%4019.3.0__react%4019.3.0/node_modules/next/src/shared/lib/promise-with-resolvers.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/server/app-render/staged-rendering.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/server/after/after.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/server/after/index.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/server/dynamic-rendering-utils.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/lib/framework/boundary-constants.tsx","../../../node_modules/.pnpm/next%4016.3.6_%40babel%2Bcore%407.29.7_%40types%2Bnode%4022.20.4_react-dom%4019.3.0_react%4019.3.0__react%4019.3.0/node_modules/next/src/lib/scheduler.ts","../../../node_modules/.pnpm/next%4016.3.6_%40babel%2Bcore%407.29.7_%40types%2Bnode%4022.20.4_react-dom%4019.3.0_react%4019.3.0__react%4019.3.0/node_modules/next/src/shared/lib/lazy-dynamic/bailout-to-csr.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/server/app-render/blocking-route-messages.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/server/app-render/instant-validation/boundary-constants.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/server/app-render/instant-validation/boundary-tracking.tsx","../../../node_modules/.pnpm/next%4016.3.6_%40babel%2Bcore%407.29.7_%40types%2Bnode%4022.20.4_react-dom%4019.3.0_react%4019.3.0__react%4019.3.0/node_modules/next/src/shared/lib/instant-messages.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/server/app-render/dynamic-rendering.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/server/request/utils.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/server/request/connection.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/server.js","../../../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/server/web/spec-extension/cookies.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/server/web/spec-extension/request.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/server/web/spec-extension/adapters/reflect.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/server/web/spec-extension/response.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/server/web/spec-extension/image-response.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/dist/compiled/ua-parser-js/ua-parser.js","../../../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/server/web/spec-extension/user-agent.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/server/web/spec-extension/url-pattern.ts","../../../node_modules/.pnpm/next%4016.3.6_%40babel%2Bcore%407.29.7_%40types%2Bnode%4022.20.4_react-dom%4019.3.0_react%4019.3.0__react%4019.3.0/node_modules/next/src/shared/lib/i18n/detect-domain-locale.ts","../../../node_modules/.pnpm/next%4016.3.6_%40babel%2Bcore%407.29.7_%40types%2Bnode%4022.20.4_react-dom%4019.3.0_react%4019.3.0__react%4019.3.0/node_modules/next/src/shared/lib/router/utils/remove-trailing-slash.ts","../../../node_modules/.pnpm/next%4016.3.6_%40babel%2Bcore%407.29.7_%40types%2Bnode%4022.20.4_react-dom%4019.3.0_react%4019.3.0__react%4019.3.0/node_modules/next/src/shared/lib/router/utils/parse-path.ts","../../../node_modules/.pnpm/next%4016.3.6_%40babel%2Bcore%407.29.7_%40types%2Bnode%4022.20.4_react-dom%4019.3.0_react%4019.3.0__react%4019.3.0/node_modules/next/src/shared/lib/router/utils/add-path-prefix.ts","../../../node_modules/.pnpm/next%4016.3.6_%40babel%2Bcore%407.29.7_%40types%2Bnode%4022.20.4_react-dom%4019.3.0_react%4019.3.0__react%4019.3.0/node_modules/next/src/shared/lib/router/utils/add-path-suffix.ts","../../../node_modules/.pnpm/next%4016.3.6_%40babel%2Bcore%407.29.7_%40types%2Bnode%4022.20.4_react-dom%4019.3.0_react%4019.3.0__react%4019.3.0/node_modules/next/src/shared/lib/router/utils/path-has-prefix.ts","../../../node_modules/.pnpm/next%4016.3.6_%40babel%2Bcore%407.29.7_%40types%2Bnode%4022.20.4_react-dom%4019.3.0_react%4019.3.0__react%4019.3.0/node_modules/next/src/shared/lib/router/utils/add-locale.ts","../../../node_modules/.pnpm/next%4016.3.6_%40babel%2Bcore%407.29.7_%40types%2Bnode%4022.20.4_react-dom%4019.3.0_react%4019.3.0__react%4019.3.0/node_modules/next/src/shared/lib/router/utils/format-next-pathname-info.ts","../../../node_modules/.pnpm/next%4016.3.6_%40babel%2Bcore%407.29.7_%40types%2Bnode%4022.20.4_react-dom%4019.3.0_react%4019.3.0__react%4019.3.0/node_modules/next/src/shared/lib/get-hostname.ts","../../../node_modules/.pnpm/next%4016.3.6_%40babel%2Bcore%407.29.7_%40types%2Bnode%4022.20.4_react-dom%4019.3.0_react%4019.3.0__react%4019.3.0/node_modules/next/src/shared/lib/i18n/normalize-locale-path.ts","../../../node_modules/.pnpm/next%4016.3.6_%40babel%2Bcore%407.29.7_%40types%2Bnode%4022.20.4_react-dom%4019.3.0_react%4019.3.0__react%4019.3.0/node_modules/next/src/shared/lib/router/utils/remove-path-prefix.ts","../../../node_modules/.pnpm/next%4016.3.6_%40babel%2Bcore%407.29.7_%40types%2Bnode%4022.20.4_react-dom%4019.3.0_react%4019.3.0__react%4019.3.0/node_modules/next/src/shared/lib/router/utils/get-next-pathname-info.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/server/web/next-url.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/lib/constants.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/server/web/utils.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/server/web/error.ts","../../../src/lib/core.ts","../../../src/lib/entries-export.ts","../../../src/lib/claude-memory.ts","../../../src/lib/demo.ts","../../../src/lib/entries.ts","../../../src/lib/episodes.ts","../../../src/lib/memory-graph.ts","../../../src/lib/doc-links.ts","../../../src/lib/memory-health.ts","../../../src/lib/memory-sections.ts","../../../src/lib/recall.ts"],"sourcesContent":["var Gt=(n,t,e)=>{let s=n instanceof RegExp?ce(n,e):n,i=t instanceof RegExp?ce(t,e):t,r=s!==null&&i!=null&&ss(s,i,e);return r&&{start:r[0],end:r[1],pre:e.slice(0,r[0]),body:e.slice(r[0]+s.length,r[1]),post:e.slice(r[1]+i.length)}},ce=(n,t)=>{let e=t.match(n);return e?e[0]:null},ss=(n,t,e)=>{let s,i,r,o,h,a=e.indexOf(n),l=e.indexOf(t,a+1),u=a;if(a>=0&&l>0){if(n===t)return[a,l];for(s=[],r=e.length;u>=0&&!h;){if(u===a)s.push(u),a=e.indexOf(n,u+1);else if(s.length===1){let c=s.pop();c!==void 0&&(h=[c,l])}else i=s.pop(),i!==void 0&&i<r&&(r=i,o=l),l=e.indexOf(t,u+1);u=a<l&&a>=0?a:l}s.length&&o!==void 0&&(h=[r,o])}return h};var fe=\"\\0SLASH\"+Math.random()+\"\\0\",ue=\"\\0OPEN\"+Math.random()+\"\\0\",qt=\"\\0CLOSE\"+Math.random()+\"\\0\",de=\"\\0COMMA\"+Math.random()+\"\\0\",pe=\"\\0PERIOD\"+Math.random()+\"\\0\",is=new RegExp(fe,\"g\"),rs=new RegExp(ue,\"g\"),ns=new RegExp(qt,\"g\"),os=new RegExp(de,\"g\"),hs=new RegExp(pe,\"g\"),as=/\\\\\\\\/g,ls=/\\\\{/g,cs=/\\\\}/g,fs=/\\\\,/g,us=/\\\\./g,ds=1e5;function Ht(n){return isNaN(n)?n.charCodeAt(0):parseInt(n,10)}function ps(n){return n.replace(as,fe).replace(ls,ue).replace(cs,qt).replace(fs,de).replace(us,pe)}function ms(n){return n.replace(is,\"\\\\\").replace(rs,\"{\").replace(ns,\"}\").replace(os,\",\").replace(hs,\".\")}function me(n){if(!n)return[\"\"];let t=[],e=Gt(\"{\",\"}\",n);if(!e)return n.split(\",\");let{pre:s,body:i,post:r}=e,o=s.split(\",\");o[o.length-1]+=\"{\"+i+\"}\";let h=me(r);return r.length&&(o[o.length-1]+=h.shift(),o.push.apply(o,h)),t.push.apply(t,o),t}function ge(n,t={}){if(!n)return[];let{max:e=ds}=t;return n.slice(0,2)===\"{}\"&&(n=\"\\\\{\\\\}\"+n.slice(2)),ht(ps(n),e,!0).map(ms)}function gs(n){return\"{\"+n+\"}\"}function ws(n){return/^-?0\\d/.test(n)}function ys(n,t){return n<=t}function bs(n,t){return n>=t}function ht(n,t,e){let s=[],i=Gt(\"{\",\"}\",n);if(!i)return[n];let r=i.pre,o=i.post.length?ht(i.post,t,!1):[\"\"];if(/\\$$/.test(i.pre))for(let h=0;h<o.length&&h<t;h++){let a=r+\"{\"+i.body+\"}\"+o[h];s.push(a)}else{let h=/^-?\\d+\\.\\.-?\\d+(?:\\.\\.-?\\d+)?$/.test(i.body),a=/^[a-zA-Z]\\.\\.[a-zA-Z](?:\\.\\.-?\\d+)?$/.test(i.body),l=h||a,u=i.body.indexOf(\",\")>=0;if(!l&&!u)return i.post.match(/,(?!,).*\\}/)?(n=i.pre+\"{\"+i.body+qt+i.post,ht(n,t,!0)):[n];let c;if(l)c=i.body.split(/\\.\\./);else if(c=me(i.body),c.length===1&&c[0]!==void 0&&(c=ht(c[0],t,!1).map(gs),c.length===1))return o.map(f=>i.pre+c[0]+f);let d;if(l&&c[0]!==void 0&&c[1]!==void 0){let f=Ht(c[0]),m=Ht(c[1]),p=Math.max(c[0].length,c[1].length),w=c.length===3&&c[2]!==void 0?Math.abs(Ht(c[2])):1,g=ys;m<f&&(w*=-1,g=bs);let E=c.some(ws);d=[];for(let y=f;g(y,m);y+=w){let b;if(a)b=String.fromCharCode(y),b===\"\\\\\"&&(b=\"\");else if(b=String(y),E){let z=p-b.length;if(z>0){let $=new Array(z+1).join(\"0\");y<0?b=\"-\"+$+b.slice(1):b=$+b}}d.push(b)}}else{d=[];for(let f=0;f<c.length;f++)d.push.apply(d,ht(c[f],t,!1))}for(let f=0;f<d.length;f++)for(let m=0;m<o.length&&s.length<t;m++){let p=r+d[f]+o[m];(!e||l||p)&&s.push(p)}}return s}var at=n=>{if(typeof n!=\"string\")throw new TypeError(\"invalid pattern\");if(n.length>65536)throw new TypeError(\"pattern is too long\")};var Ss={\"[:alnum:]\":[\"\\\\p{L}\\\\p{Nl}\\\\p{Nd}\",!0],\"[:alpha:]\":[\"\\\\p{L}\\\\p{Nl}\",!0],\"[:ascii:]\":[\"\\\\x00-\\\\x7f\",!1],\"[:blank:]\":[\"\\\\p{Zs}\\\\t\",!0],\"[:cntrl:]\":[\"\\\\p{Cc}\",!0],\"[:digit:]\":[\"\\\\p{Nd}\",!0],\"[:graph:]\":[\"\\\\p{Z}\\\\p{C}\",!0,!0],\"[:lower:]\":[\"\\\\p{Ll}\",!0],\"[:print:]\":[\"\\\\p{C}\",!0],\"[:punct:]\":[\"\\\\p{P}\",!0],\"[:space:]\":[\"\\\\p{Z}\\\\t\\\\r\\\\n\\\\v\\\\f\",!0],\"[:upper:]\":[\"\\\\p{Lu}\",!0],\"[:word:]\":[\"\\\\p{L}\\\\p{Nl}\\\\p{Nd}\\\\p{Pc}\",!0],\"[:xdigit:]\":[\"A-Fa-f0-9\",!1]},lt=n=>n.replace(/[[\\]\\\\-]/g,\"\\\\$&\"),Es=n=>n.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g,\"\\\\$&\"),we=n=>n.join(\"\"),ye=(n,t)=>{let e=t;if(n.charAt(e)!==\"[\")throw new Error(\"not in a brace expression\");let s=[],i=[],r=e+1,o=!1,h=!1,a=!1,l=!1,u=e,c=\"\";t:for(;r<n.length;){let p=n.charAt(r);if((p===\"!\"||p===\"^\")&&r===e+1){l=!0,r++;continue}if(p===\"]\"&&o&&!a){u=r+1;break}if(o=!0,p===\"\\\\\"&&!a){a=!0,r++;continue}if(p===\"[\"&&!a){for(let[w,[g,S,E]]of Object.entries(Ss))if(n.startsWith(w,r)){if(c)return[\"$.\",!1,n.length-e,!0];r+=w.length,E?i.push(g):s.push(g),h=h||S;continue t}}if(a=!1,c){p>c?s.push(lt(c)+\"-\"+lt(p)):p===c&&s.push(lt(p)),c=\"\",r++;continue}if(n.startsWith(\"-]\",r+1)){s.push(lt(p+\"-\")),r+=2;continue}if(n.startsWith(\"-\",r+1)){c=p,r+=2;continue}s.push(lt(p)),r++}if(u<r)return[\"\",!1,0,!1];if(!s.length&&!i.length)return[\"$.\",!1,n.length-e,!0];if(i.length===0&&s.length===1&&/^\\\\?.$/.test(s[0])&&!l){let p=s[0].length===2?s[0].slice(-1):s[0];return[Es(p),!1,u-e,!1]}let d=\"[\"+(l?\"^\":\"\")+we(s)+\"]\",f=\"[\"+(l?\"\":\"^\")+we(i)+\"]\";return[s.length&&i.length?\"(\"+d+\"|\"+f+\")\":s.length?d:f,h,u-e,!0]};var W=(n,{windowsPathsNoEscape:t=!1,magicalBraces:e=!0}={})=>e?t?n.replace(/\\[([^\\/\\\\])\\]/g,\"$1\"):n.replace(/((?!\\\\).|^)\\[([^\\/\\\\])\\]/g,\"$1$2\").replace(/\\\\([^\\/])/g,\"$1\"):t?n.replace(/\\[([^\\/\\\\{}])\\]/g,\"$1\"):n.replace(/((?!\\\\).|^)\\[([^\\/\\\\{}])\\]/g,\"$1$2\").replace(/\\\\([^\\/{}])/g,\"$1\");var xs=new Set([\"!\",\"?\",\"+\",\"*\",\"@\"]),be=n=>xs.has(n),vs=\"(?!(?:^|/)\\\\.\\\\.?(?:$|/))\",Ct=\"(?!\\\\.)\",Cs=new Set([\"[\",\".\"]),Ts=new Set([\"..\",\".\"]),As=new Set(\"().*{}+?[]^$\\\\!\"),ks=n=>n.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g,\"\\\\$&\"),Kt=\"[^/]\",Se=Kt+\"*?\",Ee=Kt+\"+?\",Q=class n{type;#t;#s;#n=!1;#r=[];#o;#S;#w;#c=!1;#h;#u;#f=!1;constructor(t,e,s={}){this.type=t,t&&(this.#s=!0),this.#o=e,this.#t=this.#o?this.#o.#t:this,this.#h=this.#t===this?s:this.#t.#h,this.#w=this.#t===this?[]:this.#t.#w,t===\"!\"&&!this.#t.#c&&this.#w.push(this),this.#S=this.#o?this.#o.#r.length:0}get hasMagic(){if(this.#s!==void 0)return this.#s;for(let t of this.#r)if(typeof t!=\"string\"&&(t.type||t.hasMagic))return this.#s=!0;return this.#s}toString(){return this.#u!==void 0?this.#u:this.type?this.#u=this.type+\"(\"+this.#r.map(t=>String(t)).join(\"|\")+\")\":this.#u=this.#r.map(t=>String(t)).join(\"\")}#a(){if(this!==this.#t)throw new Error(\"should only call on root\");if(this.#c)return this;this.toString(),this.#c=!0;let t;for(;t=this.#w.pop();){if(t.type!==\"!\")continue;let e=t,s=e.#o;for(;s;){for(let i=e.#S+1;!s.type&&i<s.#r.length;i++)for(let r of t.#r){if(typeof r==\"string\")throw new Error(\"string part in extglob AST??\");r.copyIn(s.#r[i])}e=s,s=e.#o}}return this}push(...t){for(let e of t)if(e!==\"\"){if(typeof e!=\"string\"&&!(e instanceof n&&e.#o===this))throw new Error(\"invalid part: \"+e);this.#r.push(e)}}toJSON(){let t=this.type===null?this.#r.slice().map(e=>typeof e==\"string\"?e:e.toJSON()):[this.type,...this.#r.map(e=>e.toJSON())];return this.isStart()&&!this.type&&t.unshift([]),this.isEnd()&&(this===this.#t||this.#t.#c&&this.#o?.type===\"!\")&&t.push({}),t}isStart(){if(this.#t===this)return!0;if(!this.#o?.isStart())return!1;if(this.#S===0)return!0;let t=this.#o;for(let e=0;e<this.#S;e++){let s=t.#r[e];if(!(s instanceof n&&s.type===\"!\"))return!1}return!0}isEnd(){if(this.#t===this||this.#o?.type===\"!\")return!0;if(!this.#o?.isEnd())return!1;if(!this.type)return this.#o?.isEnd();let t=this.#o?this.#o.#r.length:0;return this.#S===t-1}copyIn(t){typeof t==\"string\"?this.push(t):this.push(t.clone(this))}clone(t){let e=new n(this.type,t);for(let s of this.#r)e.copyIn(s);return e}static#i(t,e,s,i){let r=!1,o=!1,h=-1,a=!1;if(e.type===null){let f=s,m=\"\";for(;f<t.length;){let p=t.charAt(f++);if(r||p===\"\\\\\"){r=!r,m+=p;continue}if(o){f===h+1?(p===\"^\"||p===\"!\")&&(a=!0):p===\"]\"&&!(f===h+2&&a)&&(o=!1),m+=p;continue}else if(p===\"[\"){o=!0,h=f,a=!1,m+=p;continue}if(!i.noext&&be(p)&&t.charAt(f)===\"(\"){e.push(m),m=\"\";let w=new n(p,e);f=n.#i(t,w,f,i),e.push(w);continue}m+=p}return e.push(m),f}let l=s+1,u=new n(null,e),c=[],d=\"\";for(;l<t.length;){let f=t.charAt(l++);if(r||f===\"\\\\\"){r=!r,d+=f;continue}if(o){l===h+1?(f===\"^\"||f===\"!\")&&(a=!0):f===\"]\"&&!(l===h+2&&a)&&(o=!1),d+=f;continue}else if(f===\"[\"){o=!0,h=l,a=!1,d+=f;continue}if(be(f)&&t.charAt(l)===\"(\"){u.push(d),d=\"\";let m=new n(f,u);u.push(m),l=n.#i(t,m,l,i);continue}if(f===\"|\"){u.push(d),d=\"\",c.push(u),u=new n(null,e);continue}if(f===\")\")return d===\"\"&&e.#r.length===0&&(e.#f=!0),u.push(d),d=\"\",e.push(...c,u),l;d+=f}return e.type=null,e.#s=void 0,e.#r=[t.substring(s-1)],l}static fromGlob(t,e={}){let s=new n(null,void 0,e);return n.#i(t,s,0,e),s}toMMPattern(){if(this!==this.#t)return this.#t.toMMPattern();let t=this.toString(),[e,s,i,r]=this.toRegExpSource();if(!(i||this.#s||this.#h.nocase&&!this.#h.nocaseMagicOnly&&t.toUpperCase()!==t.toLowerCase()))return s;let h=(this.#h.nocase?\"i\":\"\")+(r?\"u\":\"\");return Object.assign(new RegExp(`^${e}$`,h),{_src:e,_glob:t})}get options(){return this.#h}toRegExpSource(t){let e=t??!!this.#h.dot;if(this.#t===this&&this.#a(),!this.type){let a=this.isStart()&&this.isEnd()&&!this.#r.some(f=>typeof f!=\"string\"),l=this.#r.map(f=>{let[m,p,w,g]=typeof f==\"string\"?n.#E(f,this.#s,a):f.toRegExpSource(t);return this.#s=this.#s||w,this.#n=this.#n||g,m}).join(\"\"),u=\"\";if(this.isStart()&&typeof this.#r[0]==\"string\"&&!(this.#r.length===1&&Ts.has(this.#r[0]))){let m=Cs,p=e&&m.has(l.charAt(0))||l.startsWith(\"\\\\.\")&&m.has(l.charAt(2))||l.startsWith(\"\\\\.\\\\.\")&&m.has(l.charAt(4)),w=!e&&!t&&m.has(l.charAt(0));u=p?vs:w?Ct:\"\"}let c=\"\";return this.isEnd()&&this.#t.#c&&this.#o?.type===\"!\"&&(c=\"(?:$|\\\\/)\"),[u+l+c,W(l),this.#s=!!this.#s,this.#n]}let s=this.type===\"*\"||this.type===\"+\",i=this.type===\"!\"?\"(?:(?!(?:\":\"(?:\",r=this.#d(e);if(this.isStart()&&this.isEnd()&&!r&&this.type!==\"!\"){let a=this.toString();return this.#r=[a],this.type=null,this.#s=void 0,[a,W(this.toString()),!1,!1]}let o=!s||t||e||!Ct?\"\":this.#d(!0);o===r&&(o=\"\"),o&&(r=`(?:${r})(?:${o})*?`);let h=\"\";if(this.type===\"!\"&&this.#f)h=(this.isStart()&&!e?Ct:\"\")+Ee;else{let a=this.type===\"!\"?\"))\"+(this.isStart()&&!e&&!t?Ct:\"\")+Se+\")\":this.type===\"@\"?\")\":this.type===\"?\"?\")?\":this.type===\"+\"&&o?\")\":this.type===\"*\"&&o?\")?\":`)${this.type}`;h=i+r+a}return[h,W(r),this.#s=!!this.#s,this.#n]}#d(t){return this.#r.map(e=>{if(typeof e==\"string\")throw new Error(\"string type in extglob ast??\");let[s,i,r,o]=e.toRegExpSource(t);return this.#n=this.#n||o,s}).filter(e=>!(this.isStart()&&this.isEnd())||!!e).join(\"|\")}static#E(t,e,s=!1){let i=!1,r=\"\",o=!1,h=!1;for(let a=0;a<t.length;a++){let l=t.charAt(a);if(i){i=!1,r+=(As.has(l)?\"\\\\\":\"\")+l;continue}if(l===\"*\"){if(h)continue;h=!0,r+=s&&/^[*]+$/.test(t)?Ee:Se,e=!0;continue}else h=!1;if(l===\"\\\\\"){a===t.length-1?r+=\"\\\\\\\\\":i=!0;continue}if(l===\"[\"){let[u,c,d,f]=ye(t,a);if(d){r+=u,o=o||c,a+=d-1,e=e||f;continue}}if(l===\"?\"){r+=Kt,e=!0;continue}r+=ks(l)}return[r,W(t),!!e,o]}};var tt=(n,{windowsPathsNoEscape:t=!1,magicalBraces:e=!1}={})=>e?t?n.replace(/[?*()[\\]{}]/g,\"[$&]\"):n.replace(/[?*()[\\]\\\\{}]/g,\"\\\\$&\"):t?n.replace(/[?*()[\\]]/g,\"[$&]\"):n.replace(/[?*()[\\]\\\\]/g,\"\\\\$&\");var O=(n,t,e={})=>(at(t),!e.nocomment&&t.charAt(0)===\"#\"?!1:new D(t,e).match(n)),Rs=/^\\*+([^+@!?\\*\\[\\(]*)$/,Os=n=>t=>!t.startsWith(\".\")&&t.endsWith(n),Fs=n=>t=>t.endsWith(n),Ds=n=>(n=n.toLowerCase(),t=>!t.startsWith(\".\")&&t.toLowerCase().endsWith(n)),Ms=n=>(n=n.toLowerCase(),t=>t.toLowerCase().endsWith(n)),Ns=/^\\*+\\.\\*+$/,_s=n=>!n.startsWith(\".\")&&n.includes(\".\"),Ls=n=>n!==\".\"&&n!==\"..\"&&n.includes(\".\"),Ws=/^\\.\\*+$/,Ps=n=>n!==\".\"&&n!==\"..\"&&n.startsWith(\".\"),js=/^\\*+$/,Is=n=>n.length!==0&&!n.startsWith(\".\"),zs=n=>n.length!==0&&n!==\".\"&&n!==\"..\",Bs=/^\\?+([^+@!?\\*\\[\\(]*)?$/,Us=([n,t=\"\"])=>{let e=Ce([n]);return t?(t=t.toLowerCase(),s=>e(s)&&s.toLowerCase().endsWith(t)):e},$s=([n,t=\"\"])=>{let e=Te([n]);return t?(t=t.toLowerCase(),s=>e(s)&&s.toLowerCase().endsWith(t)):e},Gs=([n,t=\"\"])=>{let e=Te([n]);return t?s=>e(s)&&s.endsWith(t):e},Hs=([n,t=\"\"])=>{let e=Ce([n]);return t?s=>e(s)&&s.endsWith(t):e},Ce=([n])=>{let t=n.length;return e=>e.length===t&&!e.startsWith(\".\")},Te=([n])=>{let t=n.length;return e=>e.length===t&&e!==\".\"&&e!==\"..\"},Ae=typeof process==\"object\"&&process?typeof process.env==\"object\"&&process.env&&process.env.__MINIMATCH_TESTING_PLATFORM__||process.platform:\"posix\",xe={win32:{sep:\"\\\\\"},posix:{sep:\"/\"}},qs=Ae===\"win32\"?xe.win32.sep:xe.posix.sep;O.sep=qs;var A=Symbol(\"globstar **\");O.GLOBSTAR=A;var Ks=\"[^/]\",Vs=Ks+\"*?\",Ys=\"(?:(?!(?:\\\\/|^)(?:\\\\.{1,2})($|\\\\/)).)*?\",Xs=\"(?:(?!(?:\\\\/|^)\\\\.).)*?\",Js=(n,t={})=>e=>O(e,n,t);O.filter=Js;var N=(n,t={})=>Object.assign({},n,t),Zs=n=>{if(!n||typeof n!=\"object\"||!Object.keys(n).length)return O;let t=O;return Object.assign((s,i,r={})=>t(s,i,N(n,r)),{Minimatch:class extends t.Minimatch{constructor(i,r={}){super(i,N(n,r))}static defaults(i){return t.defaults(N(n,i)).Minimatch}},AST:class extends t.AST{constructor(i,r,o={}){super(i,r,N(n,o))}static fromGlob(i,r={}){return t.AST.fromGlob(i,N(n,r))}},unescape:(s,i={})=>t.unescape(s,N(n,i)),escape:(s,i={})=>t.escape(s,N(n,i)),filter:(s,i={})=>t.filter(s,N(n,i)),defaults:s=>t.defaults(N(n,s)),makeRe:(s,i={})=>t.makeRe(s,N(n,i)),braceExpand:(s,i={})=>t.braceExpand(s,N(n,i)),match:(s,i,r={})=>t.match(s,i,N(n,r)),sep:t.sep,GLOBSTAR:A})};O.defaults=Zs;var ke=(n,t={})=>(at(n),t.nobrace||!/\\{(?:(?!\\{).)*\\}/.test(n)?[n]:ge(n,{max:t.braceExpandMax}));O.braceExpand=ke;var Qs=(n,t={})=>new D(n,t).makeRe();O.makeRe=Qs;var ti=(n,t,e={})=>{let s=new D(t,e);return n=n.filter(i=>s.match(i)),s.options.nonull&&!n.length&&n.push(t),n};O.match=ti;var ve=/[?*]|[+@!]\\(.*?\\)|\\[|\\]/,ei=n=>n.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g,\"\\\\$&\"),D=class{options;set;pattern;windowsPathsNoEscape;nonegate;negate;comment;empty;preserveMultipleSlashes;partial;globSet;globParts;nocase;isWindows;platform;windowsNoMagicRoot;regexp;constructor(t,e={}){at(t),e=e||{},this.options=e,this.pattern=t,this.platform=e.platform||Ae,this.isWindows=this.platform===\"win32\";let s=\"allowWindowsEscape\";this.windowsPathsNoEscape=!!e.windowsPathsNoEscape||e[s]===!1,this.windowsPathsNoEscape&&(this.pattern=this.pattern.replace(/\\\\/g,\"/\")),this.preserveMultipleSlashes=!!e.preserveMultipleSlashes,this.regexp=null,this.negate=!1,this.nonegate=!!e.nonegate,this.comment=!1,this.empty=!1,this.partial=!!e.partial,this.nocase=!!this.options.nocase,this.windowsNoMagicRoot=e.windowsNoMagicRoot!==void 0?e.windowsNoMagicRoot:!!(this.isWindows&&this.nocase),this.globSet=[],this.globParts=[],this.set=[],this.make()}hasMagic(){if(this.options.magicalBraces&&this.set.length>1)return!0;for(let t of this.set)for(let e of t)if(typeof e!=\"string\")return!0;return!1}debug(...t){}make(){let t=this.pattern,e=this.options;if(!e.nocomment&&t.charAt(0)===\"#\"){this.comment=!0;return}if(!t){this.empty=!0;return}this.parseNegate(),this.globSet=[...new Set(this.braceExpand())],e.debug&&(this.debug=(...r)=>console.error(...r)),this.debug(this.pattern,this.globSet);let s=this.globSet.map(r=>this.slashSplit(r));this.globParts=this.preprocess(s),this.debug(this.pattern,this.globParts);let i=this.globParts.map((r,o,h)=>{if(this.isWindows&&this.windowsNoMagicRoot){let a=r[0]===\"\"&&r[1]===\"\"&&(r[2]===\"?\"||!ve.test(r[2]))&&!ve.test(r[3]),l=/^[a-z]:/i.test(r[0]);if(a)return[...r.slice(0,4),...r.slice(4).map(u=>this.parse(u))];if(l)return[r[0],...r.slice(1).map(u=>this.parse(u))]}return r.map(a=>this.parse(a))});if(this.debug(this.pattern,i),this.set=i.filter(r=>r.indexOf(!1)===-1),this.isWindows)for(let r=0;r<this.set.length;r++){let o=this.set[r];o[0]===\"\"&&o[1]===\"\"&&this.globParts[r][2]===\"?\"&&typeof o[3]==\"string\"&&/^[a-z]:$/i.test(o[3])&&(o[2]=\"?\")}this.debug(this.pattern,this.set)}preprocess(t){if(this.options.noglobstar)for(let s=0;s<t.length;s++)for(let i=0;i<t[s].length;i++)t[s][i]===\"**\"&&(t[s][i]=\"*\");let{optimizationLevel:e=1}=this.options;return e>=2?(t=this.firstPhasePreProcess(t),t=this.secondPhasePreProcess(t)):e>=1?t=this.levelOneOptimize(t):t=this.adjascentGlobstarOptimize(t),t}adjascentGlobstarOptimize(t){return t.map(e=>{let s=-1;for(;(s=e.indexOf(\"**\",s+1))!==-1;){let i=s;for(;e[i+1]===\"**\";)i++;i!==s&&e.splice(s,i-s)}return e})}levelOneOptimize(t){return t.map(e=>(e=e.reduce((s,i)=>{let r=s[s.length-1];return i===\"**\"&&r===\"**\"?s:i===\"..\"&&r&&r!==\"..\"&&r!==\".\"&&r!==\"**\"?(s.pop(),s):(s.push(i),s)},[]),e.length===0?[\"\"]:e))}levelTwoFileOptimize(t){Array.isArray(t)||(t=this.slashSplit(t));let e=!1;do{if(e=!1,!this.preserveMultipleSlashes){for(let i=1;i<t.length-1;i++){let r=t[i];i===1&&r===\"\"&&t[0]===\"\"||(r===\".\"||r===\"\")&&(e=!0,t.splice(i,1),i--)}t[0]===\".\"&&t.length===2&&(t[1]===\".\"||t[1]===\"\")&&(e=!0,t.pop())}let s=0;for(;(s=t.indexOf(\"..\",s+1))!==-1;){let i=t[s-1];i&&i!==\".\"&&i!==\"..\"&&i!==\"**\"&&(e=!0,t.splice(s-1,2),s-=2)}}while(e);return t.length===0?[\"\"]:t}firstPhasePreProcess(t){let e=!1;do{e=!1;for(let s of t){let i=-1;for(;(i=s.indexOf(\"**\",i+1))!==-1;){let o=i;for(;s[o+1]===\"**\";)o++;o>i&&s.splice(i+1,o-i);let h=s[i+1],a=s[i+2],l=s[i+3];if(h!==\"..\"||!a||a===\".\"||a===\"..\"||!l||l===\".\"||l===\"..\")continue;e=!0,s.splice(i,1);let u=s.slice(0);u[i]=\"**\",t.push(u),i--}if(!this.preserveMultipleSlashes){for(let o=1;o<s.length-1;o++){let h=s[o];o===1&&h===\"\"&&s[0]===\"\"||(h===\".\"||h===\"\")&&(e=!0,s.splice(o,1),o--)}s[0]===\".\"&&s.length===2&&(s[1]===\".\"||s[1]===\"\")&&(e=!0,s.pop())}let r=0;for(;(r=s.indexOf(\"..\",r+1))!==-1;){let o=s[r-1];if(o&&o!==\".\"&&o!==\"..\"&&o!==\"**\"){e=!0;let a=r===1&&s[r+1]===\"**\"?[\".\"]:[];s.splice(r-1,2,...a),s.length===0&&s.push(\"\"),r-=2}}}}while(e);return t}secondPhasePreProcess(t){for(let e=0;e<t.length-1;e++)for(let s=e+1;s<t.length;s++){let i=this.partsMatch(t[e],t[s],!this.preserveMultipleSlashes);if(i){t[e]=[],t[s]=i;break}}return t.filter(e=>e.length)}partsMatch(t,e,s=!1){let i=0,r=0,o=[],h=\"\";for(;i<t.length&&r<e.length;)if(t[i]===e[r])o.push(h===\"b\"?e[r]:t[i]),i++,r++;else if(s&&t[i]===\"**\"&&e[r]===t[i+1])o.push(t[i]),i++;else if(s&&e[r]===\"**\"&&t[i]===e[r+1])o.push(e[r]),r++;else if(t[i]===\"*\"&&e[r]&&(this.options.dot||!e[r].startsWith(\".\"))&&e[r]!==\"**\"){if(h===\"b\")return!1;h=\"a\",o.push(t[i]),i++,r++}else if(e[r]===\"*\"&&t[i]&&(this.options.dot||!t[i].startsWith(\".\"))&&t[i]!==\"**\"){if(h===\"a\")return!1;h=\"b\",o.push(e[r]),i++,r++}else return!1;return t.length===e.length&&o}parseNegate(){if(this.nonegate)return;let t=this.pattern,e=!1,s=0;for(let i=0;i<t.length&&t.charAt(i)===\"!\";i++)e=!e,s++;s&&(this.pattern=t.slice(s)),this.negate=e}matchOne(t,e,s=!1){let i=this.options;if(this.isWindows){let p=typeof t[0]==\"string\"&&/^[a-z]:$/i.test(t[0]),w=!p&&t[0]===\"\"&&t[1]===\"\"&&t[2]===\"?\"&&/^[a-z]:$/i.test(t[3]),g=typeof e[0]==\"string\"&&/^[a-z]:$/i.test(e[0]),S=!g&&e[0]===\"\"&&e[1]===\"\"&&e[2]===\"?\"&&typeof e[3]==\"string\"&&/^[a-z]:$/i.test(e[3]),E=w?3:p?0:void 0,y=S?3:g?0:void 0;if(typeof E==\"number\"&&typeof y==\"number\"){let[b,z]=[t[E],e[y]];b.toLowerCase()===z.toLowerCase()&&(e[y]=b,y>E?e=e.slice(y):E>y&&(t=t.slice(E)))}}let{optimizationLevel:r=1}=this.options;r>=2&&(t=this.levelTwoFileOptimize(t)),this.debug(\"matchOne\",this,{file:t,pattern:e}),this.debug(\"matchOne\",t.length,e.length);for(var o=0,h=0,a=t.length,l=e.length;o<a&&h<l;o++,h++){this.debug(\"matchOne loop\");var u=e[h],c=t[o];if(this.debug(e,u,c),u===!1)return!1;if(u===A){this.debug(\"GLOBSTAR\",[e,u,c]);var d=o,f=h+1;if(f===l){for(this.debug(\"** at the end\");o<a;o++)if(t[o]===\".\"||t[o]===\"..\"||!i.dot&&t[o].charAt(0)===\".\")return!1;return!0}for(;d<a;){var m=t[d];if(this.debug(`\nglobstar while`,t,d,e,f,m),this.matchOne(t.slice(d),e.slice(f),s))return this.debug(\"globstar found match!\",d,a,m),!0;if(m===\".\"||m===\"..\"||!i.dot&&m.charAt(0)===\".\"){this.debug(\"dot detected!\",t,d,e,f);break}this.debug(\"globstar swallow a segment, and continue\"),d++}return!!(s&&(this.debug(`\n>>> no match, partial?`,t,d,e,f),d===a))}let p;if(typeof u==\"string\"?(p=c===u,this.debug(\"string match\",u,c,p)):(p=u.test(c),this.debug(\"pattern match\",u,c,p)),!p)return!1}if(o===a&&h===l)return!0;if(o===a)return s;if(h===l)return o===a-1&&t[o]===\"\";throw new Error(\"wtf?\")}braceExpand(){return ke(this.pattern,this.options)}parse(t){at(t);let e=this.options;if(t===\"**\")return A;if(t===\"\")return\"\";let s,i=null;(s=t.match(js))?i=e.dot?zs:Is:(s=t.match(Rs))?i=(e.nocase?e.dot?Ms:Ds:e.dot?Fs:Os)(s[1]):(s=t.match(Bs))?i=(e.nocase?e.dot?$s:Us:e.dot?Gs:Hs)(s):(s=t.match(Ns))?i=e.dot?Ls:_s:(s=t.match(Ws))&&(i=Ps);let r=Q.fromGlob(t,this.options).toMMPattern();return i&&typeof r==\"object\"&&Reflect.defineProperty(r,\"test\",{value:i}),r}makeRe(){if(this.regexp||this.regexp===!1)return this.regexp;let t=this.set;if(!t.length)return this.regexp=!1,this.regexp;let e=this.options,s=e.noglobstar?Vs:e.dot?Ys:Xs,i=new Set(e.nocase?[\"i\"]:[]),r=t.map(a=>{let l=a.map(c=>{if(c instanceof RegExp)for(let d of c.flags.split(\"\"))i.add(d);return typeof c==\"string\"?ei(c):c===A?A:c._src});l.forEach((c,d)=>{let f=l[d+1],m=l[d-1];c!==A||m===A||(m===void 0?f!==void 0&&f!==A?l[d+1]=\"(?:\\\\/|\"+s+\"\\\\/)?\"+f:l[d]=s:f===void 0?l[d-1]=m+\"(?:\\\\/|\\\\/\"+s+\")?\":f!==A&&(l[d-1]=m+\"(?:\\\\/|\\\\/\"+s+\"\\\\/)\"+f,l[d+1]=A))});let u=l.filter(c=>c!==A);if(this.partial&&u.length>=1){let c=[];for(let d=1;d<=u.length;d++)c.push(u.slice(0,d).join(\"/\"));return\"(?:\"+c.join(\"|\")+\")\"}return u.join(\"/\")}).join(\"|\"),[o,h]=t.length>1?[\"(?:\",\")\"]:[\"\",\"\"];r=\"^\"+o+r+h+\"$\",this.partial&&(r=\"^(?:\\\\/|\"+o+r.slice(1,-1)+h+\")$\"),this.negate&&(r=\"^(?!\"+r+\").+$\");try{this.regexp=new RegExp(r,[...i].join(\"\"))}catch{this.regexp=!1}return this.regexp}slashSplit(t){return this.preserveMultipleSlashes?t.split(\"/\"):this.isWindows&&/^\\/\\/[^\\/]+/.test(t)?[\"\",...t.split(/\\/+/)]:t.split(/\\/+/)}match(t,e=this.partial){if(this.debug(\"match\",t,this.pattern),this.comment)return!1;if(this.empty)return t===\"\";if(t===\"/\"&&e)return!0;let s=this.options;this.isWindows&&(t=t.split(\"\\\\\").join(\"/\"));let i=this.slashSplit(t);this.debug(this.pattern,\"split\",i);let r=this.set;this.debug(this.pattern,\"set\",r);let o=i[i.length-1];if(!o)for(let h=i.length-2;!o&&h>=0;h--)o=i[h];for(let h=0;h<r.length;h++){let a=r[h],l=i;if(s.matchBase&&a.length===1&&(l=[o]),this.matchOne(l,a,e))return s.flipNegate?!0:!this.negate}return s.flipNegate?!1:this.negate}static defaults(t){return O.defaults(t).Minimatch}};O.AST=Q;O.Minimatch=D;O.escape=tt;O.unescape=W;import{fileURLToPath as Wi}from\"node:url\";var si=typeof performance==\"object\"&&performance&&typeof performance.now==\"function\"?performance:Date,Oe=new Set,Vt=typeof process==\"object\"&&process?process:{},Fe=(n,t,e,s)=>{typeof Vt.emitWarning==\"function\"?Vt.emitWarning(n,t,e,s):console.error(`[${e}] ${t}: ${n}`)},At=globalThis.AbortController,Re=globalThis.AbortSignal;if(typeof At>\"u\"){Re=class{onabort;_onabort=[];reason;aborted=!1;addEventListener(e,s){this._onabort.push(s)}},At=class{constructor(){t()}signal=new Re;abort(e){if(!this.signal.aborted){this.signal.reason=e,this.signal.aborted=!0;for(let s of this.signal._onabort)s(e);this.signal.onabort?.(e)}}};let n=Vt.env?.LRU_CACHE_IGNORE_AC_WARNING!==\"1\",t=()=>{n&&(n=!1,Fe(\"AbortController is not defined. If using lru-cache in node 14, load an AbortController polyfill from the `node-abort-controller` package. A minimal polyfill is provided for use by LRUCache.fetch(), but it should not be relied upon in other contexts (eg, passing it to other APIs that use AbortController/AbortSignal might have undesirable effects). You may disable this with LRU_CACHE_IGNORE_AC_WARNING=1 in the env.\",\"NO_ABORT_CONTROLLER\",\"ENOTSUP\",t))}}var ii=n=>!Oe.has(n);var q=n=>n&&n===Math.floor(n)&&n>0&&isFinite(n),De=n=>q(n)?n<=Math.pow(2,8)?Uint8Array:n<=Math.pow(2,16)?Uint16Array:n<=Math.pow(2,32)?Uint32Array:n<=Number.MAX_SAFE_INTEGER?Tt:null:null,Tt=class extends Array{constructor(n){super(n),this.fill(0)}},ri=class ct{heap;length;static#t=!1;static create(t){let e=De(t);if(!e)return[];ct.#t=!0;let s=new ct(t,e);return ct.#t=!1,s}constructor(t,e){if(!ct.#t)throw new TypeError(\"instantiate Stack using Stack.create(n)\");this.heap=new e(t),this.length=0}push(t){this.heap[this.length++]=t}pop(){return this.heap[--this.length]}},ft=class Me{#t;#s;#n;#r;#o;#S;#w;#c;get perf(){return this.#c}ttl;ttlResolution;ttlAutopurge;updateAgeOnGet;updateAgeOnHas;allowStale;noDisposeOnSet;noUpdateTTL;maxEntrySize;sizeCalculation;noDeleteOnFetchRejection;noDeleteOnStaleGet;allowStaleOnFetchAbort;allowStaleOnFetchRejection;ignoreFetchAbort;#h;#u;#f;#a;#i;#d;#E;#b;#p;#R;#m;#C;#T;#g;#y;#x;#A;#e;#_;static unsafeExposeInternals(t){return{starts:t.#T,ttls:t.#g,autopurgeTimers:t.#y,sizes:t.#C,keyMap:t.#f,keyList:t.#a,valList:t.#i,next:t.#d,prev:t.#E,get head(){return t.#b},get tail(){return t.#p},free:t.#R,isBackgroundFetch:e=>t.#l(e),backgroundFetch:(e,s,i,r)=>t.#U(e,s,i,r),moveToTail:e=>t.#W(e),indexes:e=>t.#F(e),rindexes:e=>t.#D(e),isStale:e=>t.#v(e)}}get max(){return this.#t}get maxSize(){return this.#s}get calculatedSize(){return this.#u}get size(){return this.#h}get fetchMethod(){return this.#S}get memoMethod(){return this.#w}get dispose(){return this.#n}get onInsert(){return this.#r}get disposeAfter(){return this.#o}constructor(t){let{max:e=0,ttl:s,ttlResolution:i=1,ttlAutopurge:r,updateAgeOnGet:o,updateAgeOnHas:h,allowStale:a,dispose:l,onInsert:u,disposeAfter:c,noDisposeOnSet:d,noUpdateTTL:f,maxSize:m=0,maxEntrySize:p=0,sizeCalculation:w,fetchMethod:g,memoMethod:S,noDeleteOnFetchRejection:E,noDeleteOnStaleGet:y,allowStaleOnFetchRejection:b,allowStaleOnFetchAbort:z,ignoreFetchAbort:$,perf:J}=t;if(J!==void 0&&typeof J?.now!=\"function\")throw new TypeError(\"perf option must have a now() method if specified\");if(this.#c=J??si,e!==0&&!q(e))throw new TypeError(\"max option must be a nonnegative integer\");let Z=e?De(e):Array;if(!Z)throw new Error(\"invalid max value: \"+e);if(this.#t=e,this.#s=m,this.maxEntrySize=p||this.#s,this.sizeCalculation=w,this.sizeCalculation){if(!this.#s&&!this.maxEntrySize)throw new TypeError(\"cannot set sizeCalculation without setting maxSize or maxEntrySize\");if(typeof this.sizeCalculation!=\"function\")throw new TypeError(\"sizeCalculation set to non-function\")}if(S!==void 0&&typeof S!=\"function\")throw new TypeError(\"memoMethod must be a function if defined\");if(this.#w=S,g!==void 0&&typeof g!=\"function\")throw new TypeError(\"fetchMethod must be a function if specified\");if(this.#S=g,this.#A=!!g,this.#f=new Map,this.#a=new Array(e).fill(void 0),this.#i=new Array(e).fill(void 0),this.#d=new Z(e),this.#E=new Z(e),this.#b=0,this.#p=0,this.#R=ri.create(e),this.#h=0,this.#u=0,typeof l==\"function\"&&(this.#n=l),typeof u==\"function\"&&(this.#r=u),typeof c==\"function\"?(this.#o=c,this.#m=[]):(this.#o=void 0,this.#m=void 0),this.#x=!!this.#n,this.#_=!!this.#r,this.#e=!!this.#o,this.noDisposeOnSet=!!d,this.noUpdateTTL=!!f,this.noDeleteOnFetchRejection=!!E,this.allowStaleOnFetchRejection=!!b,this.allowStaleOnFetchAbort=!!z,this.ignoreFetchAbort=!!$,this.maxEntrySize!==0){if(this.#s!==0&&!q(this.#s))throw new TypeError(\"maxSize must be a positive integer if specified\");if(!q(this.maxEntrySize))throw new TypeError(\"maxEntrySize must be a positive integer if specified\");this.#G()}if(this.allowStale=!!a,this.noDeleteOnStaleGet=!!y,this.updateAgeOnGet=!!o,this.updateAgeOnHas=!!h,this.ttlResolution=q(i)||i===0?i:1,this.ttlAutopurge=!!r,this.ttl=s||0,this.ttl){if(!q(this.ttl))throw new TypeError(\"ttl must be a positive integer if specified\");this.#M()}if(this.#t===0&&this.ttl===0&&this.#s===0)throw new TypeError(\"At least one of max, maxSize, or ttl is required\");if(!this.ttlAutopurge&&!this.#t&&!this.#s){let $t=\"LRU_CACHE_UNBOUNDED\";ii($t)&&(Oe.add($t),Fe(\"TTL caching without ttlAutopurge, max, or maxSize can result in unbounded memory consumption.\",\"UnboundedCacheWarning\",$t,Me))}}getRemainingTTL(t){return this.#f.has(t)?1/0:0}#M(){let t=new Tt(this.#t),e=new Tt(this.#t);this.#g=t,this.#T=e;let s=this.ttlAutopurge?new Array(this.#t):void 0;this.#y=s,this.#j=(o,h,a=this.#c.now())=>{if(e[o]=h!==0?a:0,t[o]=h,s?.[o]&&(clearTimeout(s[o]),s[o]=void 0),h!==0&&s){let l=setTimeout(()=>{this.#v(o)&&this.#O(this.#a[o],\"expire\")},h+1);l.unref&&l.unref(),s[o]=l}},this.#k=o=>{e[o]=t[o]!==0?this.#c.now():0},this.#N=(o,h)=>{if(t[h]){let a=t[h],l=e[h];if(!a||!l)return;o.ttl=a,o.start=l,o.now=i||r();let u=o.now-l;o.remainingTTL=a-u}};let i=0,r=()=>{let o=this.#c.now();if(this.ttlResolution>0){i=o;let h=setTimeout(()=>i=0,this.ttlResolution);h.unref&&h.unref()}return o};this.getRemainingTTL=o=>{let h=this.#f.get(o);if(h===void 0)return 0;let a=t[h],l=e[h];if(!a||!l)return 1/0;let u=(i||r())-l;return a-u},this.#v=o=>{let h=e[o],a=t[o];return!!a&&!!h&&(i||r())-h>a}}#k=()=>{};#N=()=>{};#j=()=>{};#v=()=>!1;#G(){let t=new Tt(this.#t);this.#u=0,this.#C=t,this.#P=e=>{this.#u-=t[e],t[e]=0},this.#I=(e,s,i,r)=>{if(this.#l(s))return 0;if(!q(i))if(r){if(typeof r!=\"function\")throw new TypeError(\"sizeCalculation must be a function\");if(i=r(s,e),!q(i))throw new TypeError(\"sizeCalculation return invalid (expect positive integer)\")}else throw new TypeError(\"invalid size value (must be positive integer). When maxSize or maxEntrySize is used, sizeCalculation or size must be set.\");return i},this.#L=(e,s,i)=>{if(t[e]=s,this.#s){let r=this.#s-t[e];for(;this.#u>r;)this.#B(!0)}this.#u+=t[e],i&&(i.entrySize=s,i.totalCalculatedSize=this.#u)}}#P=t=>{};#L=(t,e,s)=>{};#I=(t,e,s,i)=>{if(s||i)throw new TypeError(\"cannot set size without setting maxSize or maxEntrySize on cache\");return 0};*#F({allowStale:t=this.allowStale}={}){if(this.#h)for(let e=this.#p;!(!this.#z(e)||((t||!this.#v(e))&&(yield e),e===this.#b));)e=this.#E[e]}*#D({allowStale:t=this.allowStale}={}){if(this.#h)for(let e=this.#b;!(!this.#z(e)||((t||!this.#v(e))&&(yield e),e===this.#p));)e=this.#d[e]}#z(t){return t!==void 0&&this.#f.get(this.#a[t])===t}*entries(){for(let t of this.#F())this.#i[t]!==void 0&&this.#a[t]!==void 0&&!this.#l(this.#i[t])&&(yield[this.#a[t],this.#i[t]])}*rentries(){for(let t of this.#D())this.#i[t]!==void 0&&this.#a[t]!==void 0&&!this.#l(this.#i[t])&&(yield[this.#a[t],this.#i[t]])}*keys(){for(let t of this.#F()){let e=this.#a[t];e!==void 0&&!this.#l(this.#i[t])&&(yield e)}}*rkeys(){for(let t of this.#D()){let e=this.#a[t];e!==void 0&&!this.#l(this.#i[t])&&(yield e)}}*values(){for(let t of this.#F())this.#i[t]!==void 0&&!this.#l(this.#i[t])&&(yield this.#i[t])}*rvalues(){for(let t of this.#D())this.#i[t]!==void 0&&!this.#l(this.#i[t])&&(yield this.#i[t])}[Symbol.iterator](){return this.entries()}[Symbol.toStringTag]=\"LRUCache\";find(t,e={}){for(let s of this.#F()){let i=this.#i[s],r=this.#l(i)?i.__staleWhileFetching:i;if(r!==void 0&&t(r,this.#a[s],this))return this.get(this.#a[s],e)}}forEach(t,e=this){for(let s of this.#F()){let i=this.#i[s],r=this.#l(i)?i.__staleWhileFetching:i;r!==void 0&&t.call(e,r,this.#a[s],this)}}rforEach(t,e=this){for(let s of this.#D()){let i=this.#i[s],r=this.#l(i)?i.__staleWhileFetching:i;r!==void 0&&t.call(e,r,this.#a[s],this)}}purgeStale(){let t=!1;for(let e of this.#D({allowStale:!0}))this.#v(e)&&(this.#O(this.#a[e],\"expire\"),t=!0);return t}info(t){let e=this.#f.get(t);if(e===void 0)return;let s=this.#i[e],i=this.#l(s)?s.__staleWhileFetching:s;if(i===void 0)return;let r={value:i};if(this.#g&&this.#T){let o=this.#g[e],h=this.#T[e];if(o&&h){let a=o-(this.#c.now()-h);r.ttl=a,r.start=Date.now()}}return this.#C&&(r.size=this.#C[e]),r}dump(){let t=[];for(let e of this.#F({allowStale:!0})){let s=this.#a[e],i=this.#i[e],r=this.#l(i)?i.__staleWhileFetching:i;if(r===void 0||s===void 0)continue;let o={value:r};if(this.#g&&this.#T){o.ttl=this.#g[e];let h=this.#c.now()-this.#T[e];o.start=Math.floor(Date.now()-h)}this.#C&&(o.size=this.#C[e]),t.unshift([s,o])}return t}load(t){this.clear();for(let[e,s]of t){if(s.start){let i=Date.now()-s.start;s.start=this.#c.now()-i}this.set(e,s.value,s)}}set(t,e,s={}){if(e===void 0)return this.delete(t),this;let{ttl:i=this.ttl,start:r,noDisposeOnSet:o=this.noDisposeOnSet,sizeCalculation:h=this.sizeCalculation,status:a}=s,{noUpdateTTL:l=this.noUpdateTTL}=s,u=this.#I(t,e,s.size||0,h);if(this.maxEntrySize&&u>this.maxEntrySize)return a&&(a.set=\"miss\",a.maxEntrySizeExceeded=!0),this.#O(t,\"set\"),this;let c=this.#h===0?void 0:this.#f.get(t);if(c===void 0)c=this.#h===0?this.#p:this.#R.length!==0?this.#R.pop():this.#h===this.#t?this.#B(!1):this.#h,this.#a[c]=t,this.#i[c]=e,this.#f.set(t,c),this.#d[this.#p]=c,this.#E[c]=this.#p,this.#p=c,this.#h++,this.#L(c,u,a),a&&(a.set=\"add\"),l=!1,this.#_&&this.#r?.(e,t,\"add\");else{this.#W(c);let d=this.#i[c];if(e!==d){if(this.#A&&this.#l(d)){d.__abortController.abort(new Error(\"replaced\"));let{__staleWhileFetching:f}=d;f!==void 0&&!o&&(this.#x&&this.#n?.(f,t,\"set\"),this.#e&&this.#m?.push([f,t,\"set\"]))}else o||(this.#x&&this.#n?.(d,t,\"set\"),this.#e&&this.#m?.push([d,t,\"set\"]));if(this.#P(c),this.#L(c,u,a),this.#i[c]=e,a){a.set=\"replace\";let f=d&&this.#l(d)?d.__staleWhileFetching:d;f!==void 0&&(a.oldValue=f)}}else a&&(a.set=\"update\");this.#_&&this.onInsert?.(e,t,e===d?\"update\":\"replace\")}if(i!==0&&!this.#g&&this.#M(),this.#g&&(l||this.#j(c,i,r),a&&this.#N(a,c)),!o&&this.#e&&this.#m){let d=this.#m,f;for(;f=d?.shift();)this.#o?.(...f)}return this}pop(){try{for(;this.#h;){let t=this.#i[this.#b];if(this.#B(!0),this.#l(t)){if(t.__staleWhileFetching)return t.__staleWhileFetching}else if(t!==void 0)return t}}finally{if(this.#e&&this.#m){let t=this.#m,e;for(;e=t?.shift();)this.#o?.(...e)}}}#B(t){let e=this.#b,s=this.#a[e],i=this.#i[e];return this.#A&&this.#l(i)?i.__abortController.abort(new Error(\"evicted\")):(this.#x||this.#e)&&(this.#x&&this.#n?.(i,s,\"evict\"),this.#e&&this.#m?.push([i,s,\"evict\"])),this.#P(e),this.#y?.[e]&&(clearTimeout(this.#y[e]),this.#y[e]=void 0),t&&(this.#a[e]=void 0,this.#i[e]=void 0,this.#R.push(e)),this.#h===1?(this.#b=this.#p=0,this.#R.length=0):this.#b=this.#d[e],this.#f.delete(s),this.#h--,e}has(t,e={}){let{updateAgeOnHas:s=this.updateAgeOnHas,status:i}=e,r=this.#f.get(t);if(r!==void 0){let o=this.#i[r];if(this.#l(o)&&o.__staleWhileFetching===void 0)return!1;if(this.#v(r))i&&(i.has=\"stale\",this.#N(i,r));else return s&&this.#k(r),i&&(i.has=\"hit\",this.#N(i,r)),!0}else i&&(i.has=\"miss\");return!1}peek(t,e={}){let{allowStale:s=this.allowStale}=e,i=this.#f.get(t);if(i===void 0||!s&&this.#v(i))return;let r=this.#i[i];return this.#l(r)?r.__staleWhileFetching:r}#U(t,e,s,i){let r=e===void 0?void 0:this.#i[e];if(this.#l(r))return r;let o=new At,{signal:h}=s;h?.addEventListener(\"abort\",()=>o.abort(h.reason),{signal:o.signal});let a={signal:o.signal,options:s,context:i},l=(p,w=!1)=>{let{aborted:g}=o.signal,S=s.ignoreFetchAbort&&p!==void 0,E=s.ignoreFetchAbort||!!(s.allowStaleOnFetchAbort&&p!==void 0);if(s.status&&(g&&!w?(s.status.fetchAborted=!0,s.status.fetchError=o.signal.reason,S&&(s.status.fetchAbortIgnored=!0)):s.status.fetchResolved=!0),g&&!S&&!w)return c(o.signal.reason,E);let y=f,b=this.#i[e];return(b===f||S&&w&&b===void 0)&&(p===void 0?y.__staleWhileFetching!==void 0?this.#i[e]=y.__staleWhileFetching:this.#O(t,\"fetch\"):(s.status&&(s.status.fetchUpdated=!0),this.set(t,p,a.options))),p},u=p=>(s.status&&(s.status.fetchRejected=!0,s.status.fetchError=p),c(p,!1)),c=(p,w)=>{let{aborted:g}=o.signal,S=g&&s.allowStaleOnFetchAbort,E=S||s.allowStaleOnFetchRejection,y=E||s.noDeleteOnFetchRejection,b=f;if(this.#i[e]===f&&(!y||!w&&b.__staleWhileFetching===void 0?this.#O(t,\"fetch\"):S||(this.#i[e]=b.__staleWhileFetching)),E)return s.status&&b.__staleWhileFetching!==void 0&&(s.status.returnedStale=!0),b.__staleWhileFetching;if(b.__returned===b)throw p},d=(p,w)=>{let g=this.#S?.(t,r,a);g&&g instanceof Promise&&g.then(S=>p(S===void 0?void 0:S),w),o.signal.addEventListener(\"abort\",()=>{(!s.ignoreFetchAbort||s.allowStaleOnFetchAbort)&&(p(void 0),s.allowStaleOnFetchAbort&&(p=S=>l(S,!0)))})};s.status&&(s.status.fetchDispatched=!0);let f=new Promise(d).then(l,u),m=Object.assign(f,{__abortController:o,__staleWhileFetching:r,__returned:void 0});return e===void 0?(this.set(t,m,{...a.options,status:void 0}),e=this.#f.get(t)):this.#i[e]=m,m}#l(t){if(!this.#A)return!1;let e=t;return!!e&&e instanceof Promise&&e.hasOwnProperty(\"__staleWhileFetching\")&&e.__abortController instanceof At}async fetch(t,e={}){let{allowStale:s=this.allowStale,updateAgeOnGet:i=this.updateAgeOnGet,noDeleteOnStaleGet:r=this.noDeleteOnStaleGet,ttl:o=this.ttl,noDisposeOnSet:h=this.noDisposeOnSet,size:a=0,sizeCalculation:l=this.sizeCalculation,noUpdateTTL:u=this.noUpdateTTL,noDeleteOnFetchRejection:c=this.noDeleteOnFetchRejection,allowStaleOnFetchRejection:d=this.allowStaleOnFetchRejection,ignoreFetchAbort:f=this.ignoreFetchAbort,allowStaleOnFetchAbort:m=this.allowStaleOnFetchAbort,context:p,forceRefresh:w=!1,status:g,signal:S}=e;if(!this.#A)return g&&(g.fetch=\"get\"),this.get(t,{allowStale:s,updateAgeOnGet:i,noDeleteOnStaleGet:r,status:g});let E={allowStale:s,updateAgeOnGet:i,noDeleteOnStaleGet:r,ttl:o,noDisposeOnSet:h,size:a,sizeCalculation:l,noUpdateTTL:u,noDeleteOnFetchRejection:c,allowStaleOnFetchRejection:d,allowStaleOnFetchAbort:m,ignoreFetchAbort:f,status:g,signal:S},y=this.#f.get(t);if(y===void 0){g&&(g.fetch=\"miss\");let b=this.#U(t,y,E,p);return b.__returned=b}else{let b=this.#i[y];if(this.#l(b)){let Z=s&&b.__staleWhileFetching!==void 0;return g&&(g.fetch=\"inflight\",Z&&(g.returnedStale=!0)),Z?b.__staleWhileFetching:b.__returned=b}let z=this.#v(y);if(!w&&!z)return g&&(g.fetch=\"hit\"),this.#W(y),i&&this.#k(y),g&&this.#N(g,y),b;let $=this.#U(t,y,E,p),J=$.__staleWhileFetching!==void 0&&s;return g&&(g.fetch=z?\"stale\":\"refresh\",J&&z&&(g.returnedStale=!0)),J?$.__staleWhileFetching:$.__returned=$}}async forceFetch(t,e={}){let s=await this.fetch(t,e);if(s===void 0)throw new Error(\"fetch() returned undefined\");return s}memo(t,e={}){let s=this.#w;if(!s)throw new Error(\"no memoMethod provided to constructor\");let{context:i,forceRefresh:r,...o}=e,h=this.get(t,o);if(!r&&h!==void 0)return h;let a=s(t,h,{options:o,context:i});return this.set(t,a,o),a}get(t,e={}){let{allowStale:s=this.allowStale,updateAgeOnGet:i=this.updateAgeOnGet,noDeleteOnStaleGet:r=this.noDeleteOnStaleGet,status:o}=e,h=this.#f.get(t);if(h!==void 0){let a=this.#i[h],l=this.#l(a);return o&&this.#N(o,h),this.#v(h)?(o&&(o.get=\"stale\"),l?(o&&s&&a.__staleWhileFetching!==void 0&&(o.returnedStale=!0),s?a.__staleWhileFetching:void 0):(r||this.#O(t,\"expire\"),o&&s&&(o.returnedStale=!0),s?a:void 0)):(o&&(o.get=\"hit\"),l?a.__staleWhileFetching:(this.#W(h),i&&this.#k(h),a))}else o&&(o.get=\"miss\")}#$(t,e){this.#E[e]=t,this.#d[t]=e}#W(t){t!==this.#p&&(t===this.#b?this.#b=this.#d[t]:this.#$(this.#E[t],this.#d[t]),this.#$(this.#p,t),this.#p=t)}delete(t){return this.#O(t,\"delete\")}#O(t,e){let s=!1;if(this.#h!==0){let i=this.#f.get(t);if(i!==void 0)if(this.#y?.[i]&&(clearTimeout(this.#y?.[i]),this.#y[i]=void 0),s=!0,this.#h===1)this.#H(e);else{this.#P(i);let r=this.#i[i];if(this.#l(r)?r.__abortController.abort(new Error(\"deleted\")):(this.#x||this.#e)&&(this.#x&&this.#n?.(r,t,e),this.#e&&this.#m?.push([r,t,e])),this.#f.delete(t),this.#a[i]=void 0,this.#i[i]=void 0,i===this.#p)this.#p=this.#E[i];else if(i===this.#b)this.#b=this.#d[i];else{let o=this.#E[i];this.#d[o]=this.#d[i];let h=this.#d[i];this.#E[h]=this.#E[i]}this.#h--,this.#R.push(i)}}if(this.#e&&this.#m?.length){let i=this.#m,r;for(;r=i?.shift();)this.#o?.(...r)}return s}clear(){return this.#H(\"delete\")}#H(t){for(let e of this.#D({allowStale:!0})){let s=this.#i[e];if(this.#l(s))s.__abortController.abort(new Error(\"deleted\"));else{let i=this.#a[e];this.#x&&this.#n?.(s,i,t),this.#e&&this.#m?.push([s,i,t])}}if(this.#f.clear(),this.#i.fill(void 0),this.#a.fill(void 0),this.#g&&this.#T){this.#g.fill(0),this.#T.fill(0);for(let e of this.#y??[])e!==void 0&&clearTimeout(e);this.#y?.fill(void 0)}if(this.#C&&this.#C.fill(0),this.#b=0,this.#p=0,this.#R.length=0,this.#u=0,this.#h=0,this.#e&&this.#m){let e=this.#m,s;for(;s=e?.shift();)this.#o?.(...s)}}};import{posix as mi,win32 as re}from\"node:path\";import{fileURLToPath as gi}from\"node:url\";import{lstatSync as wi,readdir as yi,readdirSync as bi,readlinkSync as Si,realpathSync as Ei}from\"fs\";import*as xi from\"node:fs\";import{lstat as Ci,readdir as Ti,readlink as Ai,realpath as ki}from\"node:fs/promises\";import{EventEmitter as ee}from\"node:events\";import Pe from\"node:stream\";import{StringDecoder as ni}from\"node:string_decoder\";var Ne=typeof process==\"object\"&&process?process:{stdout:null,stderr:null},oi=n=>!!n&&typeof n==\"object\"&&(n instanceof V||n instanceof Pe||hi(n)||ai(n)),hi=n=>!!n&&typeof n==\"object\"&&n instanceof ee&&typeof n.pipe==\"function\"&&n.pipe!==Pe.Writable.prototype.pipe,ai=n=>!!n&&typeof n==\"object\"&&n instanceof ee&&typeof n.write==\"function\"&&typeof n.end==\"function\",G=Symbol(\"EOF\"),H=Symbol(\"maybeEmitEnd\"),K=Symbol(\"emittedEnd\"),kt=Symbol(\"emittingEnd\"),ut=Symbol(\"emittedError\"),Rt=Symbol(\"closed\"),_e=Symbol(\"read\"),Ot=Symbol(\"flush\"),Le=Symbol(\"flushChunk\"),P=Symbol(\"encoding\"),et=Symbol(\"decoder\"),v=Symbol(\"flowing\"),dt=Symbol(\"paused\"),st=Symbol(\"resume\"),C=Symbol(\"buffer\"),F=Symbol(\"pipes\"),T=Symbol(\"bufferLength\"),Yt=Symbol(\"bufferPush\"),Ft=Symbol(\"bufferShift\"),k=Symbol(\"objectMode\"),x=Symbol(\"destroyed\"),Xt=Symbol(\"error\"),Jt=Symbol(\"emitData\"),We=Symbol(\"emitEnd\"),Zt=Symbol(\"emitEnd2\"),B=Symbol(\"async\"),Qt=Symbol(\"abort\"),Dt=Symbol(\"aborted\"),pt=Symbol(\"signal\"),Y=Symbol(\"dataListeners\"),M=Symbol(\"discarded\"),mt=n=>Promise.resolve().then(n),li=n=>n(),ci=n=>n===\"end\"||n===\"finish\"||n===\"prefinish\",fi=n=>n instanceof ArrayBuffer||!!n&&typeof n==\"object\"&&n.constructor&&n.constructor.name===\"ArrayBuffer\"&&n.byteLength>=0,ui=n=>!Buffer.isBuffer(n)&&ArrayBuffer.isView(n),Mt=class{src;dest;opts;ondrain;constructor(t,e,s){this.src=t,this.dest=e,this.opts=s,this.ondrain=()=>t[st](),this.dest.on(\"drain\",this.ondrain)}unpipe(){this.dest.removeListener(\"drain\",this.ondrain)}proxyErrors(t){}end(){this.unpipe(),this.opts.end&&this.dest.end()}},te=class extends Mt{unpipe(){this.src.removeListener(\"error\",this.proxyErrors),super.unpipe()}constructor(t,e,s){super(t,e,s),this.proxyErrors=i=>this.dest.emit(\"error\",i),t.on(\"error\",this.proxyErrors)}},di=n=>!!n.objectMode,pi=n=>!n.objectMode&&!!n.encoding&&n.encoding!==\"buffer\",V=class extends ee{[v]=!1;[dt]=!1;[F]=[];[C]=[];[k];[P];[B];[et];[G]=!1;[K]=!1;[kt]=!1;[Rt]=!1;[ut]=null;[T]=0;[x]=!1;[pt];[Dt]=!1;[Y]=0;[M]=!1;writable=!0;readable=!0;constructor(...t){let e=t[0]||{};if(super(),e.objectMode&&typeof e.encoding==\"string\")throw new TypeError(\"Encoding and objectMode may not be used together\");di(e)?(this[k]=!0,this[P]=null):pi(e)?(this[P]=e.encoding,this[k]=!1):(this[k]=!1,this[P]=null),this[B]=!!e.async,this[et]=this[P]?new ni(this[P]):null,e&&e.debugExposeBuffer===!0&&Object.defineProperty(this,\"buffer\",{get:()=>this[C]}),e&&e.debugExposePipes===!0&&Object.defineProperty(this,\"pipes\",{get:()=>this[F]});let{signal:s}=e;s&&(this[pt]=s,s.aborted?this[Qt]():s.addEventListener(\"abort\",()=>this[Qt]()))}get bufferLength(){return this[T]}get encoding(){return this[P]}set encoding(t){throw new Error(\"Encoding must be set at instantiation time\")}setEncoding(t){throw new Error(\"Encoding must be set at instantiation time\")}get objectMode(){return this[k]}set objectMode(t){throw new Error(\"objectMode must be set at instantiation time\")}get async(){return this[B]}set async(t){this[B]=this[B]||!!t}[Qt](){this[Dt]=!0,this.emit(\"abort\",this[pt]?.reason),this.destroy(this[pt]?.reason)}get aborted(){return this[Dt]}set aborted(t){}write(t,e,s){if(this[Dt])return!1;if(this[G])throw new Error(\"write after end\");if(this[x])return this.emit(\"error\",Object.assign(new Error(\"Cannot call write after a stream was destroyed\"),{code:\"ERR_STREAM_DESTROYED\"})),!0;typeof e==\"function\"&&(s=e,e=\"utf8\"),e||(e=\"utf8\");let i=this[B]?mt:li;if(!this[k]&&!Buffer.isBuffer(t)){if(ui(t))t=Buffer.from(t.buffer,t.byteOffset,t.byteLength);else if(fi(t))t=Buffer.from(t);else if(typeof t!=\"string\")throw new Error(\"Non-contiguous data written to non-objectMode stream\")}return this[k]?(this[v]&&this[T]!==0&&this[Ot](!0),this[v]?this.emit(\"data\",t):this[Yt](t),this[T]!==0&&this.emit(\"readable\"),s&&i(s),this[v]):t.length?(typeof t==\"string\"&&!(e===this[P]&&!this[et]?.lastNeed)&&(t=Buffer.from(t,e)),Buffer.isBuffer(t)&&this[P]&&(t=this[et].write(t)),this[v]&&this[T]!==0&&this[Ot](!0),this[v]?this.emit(\"data\",t):this[Yt](t),this[T]!==0&&this.emit(\"readable\"),s&&i(s),this[v]):(this[T]!==0&&this.emit(\"readable\"),s&&i(s),this[v])}read(t){if(this[x])return null;if(this[M]=!1,this[T]===0||t===0||t&&t>this[T])return this[H](),null;this[k]&&(t=null),this[C].length>1&&!this[k]&&(this[C]=[this[P]?this[C].join(\"\"):Buffer.concat(this[C],this[T])]);let e=this[_e](t||null,this[C][0]);return this[H](),e}[_e](t,e){if(this[k])this[Ft]();else{let s=e;t===s.length||t===null?this[Ft]():typeof s==\"string\"?(this[C][0]=s.slice(t),e=s.slice(0,t),this[T]-=t):(this[C][0]=s.subarray(t),e=s.subarray(0,t),this[T]-=t)}return this.emit(\"data\",e),!this[C].length&&!this[G]&&this.emit(\"drain\"),e}end(t,e,s){return typeof t==\"function\"&&(s=t,t=void 0),typeof e==\"function\"&&(s=e,e=\"utf8\"),t!==void 0&&this.write(t,e),s&&this.once(\"end\",s),this[G]=!0,this.writable=!1,(this[v]||!this[dt])&&this[H](),this}[st](){this[x]||(!this[Y]&&!this[F].length&&(this[M]=!0),this[dt]=!1,this[v]=!0,this.emit(\"resume\"),this[C].length?this[Ot]():this[G]?this[H]():this.emit(\"drain\"))}resume(){return this[st]()}pause(){this[v]=!1,this[dt]=!0,this[M]=!1}get destroyed(){return this[x]}get flowing(){return this[v]}get paused(){return this[dt]}[Yt](t){this[k]?this[T]+=1:this[T]+=t.length,this[C].push(t)}[Ft](){return this[k]?this[T]-=1:this[T]-=this[C][0].length,this[C].shift()}[Ot](t=!1){do;while(this[Le](this[Ft]())&&this[C].length);!t&&!this[C].length&&!this[G]&&this.emit(\"drain\")}[Le](t){return this.emit(\"data\",t),this[v]}pipe(t,e){if(this[x])return t;this[M]=!1;let s=this[K];return e=e||{},t===Ne.stdout||t===Ne.stderr?e.end=!1:e.end=e.end!==!1,e.proxyErrors=!!e.proxyErrors,s?e.end&&t.end():(this[F].push(e.proxyErrors?new te(this,t,e):new Mt(this,t,e)),this[B]?mt(()=>this[st]()):this[st]()),t}unpipe(t){let e=this[F].find(s=>s.dest===t);e&&(this[F].length===1?(this[v]&&this[Y]===0&&(this[v]=!1),this[F]=[]):this[F].splice(this[F].indexOf(e),1),e.unpipe())}addListener(t,e){return this.on(t,e)}on(t,e){let s=super.on(t,e);if(t===\"data\")this[M]=!1,this[Y]++,!this[F].length&&!this[v]&&this[st]();else if(t===\"readable\"&&this[T]!==0)super.emit(\"readable\");else if(ci(t)&&this[K])super.emit(t),this.removeAllListeners(t);else if(t===\"error\"&&this[ut]){let i=e;this[B]?mt(()=>i.call(this,this[ut])):i.call(this,this[ut])}return s}removeListener(t,e){return this.off(t,e)}off(t,e){let s=super.off(t,e);return t===\"data\"&&(this[Y]=this.listeners(\"data\").length,this[Y]===0&&!this[M]&&!this[F].length&&(this[v]=!1)),s}removeAllListeners(t){let e=super.removeAllListeners(t);return(t===\"data\"||t===void 0)&&(this[Y]=0,!this[M]&&!this[F].length&&(this[v]=!1)),e}get emittedEnd(){return this[K]}[H](){!this[kt]&&!this[K]&&!this[x]&&this[C].length===0&&this[G]&&(this[kt]=!0,this.emit(\"end\"),this.emit(\"prefinish\"),this.emit(\"finish\"),this[Rt]&&this.emit(\"close\"),this[kt]=!1)}emit(t,...e){let s=e[0];if(t!==\"error\"&&t!==\"close\"&&t!==x&&this[x])return!1;if(t===\"data\")return!this[k]&&!s?!1:this[B]?(mt(()=>this[Jt](s)),!0):this[Jt](s);if(t===\"end\")return this[We]();if(t===\"close\"){if(this[Rt]=!0,!this[K]&&!this[x])return!1;let r=super.emit(\"close\");return this.removeAllListeners(\"close\"),r}else if(t===\"error\"){this[ut]=s,super.emit(Xt,s);let r=!this[pt]||this.listeners(\"error\").length?super.emit(\"error\",s):!1;return this[H](),r}else if(t===\"resume\"){let r=super.emit(\"resume\");return this[H](),r}else if(t===\"finish\"||t===\"prefinish\"){let r=super.emit(t);return this.removeAllListeners(t),r}let i=super.emit(t,...e);return this[H](),i}[Jt](t){for(let s of this[F])s.dest.write(t)===!1&&this.pause();let e=this[M]?!1:super.emit(\"data\",t);return this[H](),e}[We](){return this[K]?!1:(this[K]=!0,this.readable=!1,this[B]?(mt(()=>this[Zt]()),!0):this[Zt]())}[Zt](){if(this[et]){let e=this[et].end();if(e){for(let s of this[F])s.dest.write(e);this[M]||super.emit(\"data\",e)}}for(let e of this[F])e.end();let t=super.emit(\"end\");return this.removeAllListeners(\"end\"),t}async collect(){let t=Object.assign([],{dataLength:0});this[k]||(t.dataLength=0);let e=this.promise();return this.on(\"data\",s=>{t.push(s),this[k]||(t.dataLength+=s.length)}),await e,t}async concat(){if(this[k])throw new Error(\"cannot concat in objectMode\");let t=await this.collect();return this[P]?t.join(\"\"):Buffer.concat(t,t.dataLength)}async promise(){return new Promise((t,e)=>{this.on(x,()=>e(new Error(\"stream destroyed\"))),this.on(\"error\",s=>e(s)),this.on(\"end\",()=>t())})}[Symbol.asyncIterator](){this[M]=!1;let t=!1,e=async()=>(this.pause(),t=!0,{value:void 0,done:!0});return{next:()=>{if(t)return e();let i=this.read();if(i!==null)return Promise.resolve({done:!1,value:i});if(this[G])return e();let r,o,h=c=>{this.off(\"data\",a),this.off(\"end\",l),this.off(x,u),e(),o(c)},a=c=>{this.off(\"error\",h),this.off(\"end\",l),this.off(x,u),this.pause(),r({value:c,done:!!this[G]})},l=()=>{this.off(\"error\",h),this.off(\"data\",a),this.off(x,u),e(),r({done:!0,value:void 0})},u=()=>h(new Error(\"stream destroyed\"));return new Promise((c,d)=>{o=d,r=c,this.once(x,u),this.once(\"error\",h),this.once(\"end\",l),this.once(\"data\",a)})},throw:e,return:e,[Symbol.asyncIterator](){return this},[Symbol.asyncDispose]:async()=>{}}}[Symbol.iterator](){this[M]=!1;let t=!1,e=()=>(this.pause(),this.off(Xt,e),this.off(x,e),this.off(\"end\",e),t=!0,{done:!0,value:void 0}),s=()=>{if(t)return e();let i=this.read();return i===null?e():{done:!1,value:i}};return this.once(\"end\",e),this.once(Xt,e),this.once(x,e),{next:s,throw:e,return:e,[Symbol.iterator](){return this},[Symbol.dispose]:()=>{}}}destroy(t){if(this[x])return t?this.emit(\"error\",t):this.emit(x),this;this[x]=!0,this[M]=!0,this[C].length=0,this[T]=0;let e=this;return typeof e.close==\"function\"&&!this[Rt]&&e.close(),t?this.emit(\"error\",t):this.emit(x),this}static get isStream(){return oi}};var vi=Ei.native,wt={lstatSync:wi,readdir:yi,readdirSync:bi,readlinkSync:Si,realpathSync:vi,promises:{lstat:Ci,readdir:Ti,readlink:Ai,realpath:ki}},Ue=n=>!n||n===wt||n===xi?wt:{...wt,...n,promises:{...wt.promises,...n.promises||{}}},$e=/^\\\\\\\\\\?\\\\([a-z]:)\\\\?$/i,Ri=n=>n.replace(/\\//g,\"\\\\\").replace($e,\"$1\\\\\"),Oi=/[\\\\\\/]/,L=0,Ge=1,He=2,U=4,qe=6,Ke=8,X=10,Ve=12,_=15,gt=~_,se=16,je=32,yt=64,j=128,Nt=256,Lt=512,Ie=yt|j|Lt,Fi=1023,ie=n=>n.isFile()?Ke:n.isDirectory()?U:n.isSymbolicLink()?X:n.isCharacterDevice()?He:n.isBlockDevice()?qe:n.isSocket()?Ve:n.isFIFO()?Ge:L,ze=new ft({max:2**12}),bt=n=>{let t=ze.get(n);if(t)return t;let e=n.normalize(\"NFKD\");return ze.set(n,e),e},Be=new ft({max:2**12}),_t=n=>{let t=Be.get(n);if(t)return t;let e=bt(n.toLowerCase());return Be.set(n,e),e},Wt=class extends ft{constructor(){super({max:256})}},ne=class extends ft{constructor(t=16*1024){super({maxSize:t,sizeCalculation:e=>e.length+1})}},Ye=Symbol(\"PathScurry setAsCwd\"),R=class{name;root;roots;parent;nocase;isCWD=!1;#t;#s;get dev(){return this.#s}#n;get mode(){return this.#n}#r;get nlink(){return this.#r}#o;get uid(){return this.#o}#S;get gid(){return this.#S}#w;get rdev(){return this.#w}#c;get blksize(){return this.#c}#h;get ino(){return this.#h}#u;get size(){return this.#u}#f;get blocks(){return this.#f}#a;get atimeMs(){return this.#a}#i;get mtimeMs(){return this.#i}#d;get ctimeMs(){return this.#d}#E;get birthtimeMs(){return this.#E}#b;get atime(){return this.#b}#p;get mtime(){return this.#p}#R;get ctime(){return this.#R}#m;get birthtime(){return this.#m}#C;#T;#g;#y;#x;#A;#e;#_;#M;#k;get parentPath(){return(this.parent||this).fullpath()}get path(){return this.parentPath}constructor(t,e=L,s,i,r,o,h){this.name=t,this.#C=r?_t(t):bt(t),this.#e=e&Fi,this.nocase=r,this.roots=i,this.root=s||this,this.#_=o,this.#g=h.fullpath,this.#x=h.relative,this.#A=h.relativePosix,this.parent=h.parent,this.parent?this.#t=this.parent.#t:this.#t=Ue(h.fs)}depth(){return this.#T!==void 0?this.#T:this.parent?this.#T=this.parent.depth()+1:this.#T=0}childrenCache(){return this.#_}resolve(t){if(!t)return this;let e=this.getRootString(t),i=t.substring(e.length).split(this.splitSep);return e?this.getRoot(e).#N(i):this.#N(i)}#N(t){let e=this;for(let s of t)e=e.child(s);return e}children(){let t=this.#_.get(this);if(t)return t;let e=Object.assign([],{provisional:0});return this.#_.set(this,e),this.#e&=~se,e}child(t,e){if(t===\"\"||t===\".\")return this;if(t===\"..\")return this.parent||this;let s=this.children(),i=this.nocase?_t(t):bt(t);for(let a of s)if(a.#C===i)return a;let r=this.parent?this.sep:\"\",o=this.#g?this.#g+r+t:void 0,h=this.newChild(t,L,{...e,parent:this,fullpath:o});return this.canReaddir()||(h.#e|=j),s.push(h),h}relative(){if(this.isCWD)return\"\";if(this.#x!==void 0)return this.#x;let t=this.name,e=this.parent;if(!e)return this.#x=this.name;let s=e.relative();return s+(!s||!e.parent?\"\":this.sep)+t}relativePosix(){if(this.sep===\"/\")return this.relative();if(this.isCWD)return\"\";if(this.#A!==void 0)return this.#A;let t=this.name,e=this.parent;if(!e)return this.#A=this.fullpathPosix();let s=e.relativePosix();return s+(!s||!e.parent?\"\":\"/\")+t}fullpath(){if(this.#g!==void 0)return this.#g;let t=this.name,e=this.parent;if(!e)return this.#g=this.name;let i=e.fullpath()+(e.parent?this.sep:\"\")+t;return this.#g=i}fullpathPosix(){if(this.#y!==void 0)return this.#y;if(this.sep===\"/\")return this.#y=this.fullpath();if(!this.parent){let i=this.fullpath().replace(/\\\\/g,\"/\");return/^[a-z]:\\//i.test(i)?this.#y=`//?/${i}`:this.#y=i}let t=this.parent,e=t.fullpathPosix(),s=e+(!e||!t.parent?\"\":\"/\")+this.name;return this.#y=s}isUnknown(){return(this.#e&_)===L}isType(t){return this[`is${t}`]()}getType(){return this.isUnknown()?\"Unknown\":this.isDirectory()?\"Directory\":this.isFile()?\"File\":this.isSymbolicLink()?\"SymbolicLink\":this.isFIFO()?\"FIFO\":this.isCharacterDevice()?\"CharacterDevice\":this.isBlockDevice()?\"BlockDevice\":this.isSocket()?\"Socket\":\"Unknown\"}isFile(){return(this.#e&_)===Ke}isDirectory(){return(this.#e&_)===U}isCharacterDevice(){return(this.#e&_)===He}isBlockDevice(){return(this.#e&_)===qe}isFIFO(){return(this.#e&_)===Ge}isSocket(){return(this.#e&_)===Ve}isSymbolicLink(){return(this.#e&X)===X}lstatCached(){return this.#e&je?this:void 0}readlinkCached(){return this.#M}realpathCached(){return this.#k}readdirCached(){let t=this.children();return t.slice(0,t.provisional)}canReadlink(){if(this.#M)return!0;if(!this.parent)return!1;let t=this.#e&_;return!(t!==L&&t!==X||this.#e&Nt||this.#e&j)}calledReaddir(){return!!(this.#e&se)}isENOENT(){return!!(this.#e&j)}isNamed(t){return this.nocase?this.#C===_t(t):this.#C===bt(t)}async readlink(){let t=this.#M;if(t)return t;if(this.canReadlink()&&this.parent)try{let e=await this.#t.promises.readlink(this.fullpath()),s=(await this.parent.realpath())?.resolve(e);if(s)return this.#M=s}catch(e){this.#D(e.code);return}}readlinkSync(){let t=this.#M;if(t)return t;if(this.canReadlink()&&this.parent)try{let e=this.#t.readlinkSync(this.fullpath()),s=this.parent.realpathSync()?.resolve(e);if(s)return this.#M=s}catch(e){this.#D(e.code);return}}#j(t){this.#e|=se;for(let e=t.provisional;e<t.length;e++){let s=t[e];s&&s.#v()}}#v(){this.#e&j||(this.#e=(this.#e|j)&gt,this.#G())}#G(){let t=this.children();t.provisional=0;for(let e of t)e.#v()}#P(){this.#e|=Lt,this.#L()}#L(){if(this.#e&yt)return;let t=this.#e;(t&_)===U&&(t&=gt),this.#e=t|yt,this.#G()}#I(t=\"\"){t===\"ENOTDIR\"||t===\"EPERM\"?this.#L():t===\"ENOENT\"?this.#v():this.children().provisional=0}#F(t=\"\"){t===\"ENOTDIR\"?this.parent.#L():t===\"ENOENT\"&&this.#v()}#D(t=\"\"){let e=this.#e;e|=Nt,t===\"ENOENT\"&&(e|=j),(t===\"EINVAL\"||t===\"UNKNOWN\")&&(e&=gt),this.#e=e,t===\"ENOTDIR\"&&this.parent&&this.parent.#L()}#z(t,e){return this.#U(t,e)||this.#B(t,e)}#B(t,e){let s=ie(t),i=this.newChild(t.name,s,{parent:this}),r=i.#e&_;return r!==U&&r!==X&&r!==L&&(i.#e|=yt),e.unshift(i),e.provisional++,i}#U(t,e){for(let s=e.provisional;s<e.length;s++){let i=e[s];if((this.nocase?_t(t.name):bt(t.name))===i.#C)return this.#l(t,i,s,e)}}#l(t,e,s,i){let r=e.name;return e.#e=e.#e&gt|ie(t),r!==t.name&&(e.name=t.name),s!==i.provisional&&(s===i.length-1?i.pop():i.splice(s,1),i.unshift(e)),i.provisional++,e}async lstat(){if((this.#e&j)===0)try{return this.#$(await this.#t.promises.lstat(this.fullpath())),this}catch(t){this.#F(t.code)}}lstatSync(){if((this.#e&j)===0)try{return this.#$(this.#t.lstatSync(this.fullpath())),this}catch(t){this.#F(t.code)}}#$(t){let{atime:e,atimeMs:s,birthtime:i,birthtimeMs:r,blksize:o,blocks:h,ctime:a,ctimeMs:l,dev:u,gid:c,ino:d,mode:f,mtime:m,mtimeMs:p,nlink:w,rdev:g,size:S,uid:E}=t;this.#b=e,this.#a=s,this.#m=i,this.#E=r,this.#c=o,this.#f=h,this.#R=a,this.#d=l,this.#s=u,this.#S=c,this.#h=d,this.#n=f,this.#p=m,this.#i=p,this.#r=w,this.#w=g,this.#u=S,this.#o=E;let y=ie(t);this.#e=this.#e&gt|y|je,y!==L&&y!==U&&y!==X&&(this.#e|=yt)}#W=[];#O=!1;#H(t){this.#O=!1;let e=this.#W.slice();this.#W.length=0,e.forEach(s=>s(null,t))}readdirCB(t,e=!1){if(!this.canReaddir()){e?t(null,[]):queueMicrotask(()=>t(null,[]));return}let s=this.children();if(this.calledReaddir()){let r=s.slice(0,s.provisional);e?t(null,r):queueMicrotask(()=>t(null,r));return}if(this.#W.push(t),this.#O)return;this.#O=!0;let i=this.fullpath();this.#t.readdir(i,{withFileTypes:!0},(r,o)=>{if(r)this.#I(r.code),s.provisional=0;else{for(let h of o)this.#z(h,s);this.#j(s)}this.#H(s.slice(0,s.provisional))})}#q;async readdir(){if(!this.canReaddir())return[];let t=this.children();if(this.calledReaddir())return t.slice(0,t.provisional);let e=this.fullpath();if(this.#q)await this.#q;else{let s=()=>{};this.#q=new Promise(i=>s=i);try{for(let i of await this.#t.promises.readdir(e,{withFileTypes:!0}))this.#z(i,t);this.#j(t)}catch(i){this.#I(i.code),t.provisional=0}this.#q=void 0,s()}return t.slice(0,t.provisional)}readdirSync(){if(!this.canReaddir())return[];let t=this.children();if(this.calledReaddir())return t.slice(0,t.provisional);let e=this.fullpath();try{for(let s of this.#t.readdirSync(e,{withFileTypes:!0}))this.#z(s,t);this.#j(t)}catch(s){this.#I(s.code),t.provisional=0}return t.slice(0,t.provisional)}canReaddir(){if(this.#e&Ie)return!1;let t=_&this.#e;return t===L||t===U||t===X}shouldWalk(t,e){return(this.#e&U)===U&&!(this.#e&Ie)&&!t.has(this)&&(!e||e(this))}async realpath(){if(this.#k)return this.#k;if(!((Lt|Nt|j)&this.#e))try{let t=await this.#t.promises.realpath(this.fullpath());return this.#k=this.resolve(t)}catch{this.#P()}}realpathSync(){if(this.#k)return this.#k;if(!((Lt|Nt|j)&this.#e))try{let t=this.#t.realpathSync(this.fullpath());return this.#k=this.resolve(t)}catch{this.#P()}}[Ye](t){if(t===this)return;t.isCWD=!1,this.isCWD=!0;let e=new Set([]),s=[],i=this;for(;i&&i.parent;)e.add(i),i.#x=s.join(this.sep),i.#A=s.join(\"/\"),i=i.parent,s.push(\"..\");for(i=t;i&&i.parent&&!e.has(i);)i.#x=void 0,i.#A=void 0,i=i.parent}},Pt=class n extends R{sep=\"\\\\\";splitSep=Oi;constructor(t,e=L,s,i,r,o,h){super(t,e,s,i,r,o,h)}newChild(t,e=L,s={}){return new n(t,e,this.root,this.roots,this.nocase,this.childrenCache(),s)}getRootString(t){return re.parse(t).root}getRoot(t){if(t=Ri(t.toUpperCase()),t===this.root.name)return this.root;for(let[e,s]of Object.entries(this.roots))if(this.sameRoot(t,e))return this.roots[t]=s;return this.roots[t]=new it(t,this).root}sameRoot(t,e=this.root.name){return t=t.toUpperCase().replace(/\\//g,\"\\\\\").replace($e,\"$1\\\\\"),t===e}},jt=class n extends R{splitSep=\"/\";sep=\"/\";constructor(t,e=L,s,i,r,o,h){super(t,e,s,i,r,o,h)}getRootString(t){return t.startsWith(\"/\")?\"/\":\"\"}getRoot(t){return this.root}newChild(t,e=L,s={}){return new n(t,e,this.root,this.roots,this.nocase,this.childrenCache(),s)}},It=class{root;rootPath;roots;cwd;#t;#s;#n;nocase;#r;constructor(t=process.cwd(),e,s,{nocase:i,childrenCacheSize:r=16*1024,fs:o=wt}={}){this.#r=Ue(o),(t instanceof URL||t.startsWith(\"file://\"))&&(t=gi(t));let h=e.resolve(t);this.roots=Object.create(null),this.rootPath=this.parseRootPath(h),this.#t=new Wt,this.#s=new Wt,this.#n=new ne(r);let a=h.substring(this.rootPath.length).split(s);if(a.length===1&&!a[0]&&a.pop(),i===void 0)throw new TypeError(\"must provide nocase setting to PathScurryBase ctor\");this.nocase=i,this.root=this.newRoot(this.#r),this.roots[this.rootPath]=this.root;let l=this.root,u=a.length-1,c=e.sep,d=this.rootPath,f=!1;for(let m of a){let p=u--;l=l.child(m,{relative:new Array(p).fill(\"..\").join(c),relativePosix:new Array(p).fill(\"..\").join(\"/\"),fullpath:d+=(f?\"\":c)+m}),f=!0}this.cwd=l}depth(t=this.cwd){return typeof t==\"string\"&&(t=this.cwd.resolve(t)),t.depth()}childrenCache(){return this.#n}resolve(...t){let e=\"\";for(let r=t.length-1;r>=0;r--){let o=t[r];if(!(!o||o===\".\")&&(e=e?`${o}/${e}`:o,this.isAbsolute(o)))break}let s=this.#t.get(e);if(s!==void 0)return s;let i=this.cwd.resolve(e).fullpath();return this.#t.set(e,i),i}resolvePosix(...t){let e=\"\";for(let r=t.length-1;r>=0;r--){let o=t[r];if(!(!o||o===\".\")&&(e=e?`${o}/${e}`:o,this.isAbsolute(o)))break}let s=this.#s.get(e);if(s!==void 0)return s;let i=this.cwd.resolve(e).fullpathPosix();return this.#s.set(e,i),i}relative(t=this.cwd){return typeof t==\"string\"&&(t=this.cwd.resolve(t)),t.relative()}relativePosix(t=this.cwd){return typeof t==\"string\"&&(t=this.cwd.resolve(t)),t.relativePosix()}basename(t=this.cwd){return typeof t==\"string\"&&(t=this.cwd.resolve(t)),t.name}dirname(t=this.cwd){return typeof t==\"string\"&&(t=this.cwd.resolve(t)),(t.parent||t).fullpath()}async readdir(t=this.cwd,e={withFileTypes:!0}){typeof t==\"string\"?t=this.cwd.resolve(t):t instanceof R||(e=t,t=this.cwd);let{withFileTypes:s}=e;if(t.canReaddir()){let i=await t.readdir();return s?i:i.map(r=>r.name)}else return[]}readdirSync(t=this.cwd,e={withFileTypes:!0}){typeof t==\"string\"?t=this.cwd.resolve(t):t instanceof R||(e=t,t=this.cwd);let{withFileTypes:s=!0}=e;return t.canReaddir()?s?t.readdirSync():t.readdirSync().map(i=>i.name):[]}async lstat(t=this.cwd){return typeof t==\"string\"&&(t=this.cwd.resolve(t)),t.lstat()}lstatSync(t=this.cwd){return typeof t==\"string\"&&(t=this.cwd.resolve(t)),t.lstatSync()}async readlink(t=this.cwd,{withFileTypes:e}={withFileTypes:!1}){typeof t==\"string\"?t=this.cwd.resolve(t):t instanceof R||(e=t.withFileTypes,t=this.cwd);let s=await t.readlink();return e?s:s?.fullpath()}readlinkSync(t=this.cwd,{withFileTypes:e}={withFileTypes:!1}){typeof t==\"string\"?t=this.cwd.resolve(t):t instanceof R||(e=t.withFileTypes,t=this.cwd);let s=t.readlinkSync();return e?s:s?.fullpath()}async realpath(t=this.cwd,{withFileTypes:e}={withFileTypes:!1}){typeof t==\"string\"?t=this.cwd.resolve(t):t instanceof R||(e=t.withFileTypes,t=this.cwd);let s=await t.realpath();return e?s:s?.fullpath()}realpathSync(t=this.cwd,{withFileTypes:e}={withFileTypes:!1}){typeof t==\"string\"?t=this.cwd.resolve(t):t instanceof R||(e=t.withFileTypes,t=this.cwd);let s=t.realpathSync();return e?s:s?.fullpath()}async walk(t=this.cwd,e={}){typeof t==\"string\"?t=this.cwd.resolve(t):t instanceof R||(e=t,t=this.cwd);let{withFileTypes:s=!0,follow:i=!1,filter:r,walkFilter:o}=e,h=[];(!r||r(t))&&h.push(s?t:t.fullpath());let a=new Set,l=(c,d)=>{a.add(c),c.readdirCB((f,m)=>{if(f)return d(f);let p=m.length;if(!p)return d();let w=()=>{--p===0&&d()};for(let g of m)(!r||r(g))&&h.push(s?g:g.fullpath()),i&&g.isSymbolicLink()?g.realpath().then(S=>S?.isUnknown()?S.lstat():S).then(S=>S?.shouldWalk(a,o)?l(S,w):w()):g.shouldWalk(a,o)?l(g,w):w()},!0)},u=t;return new Promise((c,d)=>{l(u,f=>{if(f)return d(f);c(h)})})}walkSync(t=this.cwd,e={}){typeof t==\"string\"?t=this.cwd.resolve(t):t instanceof R||(e=t,t=this.cwd);let{withFileTypes:s=!0,follow:i=!1,filter:r,walkFilter:o}=e,h=[];(!r||r(t))&&h.push(s?t:t.fullpath());let a=new Set([t]);for(let l of a){let u=l.readdirSync();for(let c of u){(!r||r(c))&&h.push(s?c:c.fullpath());let d=c;if(c.isSymbolicLink()){if(!(i&&(d=c.realpathSync())))continue;d.isUnknown()&&d.lstatSync()}d.shouldWalk(a,o)&&a.add(d)}}return h}[Symbol.asyncIterator](){return this.iterate()}iterate(t=this.cwd,e={}){return typeof t==\"string\"?t=this.cwd.resolve(t):t instanceof R||(e=t,t=this.cwd),this.stream(t,e)[Symbol.asyncIterator]()}[Symbol.iterator](){return this.iterateSync()}*iterateSync(t=this.cwd,e={}){typeof t==\"string\"?t=this.cwd.resolve(t):t instanceof R||(e=t,t=this.cwd);let{withFileTypes:s=!0,follow:i=!1,filter:r,walkFilter:o}=e;(!r||r(t))&&(yield s?t:t.fullpath());let h=new Set([t]);for(let a of h){let l=a.readdirSync();for(let u of l){(!r||r(u))&&(yield s?u:u.fullpath());let c=u;if(u.isSymbolicLink()){if(!(i&&(c=u.realpathSync())))continue;c.isUnknown()&&c.lstatSync()}c.shouldWalk(h,o)&&h.add(c)}}}stream(t=this.cwd,e={}){typeof t==\"string\"?t=this.cwd.resolve(t):t instanceof R||(e=t,t=this.cwd);let{withFileTypes:s=!0,follow:i=!1,filter:r,walkFilter:o}=e,h=new V({objectMode:!0});(!r||r(t))&&h.write(s?t:t.fullpath());let a=new Set,l=[t],u=0,c=()=>{let d=!1;for(;!d;){let f=l.shift();if(!f){u===0&&h.end();return}u++,a.add(f);let m=(w,g,S=!1)=>{if(w)return h.emit(\"error\",w);if(i&&!S){let E=[];for(let y of g)y.isSymbolicLink()&&E.push(y.realpath().then(b=>b?.isUnknown()?b.lstat():b));if(E.length){Promise.all(E).then(()=>m(null,g,!0));return}}for(let E of g)E&&(!r||r(E))&&(h.write(s?E:E.fullpath())||(d=!0));u--;for(let E of g){let y=E.realpathCached()||E;y.shouldWalk(a,o)&&l.push(y)}d&&!h.flowing?h.once(\"drain\",c):p||c()},p=!0;f.readdirCB(m,!0),p=!1}};return c(),h}streamSync(t=this.cwd,e={}){typeof t==\"string\"?t=this.cwd.resolve(t):t instanceof R||(e=t,t=this.cwd);let{withFileTypes:s=!0,follow:i=!1,filter:r,walkFilter:o}=e,h=new V({objectMode:!0}),a=new Set;(!r||r(t))&&h.write(s?t:t.fullpath());let l=[t],u=0,c=()=>{let d=!1;for(;!d;){let f=l.shift();if(!f){u===0&&h.end();return}u++,a.add(f);let m=f.readdirSync();for(let p of m)(!r||r(p))&&(h.write(s?p:p.fullpath())||(d=!0));u--;for(let p of m){let w=p;if(p.isSymbolicLink()){if(!(i&&(w=p.realpathSync())))continue;w.isUnknown()&&w.lstatSync()}w.shouldWalk(a,o)&&l.push(w)}}d&&!h.flowing&&h.once(\"drain\",c)};return c(),h}chdir(t=this.cwd){let e=this.cwd;this.cwd=typeof t==\"string\"?this.cwd.resolve(t):t,this.cwd[Ye](e)}},it=class extends It{sep=\"\\\\\";constructor(t=process.cwd(),e={}){let{nocase:s=!0}=e;super(t,re,\"\\\\\",{...e,nocase:s}),this.nocase=s;for(let i=this.cwd;i;i=i.parent)i.nocase=this.nocase}parseRootPath(t){return re.parse(t).root.toUpperCase()}newRoot(t){return new Pt(this.rootPath,U,void 0,this.roots,this.nocase,this.childrenCache(),{fs:t})}isAbsolute(t){return t.startsWith(\"/\")||t.startsWith(\"\\\\\")||/^[a-z]:(\\/|\\\\)/i.test(t)}},rt=class extends It{sep=\"/\";constructor(t=process.cwd(),e={}){let{nocase:s=!1}=e;super(t,mi,\"/\",{...e,nocase:s}),this.nocase=s}parseRootPath(t){return\"/\"}newRoot(t){return new jt(this.rootPath,U,void 0,this.roots,this.nocase,this.childrenCache(),{fs:t})}isAbsolute(t){return t.startsWith(\"/\")}},St=class extends rt{constructor(t=process.cwd(),e={}){let{nocase:s=!0}=e;super(t,{...e,nocase:s})}},Cr=process.platform===\"win32\"?Pt:jt,Xe=process.platform===\"win32\"?it:process.platform===\"darwin\"?St:rt;var Di=n=>n.length>=1,Mi=n=>n.length>=1,Ni=Symbol.for(\"nodejs.util.inspect.custom\"),nt=class n{#t;#s;#n;length;#r;#o;#S;#w;#c;#h;#u=!0;constructor(t,e,s,i){if(!Di(t))throw new TypeError(\"empty pattern list\");if(!Mi(e))throw new TypeError(\"empty glob list\");if(e.length!==t.length)throw new TypeError(\"mismatched pattern list and glob list lengths\");if(this.length=t.length,s<0||s>=this.length)throw new TypeError(\"index out of range\");if(this.#t=t,this.#s=e,this.#n=s,this.#r=i,this.#n===0){if(this.isUNC()){let[r,o,h,a,...l]=this.#t,[u,c,d,f,...m]=this.#s;l[0]===\"\"&&(l.shift(),m.shift());let p=[r,o,h,a,\"\"].join(\"/\"),w=[u,c,d,f,\"\"].join(\"/\");this.#t=[p,...l],this.#s=[w,...m],this.length=this.#t.length}else if(this.isDrive()||this.isAbsolute()){let[r,...o]=this.#t,[h,...a]=this.#s;o[0]===\"\"&&(o.shift(),a.shift());let l=r+\"/\",u=h+\"/\";this.#t=[l,...o],this.#s=[u,...a],this.length=this.#t.length}}}[Ni](){return\"Pattern <\"+this.#s.slice(this.#n).join(\"/\")+\">\"}pattern(){return this.#t[this.#n]}isString(){return typeof this.#t[this.#n]==\"string\"}isGlobstar(){return this.#t[this.#n]===A}isRegExp(){return this.#t[this.#n]instanceof RegExp}globString(){return this.#S=this.#S||(this.#n===0?this.isAbsolute()?this.#s[0]+this.#s.slice(1).join(\"/\"):this.#s.join(\"/\"):this.#s.slice(this.#n).join(\"/\"))}hasMore(){return this.length>this.#n+1}rest(){return this.#o!==void 0?this.#o:this.hasMore()?(this.#o=new n(this.#t,this.#s,this.#n+1,this.#r),this.#o.#h=this.#h,this.#o.#c=this.#c,this.#o.#w=this.#w,this.#o):this.#o=null}isUNC(){let t=this.#t;return this.#c!==void 0?this.#c:this.#c=this.#r===\"win32\"&&this.#n===0&&t[0]===\"\"&&t[1]===\"\"&&typeof t[2]==\"string\"&&!!t[2]&&typeof t[3]==\"string\"&&!!t[3]}isDrive(){let t=this.#t;return this.#w!==void 0?this.#w:this.#w=this.#r===\"win32\"&&this.#n===0&&this.length>1&&typeof t[0]==\"string\"&&/^[a-z]:$/i.test(t[0])}isAbsolute(){let t=this.#t;return this.#h!==void 0?this.#h:this.#h=t[0]===\"\"&&t.length>1||this.isDrive()||this.isUNC()}root(){let t=this.#t[0];return typeof t==\"string\"&&this.isAbsolute()&&this.#n===0?t:\"\"}checkFollowGlobstar(){return!(this.#n===0||!this.isGlobstar()||!this.#u)}markFollowGlobstar(){return this.#n===0||!this.isGlobstar()||!this.#u?!1:(this.#u=!1,!0)}};var _i=typeof process==\"object\"&&process&&typeof process.platform==\"string\"?process.platform:\"linux\",ot=class{relative;relativeChildren;absolute;absoluteChildren;platform;mmopts;constructor(t,{nobrace:e,nocase:s,noext:i,noglobstar:r,platform:o=_i}){this.relative=[],this.absolute=[],this.relativeChildren=[],this.absoluteChildren=[],this.platform=o,this.mmopts={dot:!0,nobrace:e,nocase:s,noext:i,noglobstar:r,optimizationLevel:2,platform:o,nocomment:!0,nonegate:!0};for(let h of t)this.add(h)}add(t){let e=new D(t,this.mmopts);for(let s=0;s<e.set.length;s++){let i=e.set[s],r=e.globParts[s];if(!i||!r)throw new Error(\"invalid pattern object\");for(;i[0]===\".\"&&r[0]===\".\";)i.shift(),r.shift();let o=new nt(i,r,0,this.platform),h=new D(o.globString(),this.mmopts),a=r[r.length-1]===\"**\",l=o.isAbsolute();l?this.absolute.push(h):this.relative.push(h),a&&(l?this.absoluteChildren.push(h):this.relativeChildren.push(h))}}ignored(t){let e=t.fullpath(),s=`${e}/`,i=t.relative()||\".\",r=`${i}/`;for(let o of this.relative)if(o.match(i)||o.match(r))return!0;for(let o of this.absolute)if(o.match(e)||o.match(s))return!0;return!1}childrenIgnored(t){let e=t.fullpath()+\"/\",s=(t.relative()||\".\")+\"/\";for(let i of this.relativeChildren)if(i.match(s))return!0;for(let i of this.absoluteChildren)if(i.match(e))return!0;return!1}};var oe=class n{store;constructor(t=new Map){this.store=t}copy(){return new n(new Map(this.store))}hasWalked(t,e){return this.store.get(t.fullpath())?.has(e.globString())}storeWalked(t,e){let s=t.fullpath(),i=this.store.get(s);i?i.add(e.globString()):this.store.set(s,new Set([e.globString()]))}},he=class{store=new Map;add(t,e,s){let i=(e?2:0)|(s?1:0),r=this.store.get(t);this.store.set(t,r===void 0?i:i&r)}entries(){return[...this.store.entries()].map(([t,e])=>[t,!!(e&2),!!(e&1)])}},ae=class{store=new Map;add(t,e){if(!t.canReaddir())return;let s=this.store.get(t);s?s.find(i=>i.globString()===e.globString())||s.push(e):this.store.set(t,[e])}get(t){let e=this.store.get(t);if(!e)throw new Error(\"attempting to walk unknown path\");return e}entries(){return this.keys().map(t=>[t,this.store.get(t)])}keys(){return[...this.store.keys()].filter(t=>t.canReaddir())}},Et=class n{hasWalkedCache;matches=new he;subwalks=new ae;patterns;follow;dot;opts;constructor(t,e){this.opts=t,this.follow=!!t.follow,this.dot=!!t.dot,this.hasWalkedCache=e?e.copy():new oe}processPatterns(t,e){this.patterns=e;let s=e.map(i=>[t,i]);for(let[i,r]of s){this.hasWalkedCache.storeWalked(i,r);let o=r.root(),h=r.isAbsolute()&&this.opts.absolute!==!1;if(o){i=i.resolve(o===\"/\"&&this.opts.root!==void 0?this.opts.root:o);let c=r.rest();if(c)r=c;else{this.matches.add(i,!0,!1);continue}}if(i.isENOENT())continue;let a,l,u=!1;for(;typeof(a=r.pattern())==\"string\"&&(l=r.rest());)i=i.resolve(a),r=l,u=!0;if(a=r.pattern(),l=r.rest(),u){if(this.hasWalkedCache.hasWalked(i,r))continue;this.hasWalkedCache.storeWalked(i,r)}if(typeof a==\"string\"){let c=a===\"..\"||a===\"\"||a===\".\";this.matches.add(i.resolve(a),h,c);continue}else if(a===A){(!i.isSymbolicLink()||this.follow||r.checkFollowGlobstar())&&this.subwalks.add(i,r);let c=l?.pattern(),d=l?.rest();if(!l||(c===\"\"||c===\".\")&&!d)this.matches.add(i,h,c===\"\"||c===\".\");else if(c===\"..\"){let f=i.parent||i;d?this.hasWalkedCache.hasWalked(f,d)||this.subwalks.add(f,d):this.matches.add(f,h,!0)}}else a instanceof RegExp&&this.subwalks.add(i,r)}return this}subwalkTargets(){return this.subwalks.keys()}child(){return new n(this.opts,this.hasWalkedCache)}filterEntries(t,e){let s=this.subwalks.get(t),i=this.child();for(let r of e)for(let o of s){let h=o.isAbsolute(),a=o.pattern(),l=o.rest();a===A?i.testGlobstar(r,o,l,h):a instanceof RegExp?i.testRegExp(r,a,l,h):i.testString(r,a,l,h)}return i}testGlobstar(t,e,s,i){if((this.dot||!t.name.startsWith(\".\"))&&(e.hasMore()||this.matches.add(t,i,!1),t.canReaddir()&&(this.follow||!t.isSymbolicLink()?this.subwalks.add(t,e):t.isSymbolicLink()&&(s&&e.checkFollowGlobstar()?this.subwalks.add(t,s):e.markFollowGlobstar()&&this.subwalks.add(t,e)))),s){let r=s.pattern();if(typeof r==\"string\"&&r!==\"..\"&&r!==\"\"&&r!==\".\")this.testString(t,r,s.rest(),i);else if(r===\"..\"){let o=t.parent||t;this.subwalks.add(o,s)}else r instanceof RegExp&&this.testRegExp(t,r,s.rest(),i)}}testRegExp(t,e,s,i){e.test(t.name)&&(s?this.subwalks.add(t,s):this.matches.add(t,i,!1))}testString(t,e,s,i){t.isNamed(e)&&(s?this.subwalks.add(t,s):this.matches.add(t,i,!1))}};var Li=(n,t)=>typeof n==\"string\"?new ot([n],t):Array.isArray(n)?new ot(n,t):n,zt=class{path;patterns;opts;seen=new Set;paused=!1;aborted=!1;#t=[];#s;#n;signal;maxDepth;includeChildMatches;constructor(t,e,s){if(this.patterns=t,this.path=e,this.opts=s,this.#n=!s.posix&&s.platform===\"win32\"?\"\\\\\":\"/\",this.includeChildMatches=s.includeChildMatches!==!1,(s.ignore||!this.includeChildMatches)&&(this.#s=Li(s.ignore??[],s),!this.includeChildMatches&&typeof this.#s.add!=\"function\")){let i=\"cannot ignore child matches, ignore lacks add() method.\";throw new Error(i)}this.maxDepth=s.maxDepth||1/0,s.signal&&(this.signal=s.signal,this.signal.addEventListener(\"abort\",()=>{this.#t.length=0}))}#r(t){return this.seen.has(t)||!!this.#s?.ignored?.(t)}#o(t){return!!this.#s?.childrenIgnored?.(t)}pause(){this.paused=!0}resume(){if(this.signal?.aborted)return;this.paused=!1;let t;for(;!this.paused&&(t=this.#t.shift());)t()}onResume(t){this.signal?.aborted||(this.paused?this.#t.push(t):t())}async matchCheck(t,e){if(e&&this.opts.nodir)return;let s;if(this.opts.realpath){if(s=t.realpathCached()||await t.realpath(),!s)return;t=s}let r=t.isUnknown()||this.opts.stat?await t.lstat():t;if(this.opts.follow&&this.opts.nodir&&r?.isSymbolicLink()){let o=await r.realpath();o&&(o.isUnknown()||this.opts.stat)&&await o.lstat()}return this.matchCheckTest(r,e)}matchCheckTest(t,e){return t&&(this.maxDepth===1/0||t.depth()<=this.maxDepth)&&(!e||t.canReaddir())&&(!this.opts.nodir||!t.isDirectory())&&(!this.opts.nodir||!this.opts.follow||!t.isSymbolicLink()||!t.realpathCached()?.isDirectory())&&!this.#r(t)?t:void 0}matchCheckSync(t,e){if(e&&this.opts.nodir)return;let s;if(this.opts.realpath){if(s=t.realpathCached()||t.realpathSync(),!s)return;t=s}let r=t.isUnknown()||this.opts.stat?t.lstatSync():t;if(this.opts.follow&&this.opts.nodir&&r?.isSymbolicLink()){let o=r.realpathSync();o&&(o?.isUnknown()||this.opts.stat)&&o.lstatSync()}return this.matchCheckTest(r,e)}matchFinish(t,e){if(this.#r(t))return;if(!this.includeChildMatches&&this.#s?.add){let r=`${t.relativePosix()}/**`;this.#s.add(r)}let s=this.opts.absolute===void 0?e:this.opts.absolute;this.seen.add(t);let i=this.opts.mark&&t.isDirectory()?this.#n:\"\";if(this.opts.withFileTypes)this.matchEmit(t);else if(s){let r=this.opts.posix?t.fullpathPosix():t.fullpath();this.matchEmit(r+i)}else{let r=this.opts.posix?t.relativePosix():t.relative(),o=this.opts.dotRelative&&!r.startsWith(\"..\"+this.#n)?\".\"+this.#n:\"\";this.matchEmit(r?o+r+i:\".\"+i)}}async match(t,e,s){let i=await this.matchCheck(t,s);i&&this.matchFinish(i,e)}matchSync(t,e,s){let i=this.matchCheckSync(t,s);i&&this.matchFinish(i,e)}walkCB(t,e,s){this.signal?.aborted&&s(),this.walkCB2(t,e,new Et(this.opts),s)}walkCB2(t,e,s,i){if(this.#o(t))return i();if(this.signal?.aborted&&i(),this.paused){this.onResume(()=>this.walkCB2(t,e,s,i));return}s.processPatterns(t,e);let r=1,o=()=>{--r===0&&i()};for(let[h,a,l]of s.matches.entries())this.#r(h)||(r++,this.match(h,a,l).then(()=>o()));for(let h of s.subwalkTargets()){if(this.maxDepth!==1/0&&h.depth()>=this.maxDepth)continue;r++;let a=h.readdirCached();h.calledReaddir()?this.walkCB3(h,a,s,o):h.readdirCB((l,u)=>this.walkCB3(h,u,s,o),!0)}o()}walkCB3(t,e,s,i){s=s.filterEntries(t,e);let r=1,o=()=>{--r===0&&i()};for(let[h,a,l]of s.matches.entries())this.#r(h)||(r++,this.match(h,a,l).then(()=>o()));for(let[h,a]of s.subwalks.entries())r++,this.walkCB2(h,a,s.child(),o);o()}walkCBSync(t,e,s){this.signal?.aborted&&s(),this.walkCB2Sync(t,e,new Et(this.opts),s)}walkCB2Sync(t,e,s,i){if(this.#o(t))return i();if(this.signal?.aborted&&i(),this.paused){this.onResume(()=>this.walkCB2Sync(t,e,s,i));return}s.processPatterns(t,e);let r=1,o=()=>{--r===0&&i()};for(let[h,a,l]of s.matches.entries())this.#r(h)||this.matchSync(h,a,l);for(let h of s.subwalkTargets()){if(this.maxDepth!==1/0&&h.depth()>=this.maxDepth)continue;r++;let a=h.readdirSync();this.walkCB3Sync(h,a,s,o)}o()}walkCB3Sync(t,e,s,i){s=s.filterEntries(t,e);let r=1,o=()=>{--r===0&&i()};for(let[h,a,l]of s.matches.entries())this.#r(h)||this.matchSync(h,a,l);for(let[h,a]of s.subwalks.entries())r++,this.walkCB2Sync(h,a,s.child(),o);o()}},xt=class extends zt{matches=new Set;constructor(t,e,s){super(t,e,s)}matchEmit(t){this.matches.add(t)}async walk(){if(this.signal?.aborted)throw this.signal.reason;return this.path.isUnknown()&&await this.path.lstat(),await new Promise((t,e)=>{this.walkCB(this.path,this.patterns,()=>{this.signal?.aborted?e(this.signal.reason):t(this.matches)})}),this.matches}walkSync(){if(this.signal?.aborted)throw this.signal.reason;return this.path.isUnknown()&&this.path.lstatSync(),this.walkCBSync(this.path,this.patterns,()=>{if(this.signal?.aborted)throw this.signal.reason}),this.matches}},vt=class extends zt{results;constructor(t,e,s){super(t,e,s),this.results=new V({signal:this.signal,objectMode:!0}),this.results.on(\"drain\",()=>this.resume()),this.results.on(\"resume\",()=>this.resume())}matchEmit(t){this.results.write(t),this.results.flowing||this.pause()}stream(){let t=this.path;return t.isUnknown()?t.lstat().then(()=>{this.walkCB(t,this.patterns,()=>this.results.end())}):this.walkCB(t,this.patterns,()=>this.results.end()),this.results}streamSync(){return this.path.isUnknown()&&this.path.lstatSync(),this.walkCBSync(this.path,this.patterns,()=>this.results.end()),this.results}};var Pi=typeof process==\"object\"&&process&&typeof process.platform==\"string\"?process.platform:\"linux\",I=class{absolute;cwd;root;dot;dotRelative;follow;ignore;magicalBraces;mark;matchBase;maxDepth;nobrace;nocase;nodir;noext;noglobstar;pattern;platform;realpath;scurry;stat;signal;windowsPathsNoEscape;withFileTypes;includeChildMatches;opts;patterns;constructor(t,e){if(!e)throw new TypeError(\"glob options required\");if(this.withFileTypes=!!e.withFileTypes,this.signal=e.signal,this.follow=!!e.follow,this.dot=!!e.dot,this.dotRelative=!!e.dotRelative,this.nodir=!!e.nodir,this.mark=!!e.mark,e.cwd?(e.cwd instanceof URL||e.cwd.startsWith(\"file://\"))&&(e.cwd=Wi(e.cwd)):this.cwd=\"\",this.cwd=e.cwd||\"\",this.root=e.root,this.magicalBraces=!!e.magicalBraces,this.nobrace=!!e.nobrace,this.noext=!!e.noext,this.realpath=!!e.realpath,this.absolute=e.absolute,this.includeChildMatches=e.includeChildMatches!==!1,this.noglobstar=!!e.noglobstar,this.matchBase=!!e.matchBase,this.maxDepth=typeof e.maxDepth==\"number\"?e.maxDepth:1/0,this.stat=!!e.stat,this.ignore=e.ignore,this.withFileTypes&&this.absolute!==void 0)throw new Error(\"cannot set absolute and withFileTypes:true\");if(typeof t==\"string\"&&(t=[t]),this.windowsPathsNoEscape=!!e.windowsPathsNoEscape||e.allowWindowsEscape===!1,this.windowsPathsNoEscape&&(t=t.map(a=>a.replace(/\\\\/g,\"/\"))),this.matchBase){if(e.noglobstar)throw new TypeError(\"base matching requires globstar\");t=t.map(a=>a.includes(\"/\")?a:`./**/${a}`)}if(this.pattern=t,this.platform=e.platform||Pi,this.opts={...e,platform:this.platform},e.scurry){if(this.scurry=e.scurry,e.nocase!==void 0&&e.nocase!==e.scurry.nocase)throw new Error(\"nocase option contradicts provided scurry option\")}else{let a=e.platform===\"win32\"?it:e.platform===\"darwin\"?St:e.platform?rt:Xe;this.scurry=new a(this.cwd,{nocase:e.nocase,fs:e.fs})}this.nocase=this.scurry.nocase;let s=this.platform===\"darwin\"||this.platform===\"win32\",i={braceExpandMax:1e4,...e,dot:this.dot,matchBase:this.matchBase,nobrace:this.nobrace,nocase:this.nocase,nocaseMagicOnly:s,nocomment:!0,noext:this.noext,nonegate:!0,optimizationLevel:2,platform:this.platform,windowsPathsNoEscape:this.windowsPathsNoEscape,debug:!!this.opts.debug},r=this.pattern.map(a=>new D(a,i)),[o,h]=r.reduce((a,l)=>(a[0].push(...l.set),a[1].push(...l.globParts),a),[[],[]]);this.patterns=o.map((a,l)=>{let u=h[l];if(!u)throw new Error(\"invalid pattern object\");return new nt(a,u,0,this.platform)})}async walk(){return[...await new xt(this.patterns,this.scurry.cwd,{...this.opts,maxDepth:this.maxDepth!==1/0?this.maxDepth+this.scurry.cwd.depth():1/0,platform:this.platform,nocase:this.nocase,includeChildMatches:this.includeChildMatches}).walk()]}walkSync(){return[...new xt(this.patterns,this.scurry.cwd,{...this.opts,maxDepth:this.maxDepth!==1/0?this.maxDepth+this.scurry.cwd.depth():1/0,platform:this.platform,nocase:this.nocase,includeChildMatches:this.includeChildMatches}).walkSync()]}stream(){return new vt(this.patterns,this.scurry.cwd,{...this.opts,maxDepth:this.maxDepth!==1/0?this.maxDepth+this.scurry.cwd.depth():1/0,platform:this.platform,nocase:this.nocase,includeChildMatches:this.includeChildMatches}).stream()}streamSync(){return new vt(this.patterns,this.scurry.cwd,{...this.opts,maxDepth:this.maxDepth!==1/0?this.maxDepth+this.scurry.cwd.depth():1/0,platform:this.platform,nocase:this.nocase,includeChildMatches:this.includeChildMatches}).streamSync()}iterateSync(){return this.streamSync()[Symbol.iterator]()}[Symbol.iterator](){return this.iterateSync()}iterate(){return this.stream()[Symbol.asyncIterator]()}[Symbol.asyncIterator](){return this.iterate()}};var le=(n,t={})=>{Array.isArray(n)||(n=[n]);for(let e of n)if(new D(e,t).hasMagic())return!0;return!1};function Bt(n,t={}){return new I(n,t).streamSync()}function Qe(n,t={}){return new I(n,t).stream()}function ts(n,t={}){return new I(n,t).walkSync()}async function Je(n,t={}){return new I(n,t).walk()}function Ut(n,t={}){return new I(n,t).iterateSync()}function es(n,t={}){return new I(n,t).iterate()}var ji=Bt,Ii=Object.assign(Qe,{sync:Bt}),zi=Ut,Bi=Object.assign(es,{sync:Ut}),Ui=Object.assign(ts,{stream:Bt,iterate:Ut}),Ze=Object.assign(Je,{glob:Je,globSync:ts,sync:Ui,globStream:Qe,stream:Ii,globStreamSync:Bt,streamSync:ji,globIterate:es,iterate:Bi,globIterateSync:Ut,iterateSync:zi,Glob:I,hasMagic:le,escape:tt,unescape:W});Ze.glob=Ze;export{I as Glob,ot as Ignore,tt as escape,Ze as glob,es as globIterate,Ut as globIterateSync,Qe as globStream,Bt as globStreamSync,ts as globSync,le as hasMagic,Bi as iterate,zi as iterateSync,Ii as stream,ji as streamSync,Ui as sync,W as unescape};\n//# sourceMappingURL=index.min.js.map\n","export type DiffLine = { op: \" \" | \"+\" | \"-\"; text: string }\n\n// ponytail: O(n·m) LCS on the changed middle; fine for docs, swap for Myers if huge files show up.\nexport function lineDiff(before: string, after: string): DiffLine[] {\n const a = before.split(\"\\n\")\n const b = after.split(\"\\n\")\n let start = 0\n while (start < a.length && start < b.length && a[start] === b[start]) start++\n let endA = a.length\n let endB = b.length\n while (endA > start && endB > start && a[endA - 1] === b[endB - 1]) { endA--; endB-- }\n\n const x = a.slice(start, endA)\n const y = b.slice(start, endB)\n // lcs[i][j] = LCS length of x[i..] and y[j..]\n const lcs = Array.from({ length: x.length + 1 }, () => new Array<number>(y.length + 1).fill(0))\n for (let i = x.length - 1; i >= 0; i--) {\n for (let j = y.length - 1; j >= 0; j--) {\n lcs[i][j] = x[i] === y[j] ? lcs[i + 1][j + 1] + 1 : Math.max(lcs[i + 1][j], lcs[i][j + 1])\n }\n }\n\n const middle: DiffLine[] = []\n let i = 0\n let j = 0\n while (i < x.length || j < y.length) {\n if (i < x.length && j < y.length && x[i] === y[j]) { middle.push({ op: \" \", text: x[i] }); i++; j++ }\n else if (i < x.length && (j === y.length || lcs[i + 1][j] >= lcs[i][j + 1])) { middle.push({ op: \"-\", text: x[i] }); i++ }\n else { middle.push({ op: \"+\", text: y[j] }); j++ }\n }\n\n return [\n ...a.slice(0, start).map((text) => ({ op: \" \" as const, text })),\n ...middle,\n ...a.slice(endA).map((text) => ({ op: \" \" as const, text })),\n ]\n}\n\nconst CONTEXT = 2\n\n// Keep changed lines plus CONTEXT lines around them; collapse the rest into a count.\nexport function visibleHunks(lines: DiffLine[]): (DiffLine | number)[] {\n const keep = lines.map(() => false)\n lines.forEach((l, i) => {\n if (l.op === \" \") return\n for (let k = Math.max(0, i - CONTEXT); k <= Math.min(lines.length - 1, i + CONTEXT); k++) keep[k] = true\n })\n const out: (DiffLine | number)[] = []\n lines.forEach((l, i) => {\n if (keep[i]) out.push(l)\n else if (typeof out[out.length - 1] === \"number\") out[out.length - 1] = (out[out.length - 1] as number) + 1\n else out.push(1)\n })\n return out\n}\n\nexport type TextEdit = { old_string: string; new_string: string }\n\n// Same contract as Claude Code's Edit tool: each old_string must match exactly once, applied in order.\n// An empty old_string is only allowed on an empty/new file (write the first content).\nexport function applyEdits(text: string, edits: TextEdit[]): { content: string } | { error: string } {\n let content = text\n for (const [i, e] of edits.entries()) {\n if (typeof e?.old_string !== \"string\" || typeof e?.new_string !== \"string\") {\n return { error: `Edit ${i + 1}: old_string and new_string must be strings` }\n }\n if (e.old_string === \"\") {\n if (content !== \"\") return { error: `Edit ${i + 1}: empty old_string is only allowed for a new, empty doc` }\n content = e.new_string\n continue\n }\n const at = content.indexOf(e.old_string)\n if (at === -1) return { error: `Edit ${i + 1}: old_string not found in the doc` }\n if (content.indexOf(e.old_string, at + 1) !== -1) {\n return { error: `Edit ${i + 1}: old_string matches more than once; include more surrounding text` }\n }\n content = content.slice(0, at) + e.new_string + content.slice(at + e.old_string.length)\n }\n return { content }\n}\n","// Doc properties live in YAML frontmatter (`priority: P1`, `status: draft`) so agents reading the file see\n// them and they survive rename/move. Only flat `key: value` lines are properties; anything else in the\n// block (lists, nested maps) is kept byte-for-byte. Pure: no fs, no React.\n\nexport const PRIORITIES = ['P0', 'P1', 'P2', 'P3'] as const\nexport type Priority = (typeof PRIORITIES)[number]\n\nconst FRONTMATTER = /^---\\r?\\n([\\s\\S]*?)\\r?\\n?---[ \\t]*(?:\\r?\\n|$)/\nconst PROPERTY_LINE = /^([A-Za-z][\\w-]*):[ \\t]*(.*?)[ \\t]*$/\nexport const PROPERTY_KEY = /^[A-Za-z][\\w-]{0,39}$/\n\n/** \"P1\" / \"p1\" / \"high\"-free: a priority value, or null. Also used for `**Priority:**` meta lines. */\nexport function parsePriority(raw: string | null | undefined): Priority | null {\n const s = (raw ?? '').trim().replace(/^[\"']|[\"']$/g, '').toUpperCase()\n return (PRIORITIES as readonly string[]).includes(s) ? (s as Priority) : null\n}\n\n/** The leading `---` block, if any: its inner lines and total length. */\nfunction frontmatter(content: string): { inner: string; length: number } | null {\n const m = FRONTMATTER.exec(content)\n return m ? { inner: m[1], length: m[0].length } : null\n}\n\n/** Content without its frontmatter block, for rendering and stats. */\nexport function stripFrontmatter(content: string): string {\n const fm = frontmatter(content)\n return fm ? content.slice(fm.length).replace(/^\\r?\\n/, '') : content\n}\n\nfunction unquote(v: string): string {\n if (v.length >= 2 && v.startsWith('\"') && v.endsWith('\"')) return v.slice(1, -1).replace(/\\\\\"/g, '\"').replace(/\\\\\\\\/g, '\\\\')\n if (v.length >= 2 && v.startsWith(\"'\") && v.endsWith(\"'\")) return v.slice(1, -1).replace(/''/g, \"'\")\n return v\n}\n\n/** YAML-safe scalar: plain when it can't be misread, double-quoted otherwise. */\nfunction quote(v: string): string {\n return /^[\\w][\\w .,/()+-]*$/.test(v) && !/^(true|false|null|yes|no|~)$/i.test(v) ? v : `\"${v.replace(/\\\\/g, '\\\\\\\\').replace(/\"/g, '\\\\\"')}\"`\n}\n\n/** Flat `key: value` frontmatter entries, in file order. A key with no value (a list or map follows) is left out. */\nexport function docProperties(content: string): { key: string; value: string }[] {\n const fm = frontmatter(content)\n if (!fm) return []\n return fm.inner.split(/\\r?\\n/).flatMap((l) => {\n const m = PROPERTY_LINE.exec(l)\n return m && m[2] !== '' ? [{ key: m[1], value: unquote(m[2]) }] : []\n })\n}\n\nexport function docPriority(content: string): Priority | null {\n return parsePriority(docProperties(content).find((p) => p.key.toLowerCase() === 'priority')?.value)\n}\n\n/** Set (or remove with null) one property. Other lines and the body stay as they are; an existing key keeps its place, a new one goes last. */\nexport function setDocProperty(content: string, key: string, value: string | null): string {\n const fm = frontmatter(content)\n const nl = content.includes('\\r\\n') ? '\\r\\n' : '\\n'\n const line = value === null ? null : `${key}: ${quote(value.replace(/\\s+/g, ' ').trim())}`\n if (!fm) return line ? `---${nl}${line}${nl}---${nl}${nl}${content}` : content\n const lines = fm.inner.split(/\\r?\\n/).filter((l) => l !== '')\n const at = lines.findIndex((l) => PROPERTY_LINE.exec(l)?.[1].toLowerCase() === key.toLowerCase())\n // `tags:` followed by list items: replacing the line would orphan them\n if (at >= 0 && PROPERTY_LINE.exec(lines[at])?.[2] === '') throw new Error(`\"${key}\" holds a list or map; edit it in the file`)\n if (at >= 0) {\n if (line) lines[at] = line\n else lines.splice(at, 1)\n } else if (line) lines.push(line)\n const body = content.slice(fm.length)\n // Dropping the last key drops the block and the blank line this module put after it\n if (lines.length === 0) return body.replace(/^\\r?\\n/, '')\n return `---${nl}${lines.join(nl)}${nl}---${nl}${body}`\n}\n\nexport function setDocPriority(content: string, priority: Priority | null): string {\n return setDocProperty(content, 'priority', priority)\n}\n\n/** Sort key: P0 first, unset last. */\nexport function priorityRank(p: Priority | null | undefined): number {\n return p ? PRIORITIES.indexOf(p) : PRIORITIES.length\n}\n","// Who is in charge of a task / epic (R055): `**Owner:** human` or `**Owner:** ai:<agent>`.\n// Pure (no React, no fs). Self-check: `node src/lib/owner.check.mts`.\n\nexport type OwnerKind = \"human\" | \"ai\" | \"none\"\n\nconst KNOWN_AGENTS = [\"claude\", \"cursor\", \"codex\", \"copilot\", \"gemini\", \"windsurf\", \"cline\", \"opencode\"]\n\n/** \"human\" | \"ai:<agent>\" (lowercase), or null for empty / \"—\" / anything else. A bare \"ai\" becomes \"ai:agent\". */\nexport function parseOwner(raw: string | null | undefined): string | null {\n const v = (raw ?? \"\").trim().toLowerCase()\n if (v === \"human\") return \"human\"\n const m = v.match(/^ai(?::\\s*([a-z0-9._-]+))?$/)\n return m ? `ai:${m[1] ?? \"agent\"}` : null\n}\n\nexport function ownerKind(owner: string | null): OwnerKind {\n return owner === \"human\" ? \"human\" : owner?.startsWith(\"ai:\") ? \"ai\" : \"none\"\n}\n\n/** \"Human\", \"claude\", \"No owner\". */\nexport function ownerLabel(owner: string | null): string {\n return owner === \"human\" ? \"Human\" : owner?.startsWith(\"ai:\") ? owner.slice(3) : \"No owner\"\n}\n\n/** Agent name from an MCP client's User-Agent (\"claude-code/2.1\" → \"claude\"); \"agent\" when unknown. */\nexport function agentFromUserAgent(ua: string | null | undefined): string {\n const s = (ua ?? \"\").toLowerCase()\n return KNOWN_AGENTS.find((a) => s.includes(a)) ?? \"agent\"\n}\n","/**\n * src/lib/sessions.ts\n * Pure grouping of the activity log into agent/human sessions (no fs). Used by /api/sessions and /api/mcp.\n * Stamped events group by `sessionId`; legacy events (no sessionId) split on a per-actor idle gap or `session_start`.\n */\nimport type { ActivityEvent, TaskStatus } from './core'\n\nexport const SESSION_GAP_MS = 30 * 60 * 1000\n\nexport interface Session {\n id: string\n actor: ActivityEvent['actor']\n start: string\n end: string\n eventCount: number\n eventIds: string[]\n tasks: { id: string; lastStatus: TaskStatus }[]\n docs: string[]\n decisions: string[]\n memoryUpdated: boolean\n headline: string\n}\n\n// Doc path a change event carries; null for events that don't change a doc (doc_read included).\nfunction changedDoc(e: ActivityEvent): string | null {\n switch (e.type) {\n case 'doc_created': return e.detail ?? e.title.replace(/^Created: /, '')\n case 'doc_deleted': return e.title.replace(/^Deleted /, '')\n case 'doc_renamed': return e.title.split(' → ')[1] ?? null\n default: return null\n }\n}\n\nconst plural = (n: number, word: string) => `${n} ${word}${n === 1 ? '' : 's'}`\n\nfunction summarize(id: string, events: ActivityEvent[]): Session {\n const tasks = new Map<string, TaskStatus>()\n const docs = new Set<string>()\n const decisions: string[] = []\n let memoryUpdated = false\n let roadmapEdits = 0\n for (const e of events) {\n if (e.type === 'task_updated' && e.taskId && e.taskStatus) tasks.set(e.taskId, e.taskStatus)\n const doc = changedDoc(e)\n if (doc) docs.add(doc)\n if (e.type === 'decision_logged') decisions.push(e.title)\n if (e.type === 'memory_updated') memoryUpdated = true\n if (e.type === 'roadmap_updated') roadmapEdits++\n }\n const taskList = [...tasks].map(([tid, lastStatus]) => ({ id: tid, lastStatus }))\n const done = taskList.filter(t => t.lastStatus === 'done').length\n const parts = [\n taskList.length ? `${plural(taskList.length, 'task')} moved${done ? ` (${done} done)` : ''}` : '',\n docs.size ? `${plural(docs.size, 'doc')} changed` : '',\n decisions.length ? plural(decisions.length, 'ADR') : '',\n roadmapEdits ? plural(roadmapEdits, 'roadmap edit') : '',\n memoryUpdated ? 'memory updated' : '',\n ].filter(Boolean)\n return {\n id,\n actor: events[0].actor,\n start: events[0].timestamp,\n end: events[events.length - 1].timestamp,\n eventCount: events.length,\n eventIds: events.map(e => e.id),\n tasks: taskList,\n docs: [...docs],\n decisions,\n memoryUpdated,\n headline: parts.join(' · ') || plural(events.length, 'event'),\n }\n}\n\n/** Events may come in any order (the log is newest-first). Returns sessions newest first. */\nexport function groupSessions(events: ActivityEvent[], opts: { gapMs?: number } = {}): Session[] {\n const gapMs = opts.gapMs ?? SESSION_GAP_MS\n const chrono = [...events].sort((a, b) => a.timestamp.localeCompare(b.timestamp))\n const groups = new Map<string, ActivityEvent[]>()\n const legacy = new Map<string, { id: string; lastAt: number }>() // per actor\n for (const e of chrono) {\n let id = e.sessionId\n if (!id) {\n const at = Date.parse(e.timestamp)\n let cur = legacy.get(e.actor)\n if (!cur || e.type === 'session_start' || at - cur.lastAt > gapMs) {\n cur = { id: `legacy_${e.id}`, lastAt: at }\n legacy.set(e.actor, cur)\n }\n cur.lastAt = at\n id = cur.id\n }\n const g = groups.get(id)\n if (g) g.push(e)\n else groups.set(id, [e])\n }\n return [...groups]\n .map(([id, evs]) => summarize(id, evs))\n .sort((a, b) => b.start.localeCompare(a.start))\n}\n\nexport function sessionDuration(s: Pick<Session, 'start' | 'end'>): string {\n const min = Math.round((Date.parse(s.end) - Date.parse(s.start)) / 60_000)\n if (min < 1) return '<1m'\n return min < 60 ? `${min}m` : `${Math.floor(min / 60)}h ${min % 60}m`\n}\n\n/** A session still receiving events (last one within `windowMs`). */\nexport function isLive(s: Pick<Session, 'end'>, now = Date.now(), windowMs = 5 * 60 * 1000): boolean {\n return now - Date.parse(s.end) < windowMs\n}\n\n/** Totals for the \"catch up\" strip: sessions that ended at or after `sinceMs`. */\nexport function catchUp(sessions: Session[], sinceMs: number) {\n const recent = sessions.filter(s => Date.parse(s.end) >= sinceMs)\n return {\n sessions: recent.length,\n tasksDone: new Set(recent.flatMap(s => s.tasks.filter(t => t.lastStatus === 'done').map(t => t.id))).size,\n docs: new Set(recent.flatMap(s => s.docs)).size,\n decisions: recent.reduce((n, s) => n + s.decisions.length, 0),\n }\n}\n\nexport function sessionsForTask(sessions: Session[], taskId: string): Session[] {\n return sessions.filter(s => s.tasks.some(t => t.id === taskId))\n}\n","// Automatic task dates (R055): due filled from the epic or the size, Started / Done stamped on moves.\n// Pure (no React, no fs). Dates are local calendar strings \"YYYY-MM-DD\", never instants.\n// Self-check: `node src/lib/auto-dates.check.mts`.\n\nexport type SizeDays = Record<string, number>\n\n/** Calendar days of work per size letter; override with `tasks.sizeDays` in .vibedoc/settings.json. */\nexport const DEFAULT_SIZE_DAYS: SizeDays = { XS: 1, S: 1, M: 3, L: 7, XL: 14 }\n\n/** \"2026-10-01\" + 3 → \"2026-10-04\" (calendar math, no time zone involved). */\nexport function addDays(date: string, days: number): string {\n const [y, m, d] = date.split(\"-\").map(Number)\n return new Date(Date.UTC(y, m - 1, d + days)).toISOString().slice(0, 10)\n}\n\n/** \"M (2–3 hrs)\" → \"M\"; \"—\" / \"\" → null. */\nexport function sizeLetter(size: string): string | null {\n return size.trim().match(/^(XS|XL|S|M|L)\\b/i)?.[1].toUpperCase() ?? null\n}\n\nexport interface TaskDates {\n due: string | null\n started: string | null\n done: string | null\n}\n\n/**\n * Dates after a move to `status` on `today`. Only fills what is empty, so a hand-set due always wins:\n * - in-progress: Started = today (first start only); no due yet → Started + the size's days\n * - done: Done = today\n * - back to anything else from done: Done is cleared (Started stays)\n */\nexport function datesOnMove(\n status: string, current: TaskDates, size: string, today: string, sizeDays: SizeDays = DEFAULT_SIZE_DAYS,\n): TaskDates {\n const next = { ...current }\n if (status === \"in-progress\") {\n next.started ??= today\n const days = sizeDays[sizeLetter(size) ?? \"\"]\n if (!next.due && typeof days === \"number\" && days >= 0) next.due = addDays(next.started, days)\n }\n if (status === \"done\") next.done = today\n else if (next.done) next.done = null\n return next\n}\n","// Task statuses (R055): the seven built-ins plus a project's own, each mapped onto a built-in category.\n// Logic (queue, health, dependencies, board buckets) reads the category; the UI reads label and color.\n// Files store the status id (`**Status:** 👀 Qa`), so renaming a label never touches task files.\n// Pure (no React, no fs). Self-check: `node src/lib/statuses.check.mts`.\n\nimport type { TaskStatus } from \"./core\"\n\nexport const BUILTIN_STATUSES: TaskStatus[] = [\"todo\", \"in-progress\", \"review\", \"blocked\", \"paused\", \"done\", \"cancelled\"]\n\nexport const STATUS_ICONS: Record<TaskStatus, string> = {\n todo: \"📋\",\n \"in-progress\": \"🔨\",\n review: \"👀\",\n blocked: \"🚫\",\n paused: \"⏸️\",\n done: \"✅\",\n cancelled: \"❌\",\n}\n\nexport const STATUS_ALIASES: Record<string, TaskStatus> = {\n ready: \"todo\", planned: \"todo\", \"not started\": \"todo\",\n wip: \"in-progress\", doing: \"in-progress\", active: \"in-progress\", start: \"in-progress\", started: \"in-progress\",\n complete: \"done\", completed: \"done\", finished: \"done\", finish: \"done\",\n block: \"blocked\",\n \"on hold\": \"paused\", \"on-hold\": \"paused\", pause: \"paused\", hold: \"paused\",\n \"in review\": \"review\", reviewing: \"review\", \"needs review\": \"review\",\n cancel: \"cancelled\", skip: \"cancelled\",\n}\n\n/** Named colors only: Tailwind generates classes it sees literally, so the UI maps these names to fixed classes. */\nexport const STATUS_COLORS = [\"gray\", \"amber\", \"accent\", \"red\", \"slate\", \"teal\", \"blue\", \"pink\", \"green\", \"orange\"] as const\nexport type StatusColor = (typeof STATUS_COLORS)[number]\n\nexport interface StatusDef {\n /** Built-in id, or a custom slug ([a-z0-9-]) */\n id: string\n label: string\n color: StatusColor\n category: TaskStatus\n}\n\nexport const DEFAULT_STATUSES: StatusDef[] = [\n { id: \"todo\", label: \"Todo\", color: \"gray\", category: \"todo\" },\n { id: \"in-progress\", label: \"In progress\", color: \"amber\", category: \"in-progress\" },\n { id: \"review\", label: \"Review\", color: \"accent\", category: \"review\" },\n { id: \"blocked\", label: \"Blocked\", color: \"red\", category: \"blocked\" },\n { id: \"paused\", label: \"Paused\", color: \"slate\", category: \"paused\" },\n { id: \"done\", label: \"Done\", color: \"teal\", category: \"done\" },\n { id: \"cancelled\", label: \"Cancelled\", color: \"gray\", category: \"cancelled\" },\n]\n\nconst isBuiltin = (s: string): s is TaskStatus => (BUILTIN_STATUSES as string[]).includes(s)\n\n/** Why an id can't be a custom status, or null when it can. */\nexport function invalidStatusId(id: string): string | null {\n if (!/^[a-z0-9][a-z0-9-]{0,39}$/.test(id)) return \"use lowercase letters, digits and dashes\"\n if (isBuiltin(id) || id in STATUS_ALIASES || id.replace(/-/g, \" \") in STATUS_ALIASES) return `\"${id}\" already means a built-in status`\n return null\n}\n\n/**\n * The project's statuses: every built-in once (its label / color / position may be customised, its category\n * can't), plus valid custom ones. Anything malformed in settings is dropped, never thrown.\n */\nexport function statusDefs(fromSettings: unknown): StatusDef[] {\n if (!Array.isArray(fromSettings)) return DEFAULT_STATUSES\n const out: StatusDef[] = []\n for (const raw of fromSettings) {\n const r = raw as Partial<StatusDef> | null\n const id = typeof r?.id === \"string\" ? r.id.trim().toLowerCase() : \"\"\n if (!id || out.some((d) => d.id === id)) continue\n const builtin = isBuiltin(id)\n const category = builtin ? id : r?.category\n if (!category || !isBuiltin(category) || (!builtin && invalidStatusId(id))) continue\n const base = DEFAULT_STATUSES.find((d) => d.id === (builtin ? id : category))\n out.push({\n id,\n label: typeof r?.label === \"string\" && r.label.trim() ? r.label.trim() : base?.label ?? id,\n color: STATUS_COLORS.includes(r?.color as StatusColor) ? (r?.color as StatusColor) : base?.color ?? \"gray\",\n category,\n })\n }\n // built-ins that settings left out keep their default place at the end\n for (const d of DEFAULT_STATUSES) if (!out.some((o) => o.id === d.id)) out.push(d)\n return out\n}\n\nexport interface ResolvedStatus {\n status: TaskStatus\n /** Set only for a custom status */\n customStatus?: string\n /** The raw value matched nothing (read as todo) */\n unknown?: boolean\n}\n\n/** A `**Status:**` value (\"👀 Qa\", \"In review\", \"done\") → category + custom id. */\nexport function resolveStatus(raw: string, defs: StatusDef[] = DEFAULT_STATUSES): ResolvedStatus {\n const s = raw.toLowerCase().replace(/[📋🔨👀✅🚫❌⏸️]/g, \"\").trim()\n const key: string = STATUS_ALIASES[s] ?? s\n if (isBuiltin(key)) return { status: key }\n const custom = defs.find((d) => d.id === key || d.id === key.replace(/\\s+/g, \"-\"))\n if (custom && !isBuiltin(custom.id)) return { status: custom.category, customStatus: custom.id }\n return { status: \"todo\", unknown: true }\n}\n\n/** What goes after `**Status:** ` for a status key: built-ins exactly as always (\"🔨 In-progress\"), custom ids alike (\"👀 Qa\"). */\nexport function statusLine(key: string, defs: StatusDef[] = DEFAULT_STATUSES): string {\n const { status, customStatus } = resolveStatus(key, defs)\n const id = customStatus ?? status\n return `${STATUS_ICONS[status]} ${id.charAt(0).toUpperCase()}${id.slice(1)}`\n}\n\n/** The key a task shows under: its custom status, else its category. */\nexport const displayStatus = (t: { status: TaskStatus; customStatus?: string }) => t.customStatus ?? t.status\n","// Review history on a task (R043): a `## Review` section at the end of the task file, one `### ` entry per outcome.\n// Pure (no fs): core.ts writes the file; `node src/lib/review.check.mts` runs the self-check.\n//\n// ## Review\n// ### 2026-10-01T11:00:00Z — changes requested\n// The plan card doesn't scroll when there are 10+ tasks.\n// ### 2026-10-02T09:30:00Z — approved\n\nexport const REVIEW_HEADING = \"## Review\"\n\nexport type ReviewOutcome = \"approved\" | \"changes requested\"\n\nexport interface ReviewEntry {\n at: string\n outcome: ReviewOutcome\n note: string\n}\n\nconst ENTRY = /^###\\s+(\\S+)\\s+—\\s+(approved|changes requested)\\s*$/\n\n/** Lines inside ``` fences, so a quoted example is never taken for the real section. */\nfunction fenced(lines: string[]): boolean[] {\n let inFence = false\n return lines.map((l) => {\n if (/^\\s*```/.test(l)) { inFence = !inFence; return true }\n return inFence\n })\n}\n\nfunction sectionRange(lines: string[]): [number, number] | null {\n const code = fenced(lines)\n const start = lines.findIndex((l, i) => !code[i] && l.trim() === REVIEW_HEADING)\n if (start < 0) return null\n const next = lines.findIndex((l, i) => i > start && !code[i] && /^##\\s/.test(l))\n return [start, next < 0 ? lines.length : next]\n}\n\n/** Every review entry, oldest first. */\nexport function reviewHistory(raw: string): ReviewEntry[] {\n const lines = raw.split(\"\\n\")\n const range = sectionRange(lines)\n if (!range) return []\n const entries: ReviewEntry[] = []\n for (const line of lines.slice(range[0] + 1, range[1])) {\n const m = line.match(ENTRY)\n if (m) entries.push({ at: m[1], outcome: m[2] as ReviewOutcome, note: \"\" })\n else if (entries.length) {\n const last = entries[entries.length - 1]\n last.note = last.note ? `${last.note}\\n${line}` : line\n }\n }\n return entries.map((e) => ({ ...e, note: e.note.trim() }))\n}\n\nexport function latestReview(raw: string): ReviewEntry | null {\n const all = reviewHistory(raw)\n return all[all.length - 1] ?? null\n}\n\n/**\n * Add an entry to the `## Review` section (created at the end of the file if missing; an existing one keeps its\n * place and grows). A note is required for \"changes requested\".\n */\nexport function appendReviewEntry(raw: string, outcome: ReviewOutcome, note: string, at: string): string {\n const text = note.trim()\n if (outcome === \"changes requested\" && !text) throw new Error(\"A note is required to send a task back\")\n // \"## \" at the start of a note line would end the section early\n const body = text.split(\"\\n\").map((l) => (/^#{1,3}\\s/.test(l) ? `\\\\${l}` : l)).join(\"\\n\")\n const entry = [`### ${at} — ${outcome}`, ...(body ? [body] : [])]\n const lines = raw.split(\"\\n\")\n const range = sectionRange(lines)\n if (!range) return `${raw.replace(/\\s+$/, \"\")}\\n\\n${REVIEW_HEADING}\\n${entry.join(\"\\n\")}\\n`\n // Insert after the section's last non-empty line, before the blank lines that separate it from what follows\n let end = range[1]\n while (end > range[0] + 1 && !lines[end - 1].trim()) end--\n const out = [...lines.slice(0, end), ...entry, ...lines.slice(end)]\n const joined = out.join(\"\\n\")\n return range[1] === lines.length ? `${joined.replace(/\\s+$/, \"\")}\\n` : joined\n}\n","// Manual test report on a task (R043): a `## Manual tests` checklist section at the end of the task file.\n// Pure (no fs): core.ts reads/writes the file; `node src/lib/manual-tests.check.mts` runs the self-check.\n//\n// ## Manual tests\n// _2026-10-01 — ai_\n// ### Steps\n// - [ ] Open /roadmap, click \"Break down\" on R043 → a chat opens titled with the epic\n// ### Regression risk\n// - [ ] Dragging a card between columns still works\n\nexport const MANUAL_TESTS_HEADING = \"## Manual tests\"\n\nexport type ManualTestGroup = \"steps\" | \"regression\"\n\nexport interface ManualTestItem {\n text: string\n checked: boolean\n group: ManualTestGroup\n /** Position among all checklist items in the section (T061 toggles by this) */\n index: number\n}\n\nexport interface ManualTests {\n items: ManualTestItem[]\n total: number\n done: number\n /** From the `_YYYY-MM-DD — actor_` line; null if missing */\n date: string | null\n}\n\nconst ITEM = /^\\s*[-*]\\s+\\[( |x|X)\\]\\s+(.*)$/\nconst BULLET = /^\\s*[-*]\\s+(.*)$/\n\n/** Lines inside ``` fences, so an example section quoted in a task's spec is never taken for the real one. */\nfunction fenced(lines: string[]): boolean[] {\n let inFence = false\n return lines.map((l) => {\n if (/^\\s*```/.test(l)) { inFence = !inFence; return true }\n return inFence\n })\n}\n\n/** [start, end) line range of the section: its heading up to the next `## ` heading or the end of the file. */\nfunction sectionRange(lines: string[]): [number, number] | null {\n const code = fenced(lines)\n const start = lines.findIndex((l, i) => !code[i] && l.trim() === MANUAL_TESTS_HEADING)\n if (start < 0) return null\n const next = lines.findIndex((l, i) => i > start && !code[i] && /^##\\s/.test(l))\n return [start, next < 0 ? lines.length : next]\n}\n\n/**\n * The report body as a checklist: `### ` group headings kept, every other non-empty line becomes `- [ ] …`\n * (plain text and plain bullets alike). Items before any heading go under `### Steps`.\n */\nexport function normalizeReport(report: string): string {\n const out: string[] = []\n for (const raw of report.replace(/\\r\\n/g, \"\\n\").split(\"\\n\")) {\n const line = raw.trimEnd()\n if (!line.trim()) continue\n if (/^\\s*###\\s/.test(line)) { out.push(line.trim()); continue }\n if (/^\\s*##?\\s/.test(line)) continue // a stray \"## Manual tests\" or H1 from the agent\n const item = line.match(ITEM)\n const text = item ? item[2] : (line.match(BULLET)?.[1] ?? line.trim())\n if (!out.some((l) => l.startsWith(\"### \"))) out.push(\"### Steps\")\n out.push(`- [${item && item[1] !== \" \" ? \"x\" : \" \"}] ${text.trim()}`)\n }\n return out.join(\"\\n\")\n}\n\n/** Write the report as the task's `## Manual tests` section, replacing an older one (old ticks no longer apply). */\nexport function setManualTests(raw: string, report: string, actor: \"ai\" | \"human\", date: string): string {\n const body = normalizeReport(report)\n if (!body) throw new Error(\"manualTests is empty: give at least one checklist item\")\n const lines = raw.split(\"\\n\")\n const range = sectionRange(lines)\n const rest = range ? [...lines.slice(0, range[0]), ...lines.slice(range[1])] : lines\n const kept = rest.join(\"\\n\").replace(/\\s+$/, \"\")\n return `${kept}\\n\\n${MANUAL_TESTS_HEADING}\\n_${date} — ${actor}_\\n${body}\\n`\n}\n\n/** The checklist in a task file, or null when it has no `## Manual tests` section (or the section has no items). */\nexport function parseManualTests(raw: string): ManualTests | null {\n const lines = raw.split(\"\\n\")\n const range = sectionRange(lines)\n if (!range) return null\n const items: ManualTestItem[] = []\n let group: ManualTestGroup = \"steps\"\n let date: string | null = null\n for (const line of lines.slice(range[0] + 1, range[1])) {\n const stamp = line.match(/^_(\\d{4}-\\d{2}-\\d{2})\\b/)\n if (stamp && !date && !items.length) { date = stamp[1]; continue }\n if (/^\\s*###\\s/.test(line)) { group = /^\\s*###\\s+regression/i.test(line) ? \"regression\" : \"steps\"; continue }\n const m = line.match(ITEM)\n if (m) items.push({ text: m[2].trim(), checked: m[1] !== \" \", group, index: items.length })\n }\n if (!items.length) return null\n return { items, total: items.length, done: items.filter((i) => i.checked).length, date }\n}\n\n/** Tick or untick the `index`th checklist item of the `## Manual tests` section (file order), nothing else. */\nexport function toggleManualTest(raw: string, index: number, checked: boolean): string {\n const lines = raw.split(\"\\n\")\n const range = sectionRange(lines)\n if (!range) throw new RangeError(\"This task has no manual tests\")\n let n = 0\n for (let i = range[0] + 1; i < range[1]; i++) {\n if (!ITEM.test(lines[i])) continue\n if (n++ === index) {\n lines[i] = lines[i].replace(/\\[( |x|X)\\]/, checked ? \"[x]\" : \"[ ]\")\n return lines.join(\"\\n\")\n }\n }\n throw new RangeError(`No manual test item ${index} (the task has ${n})`)\n}\n","// Pure next-task picker for an epic's work queue (no fs). Self-check: node src/lib/work-queue.check.mts\nimport type { RoadmapItem, Task } from './core'\n\nexport type QueueTask = Pick<Task, 'id' | 'status' | 'dependsOn'>\nexport type QueueResult =\n | { kind: 'ready'; taskId: string }\n | { kind: 'finished' }\n // needsHuman: no remaining task can move without someone unblocking or creating a task\n | { kind: 'waiting'; waiting: { taskId: string; reason: string }[]; needsHuman: boolean }\n\n/** Every `T\\d+` in a free-text \"Depends on\" line: \"T008, T009 (x)\" → [\"T008\",\"T009\"]. */\nexport function depIds(dependsOn: string): string[] {\n return [...new Set((dependsOn.match(/\\bT\\d+\\b/gi) ?? []).map(d => d.toUpperCase()))]\n}\n\nconst settled = (s: Task['status']) => s === 'done' || s === 'cancelled'\n\nexport function pickNextTask(epic: RoadmapItem, tasks: QueueTask[]): QueueResult {\n const byId = new Map(tasks.map(t => [t.id, t]))\n const linked = epic.tasks.map(id => byId.get(id)).filter((t): t is QueueTask => !!t)\n const unmet = (t: QueueTask) => depIds(t.dependsOn).filter(d => {\n const dep = byId.get(d)\n return !dep || !settled(dep.status)\n })\n\n for (const t of linked) {\n if (t.status === 'todo' && !unmet(t).length) return { kind: 'ready', taskId: t.id }\n }\n if (linked.every(t => settled(t.status))) return { kind: 'finished' }\n\n // Can this task still move without a human? in-progress/settled yes; blocked/paused/review/missing no\n // (review waits for someone to approve or send it back, R043);\n // todo only if it's in this epic (the queue never hands out outside tasks) and every unmet dep can.\n // Cycles count as stuck.\n const inEpic = new Set(epic.tasks)\n const memo = new Map<string, boolean>()\n const canMove = (id: string): boolean => {\n if (memo.has(id)) return memo.get(id) ?? false\n memo.set(id, false)\n const t = byId.get(id)\n const ok = !!t && t.status !== 'blocked' && t.status !== 'paused' && t.status !== 'review' && (t.status !== 'todo' || (inEpic.has(id) && unmet(t).every(canMove)))\n memo.set(id, ok)\n return ok\n }\n\n const waiting: { taskId: string; reason: string }[] = []\n for (const id of epic.tasks) {\n const t = byId.get(id)\n if (!t) waiting.push({ taskId: id, reason: `${id} has no task file` })\n else if (t.status === 'in-progress') waiting.push({ taskId: id, reason: `${id} is in progress (claimed)` })\n else if (t.status === 'blocked') waiting.push({ taskId: id, reason: `${id} is blocked` })\n else if (t.status === 'paused') waiting.push({ taskId: id, reason: `${id} is paused — needs a human to resume it` })\n else if (t.status === 'review') waiting.push({ taskId: id, reason: `${id} in review — needs a human` })\n else if (t.status === 'todo') {\n const deps = unmet(t).map(d => `${d} (${byId.get(d)?.status ?? 'missing'})`)\n waiting.push({ taskId: id, reason: `${id} waits on ${deps.join(', ')}` })\n }\n }\n return { kind: 'waiting', waiting, needsHuman: waiting.every(w => !canMove(w.taskId)) }\n}\n","/**\n * src/lib/roadmap-import.ts\n * Pure (no fs): draft a roadmap for a project that has none, from ROADMAP.md, from its tasks, or a starter.\n * core.ts `generateRoadmap()` assigns ids and writes the files.\n */\n\nimport type { RoadmapStatus, Task } from './core'\n\nexport interface RoadmapDraft {\n key: string\n title: string\n parent: string | null // key of the parent draft; null = horizon\n status: RoadmapStatus\n tasks: string[]\n body: string\n}\n\nexport type RoadmapSource = 'roadmap-md' | 'tasks' | 'starter'\n\nconst SHIPPED = /\\b(shipped|done|released|complete[d]?)\\b/i\nconst MAX_TITLE = 80\n\nfunction plain(s: string): string {\n return s\n .replace(/\\[([^\\]]+)\\]\\([^)]*\\)/g, '$1') // links\n .replace(/[*_`]/g, '')\n .replace(/\\s+/g, ' ')\n .trim()\n}\n\nfunction clip(s: string): string {\n return s.length > MAX_TITLE ? `${s.slice(0, MAX_TITLE - 1).trimEnd()}…` : s\n}\n\nfunction rollUp(statuses: RoadmapStatus[]): RoadmapStatus {\n if (statuses.length && statuses.every(s => s === 'done')) return 'done'\n if (statuses.some(s => s !== 'planned')) return 'in-progress'\n return 'planned'\n}\n\n/** `## Section` with top-level bullets → horizon + features. Sections without bullets are skipped. */\nexport function roadmapFromMarkdown(md: string): RoadmapDraft[] {\n const out: RoadmapDraft[] = []\n let horizon: RoadmapDraft | null = null\n let intro: string[] = []\n let feature: RoadmapDraft | null = null\n let kids = 0\n\n const closeHorizon = () => {\n if (horizon && kids > 0) {\n horizon.body = intro.join(' ').trim()\n const own = out.filter(d => d.parent === horizon?.key).map(d => d.status)\n if (horizon.status !== 'done') horizon.status = rollUp(own)\n } else if (horizon) {\n // no bullets: drop the heading\n out.splice(out.indexOf(horizon), 1)\n }\n horizon = null\n feature = null\n intro = []\n kids = 0\n }\n\n for (const line of md.split('\\n')) {\n const h2 = line.match(/^##\\s+(.+?)\\s*#*\\s*$/)\n if (h2) {\n closeHorizon()\n const title = clip(plain(h2[1]))\n horizon = { key: `h${out.length}`, title, parent: null, status: SHIPPED.test(title) ? 'done' : 'planned', tasks: [], body: '' }\n out.push(horizon)\n continue\n }\n if (!horizon) continue\n if (/^#/.test(line)) { closeHorizon(); continue } // H1 / H3+ ends the section\n\n const bullet = line.match(/^[-*]\\s+(?:\\[([ xX])\\]\\s+)?(.*)$/)\n if (bullet) {\n const text = bullet[2]\n const named = text.match(/^\\*\\*(.+?)\\*\\*\\s*(?:[—–:-]\\s*)?(.*)$/)\n const title = clip(plain(named ? named[1] : text))\n if (!title) continue\n const status: RoadmapStatus = bullet[1]\n ? (bullet[1].toLowerCase() === 'x' ? 'done' : 'planned')\n : horizon.status === 'done' ? 'done' : 'planned'\n feature = { key: `f${out.length}`, title, parent: horizon.key, status, tasks: [], body: named ? named[2].trim() : '' }\n out.push(feature)\n kids++\n continue\n }\n\n const cont = line.match(/^\\s+(\\S.*)$/)\n if (feature && cont) {\n feature.body = [feature.body, cont[1].replace(/^[-*]\\s+/, '- ')].filter(Boolean).join('\\n')\n } else if (!feature && line.trim() && !/^-{3,}$/.test(line.trim())) {\n intro.push(line.trim())\n }\n }\n closeHorizon()\n return out\n}\n\nconst phaseRank = (p: string) => {\n const n = parseFloat(p)\n return Number.isFinite(n) ? n : Infinity\n}\n\n/** One horizon per task phase, one feature per (non-cancelled) task. */\nexport function roadmapFromTasks(tasks: Pick<Task, 'id' | 'title' | 'status' | 'phase'>[]): RoadmapDraft[] {\n const groups = new Map<string, typeof tasks>()\n for (const t of tasks) {\n if (t.status === 'cancelled') continue\n const phase = plain(t.phase || '').replace(/^—$/, '') || 'Unphased'\n groups.set(phase, [...(groups.get(phase) ?? []), t])\n }\n const phases = [...groups.keys()].sort((a, b) => phaseRank(a) - phaseRank(b) || a.localeCompare(b))\n\n const out: RoadmapDraft[] = []\n for (const phase of phases) {\n const key = `h${out.length}`\n const features = (groups.get(phase) ?? []).map((t): RoadmapDraft => ({\n key: `f${t.id}`,\n title: clip(t.title),\n parent: key,\n status: t.status === 'done' ? 'done' : t.status === 'in-progress' ? 'in-progress' : 'planned',\n tasks: [t.id],\n body: '',\n }))\n out.push({ key, title: clip(phase), parent: null, status: rollUp(features.map(f => f.status)), tasks: [], body: '' }, ...features)\n }\n return out\n}\n\nexport function starterRoadmap(): RoadmapDraft[] {\n const h = (key: string, title: string, status: RoadmapStatus, body: string): RoadmapDraft =>\n ({ key, title, parent: null, status, tasks: [], body })\n return [\n h('shipped', 'Shipped', 'done', 'What is already live.'),\n h('now', 'Now', 'planned', 'What we are building right now.'),\n h('next', 'Next', 'planned', 'Planned once the current work ships.'),\n h('later', 'Later', 'planned', 'Ideas — not committed.'),\n ]\n}\n","// Pure plan model for \"plan from the chat\": the agent proposes, the user reviews, the server applies.\n// No fs here; core.applyPlan() does the writing. Self-check: node src/lib/plan.check.mts\nimport type { RoadmapItem, RoadmapStatus } from './core'\n\nexport interface PlanTask {\n key: string // stable within the plan, e.g. \"t1\"; becomes a T id on apply\n title: string\n size?: string // \"S (~1 hr)\" | \"M (2–3 hrs)\" | \"L (half day)\"\n dependsOn?: string[] // keys in this plan, or existing task ids (\"T030\")\n due?: string // YYYY-MM-DD\n body: string // full markdown below the meta block: Goal, Context, Scope, Files, …\n}\nexport interface PlanHorizon { key: string; title: string; body?: string }\nexport interface PlanEpic { key: string; title: string; parent: string; status?: RoadmapStatus; body: string } // parent: existing horizon id or a horizon key\nexport interface PlanNewEpic { title: string; parent: string; body: string } // parent: existing horizon id\n/** breakdown: exactly one of `epic` (existing) or `newEpic`, or neither (loose tasks, no Phase). */\nexport type Plan =\n | { kind: 'breakdown'; epic?: string; newEpic?: PlanNewEpic; tasks: PlanTask[] }\n | { kind: 'roadmap'; horizons: PlanHorizon[]; epics: PlanEpic[] }\n\nexport interface PlanContext { roadmap: RoadmapItem[]; taskIds: string[] }\n\n/** A real calendar date \"YYYY-MM-DD\" (rejects 2026-02-30), else null. Same rule as core's parseDue. */\nfunction isDate(raw: string): boolean {\n const m = raw.match(/^(\\d{4})-(\\d{2})-(\\d{2})$/)\n if (!m) return false\n return new Date(Date.UTC(+m[1], +m[2] - 1, +m[3])).toISOString().slice(0, 10) === raw\n}\n\nconst isObj = (v: unknown): v is Record<string, unknown> => !!v && typeof v === 'object' && !Array.isArray(v)\nconst str = (v: unknown) => (typeof v === 'string' ? v.trim() : '')\n\n/** Where a breakdown's tasks go, for one-line summaries: \"R002\", `new epic \"X\"`, or \"no epic\". */\nexport function planTarget(plan: Extract<Plan, { kind: 'breakdown' }>): string {\n if (str(plan.epic)) return str(plan.epic).toUpperCase()\n return plan.newEpic ? `new epic \"${str(plan.newEpic.title)}\"` : 'no epic'\n}\n\n/** An existing roadmap item that can parent an epic (a horizon), else the reason it can't. */\nfunction resolveHorizon(parent: string, roadmap: RoadmapItem[], missing = 'is not an existing roadmap item'): { id: string } | { error: string } {\n const p = roadmap.find(r => r.id === parent.toUpperCase())\n if (!p) return { error: `parent \"${parent}\" ${missing}` }\n if (p.parent !== null) return { error: `parent ${p.id} is an epic, not a horizon (max depth is 2)` }\n return { id: p.id }\n}\n\n/** Id of an existing item with this title under `parent` ('' = horizon level), case-insensitive. */\nconst titleTaken = (roadmap: RoadmapItem[], parent: string, title: string) =>\n roadmap.find(i => (i.parent ?? '') === parent && i.title.trim().toLowerCase() === title.toLowerCase())?.id\n\n/**\n * Just enough shape for the chat UI to render a proposal before the server has validated it\n * (the tool_use streams in before its tool_result). Returns null for anything a card can't draw.\n */\nexport function asRenderablePlan(p: unknown): Plan | null {\n if (!isObj(p)) return null\n const items = (v: unknown, need: string[]) => Array.isArray(v) && v.every(x =>\n isObj(x) && need.every(k => typeof x[k] === 'string') && (x.dependsOn === undefined || Array.isArray(x.dependsOn)))\n if (p.kind === 'breakdown') {\n const target = p.epic === undefined || typeof p.epic === 'string'\n const newEpic = p.newEpic === undefined || (isObj(p.newEpic) && typeof p.newEpic.title === 'string' && typeof p.newEpic.parent === 'string')\n return target && newEpic && items(p.tasks, ['key', 'title']) && (p.tasks as unknown[]).length > 0\n ? (p as unknown as Plan) : null\n }\n if (p.kind === 'roadmap') {\n const horizons = p.horizons ?? [], epics = p.epics ?? []\n return items(horizons, ['key', 'title']) && items(epics, ['key', 'title', 'parent'])\n ? ({ kind: 'roadmap', horizons, epics } as Plan) : null\n }\n return null\n}\n\n/** Every problem with the plan against the current files; [] = valid. */\nexport function validatePlan(plan: unknown, ctx: PlanContext): string[] {\n if (!isObj(plan)) return ['plan must be an object']\n if (plan.kind === 'roadmap') return validateRoadmapPlan(plan, ctx)\n if (plan.kind !== 'breakdown') return [`plan.kind must be \"breakdown\" or \"roadmap\" (got ${JSON.stringify(plan.kind)})`]\n\n const errors: string[] = []\n const epicId = str(plan.epic).toUpperCase()\n if (plan.epic !== undefined && typeof plan.epic !== 'string') errors.push('epic must be a string (an epic id)')\n else if (epicId && plan.newEpic !== undefined) errors.push('pass either epic (an existing epic) or newEpic, not both')\n else if (epicId) {\n const epic = ctx.roadmap.find(i => i.id === epicId)\n if (!epic) errors.push(`Epic ${JSON.stringify(plan.epic)} not found`)\n else if (!epic.parent) errors.push(`${epic.id} is a horizon, not an epic; pass an epic id`)\n } else if (plan.newEpic !== undefined) {\n const e = plan.newEpic\n if (!isObj(e)) errors.push('newEpic must be an object { title, parent, body }')\n else {\n const title = str(e.title), parent = str(e.parent)\n if (!title) errors.push('newEpic: title is required')\n if (typeof e.body !== 'string') errors.push('newEpic: body must be a markdown string')\n if (!parent) errors.push('newEpic: parent is required (an existing horizon id)')\n else {\n const h = resolveHorizon(parent, ctx.roadmap)\n if ('error' in h) errors.push(`newEpic: ${h.error}`)\n else if (title) {\n const other = titleTaken(ctx.roadmap, h.id, title)\n if (other) errors.push(`newEpic: \"${title}\" already exists under ${h.id} (${other})`)\n }\n }\n }\n }\n\n if (!Array.isArray(plan.tasks) || plan.tasks.length === 0) {\n errors.push('tasks must be a non-empty array')\n return errors\n }\n const tasks = plan.tasks as unknown[]\n const existing = new Set(ctx.taskIds.map(t => t.toUpperCase()))\n\n const index = new Map<string, number>()\n tasks.forEach((t, i) => {\n const key = isObj(t) ? str(t.key) : ''\n if (!key) errors.push(`task #${i + 1}: key is required`)\n else if (index.has(key)) errors.push(`duplicate key \"${key}\"`)\n else index.set(key, i)\n })\n\n const deps = new Map<string, string[]>() // key → plan keys it depends on\n tasks.forEach((t, i) => {\n if (!isObj(t)) { errors.push(`task #${i + 1} must be an object`); return }\n const label = str(t.key) || `task #${i + 1}`\n if (!str(t.title)) errors.push(`${label}: title is required`)\n if (typeof t.body !== 'string') errors.push(`${label}: body must be a markdown string`)\n if (t.size !== undefined && typeof t.size !== 'string') errors.push(`${label}: size must be a string`)\n if (t.due !== undefined && !(typeof t.due === 'string' && isDate(t.due))) {\n errors.push(`${label}: due must be a date YYYY-MM-DD (got ${JSON.stringify(t.due)})`)\n }\n if (t.dependsOn === undefined) return\n if (!Array.isArray(t.dependsOn)) { errors.push(`${label}: dependsOn must be an array`); return }\n const own: string[] = []\n for (const d of t.dependsOn) {\n const dep = str(d)\n if (index.has(dep)) own.push(dep)\n else if (!existing.has(dep.toUpperCase())) {\n errors.push(`${label}: dependsOn \"${String(d)}\" is neither a key in this plan nor an existing task`)\n }\n }\n if (str(t.key)) deps.set(str(t.key), own)\n })\n\n // Cycles (DFS, report each once), then forward references: apply creates in order,\n // so a dependency must come earlier in the list to already have its T id.\n const state = new Map<string, 'open' | 'done'>()\n const cyclic = new Set<string>()\n const visit = (k: string, stack: string[]) => {\n if (state.get(k) === 'done') return\n if (state.get(k) === 'open') {\n const cycle = [...stack.slice(stack.indexOf(k)), k]\n if (!cycle.some(c => cyclic.has(c))) errors.push(`dependency cycle: ${cycle.join(' → ')}`)\n cycle.forEach(c => cyclic.add(c))\n return\n }\n state.set(k, 'open')\n for (const d of deps.get(k) ?? []) visit(d, [...stack, k])\n state.set(k, 'done')\n }\n for (const k of deps.keys()) visit(k, [])\n for (const [k, ds] of deps) {\n if (cyclic.has(k)) continue\n for (const d of ds) {\n if ((index.get(d) ?? 0) > (index.get(k) ?? 0)) errors.push(`${k} depends on ${d}, which comes later; list ${d} first`)\n }\n }\n return errors\n}\n\nconst STATUSES = ['planned', 'in-progress', 'done']\n\nfunction validateRoadmapPlan(plan: Record<string, unknown>, ctx: PlanContext): string[] {\n const errors: string[] = []\n const horizons = plan.horizons ?? []\n const epics = plan.epics ?? []\n if (!Array.isArray(horizons)) errors.push('horizons must be an array')\n if (!Array.isArray(epics)) errors.push('epics must be an array')\n if (errors.length > 0) return errors\n const hs = horizons as unknown[]\n const es = epics as unknown[]\n if (hs.length + es.length === 0) return ['a roadmap plan needs at least one horizon or epic']\n\n const keys = new Set<string>()\n const horizonKeys = new Set<string>()\n const checkKey = (v: unknown, label: string, isHorizon: boolean) => {\n const key = isObj(v) ? str(v.key) : ''\n if (!key) errors.push(`${label}: key is required`)\n else if (keys.has(key)) errors.push(`duplicate key \"${key}\"`)\n else { keys.add(key); if (isHorizon) horizonKeys.add(key) }\n }\n hs.forEach((h, i) => checkKey(h, `horizon #${i + 1}`, true))\n es.forEach((e, i) => checkKey(e, `epic #${i + 1}`, false))\n\n // Titles are unique per level (spine, or one horizon), against existing items and within the plan.\n const seen = new Map<string, string>() // \"parent\\0title\" → who in this plan has it\n const claimTitle = (parent: string, title: string, label: string) => {\n const k = `${parent}\\0${title.toLowerCase()}`\n const other = titleTaken(ctx.roadmap, parent, title) ?? seen.get(k)\n if (other) errors.push(`${label}: \"${title}\" already exists ${parent ? `under ${parent}` : 'as a horizon'} (${other})`)\n else seen.set(k, label)\n }\n\n hs.forEach((h, i) => {\n if (!isObj(h)) { errors.push(`horizon #${i + 1} must be an object`); return }\n const label = str(h.key) || `horizon #${i + 1}`\n const title = str(h.title)\n if (!title) errors.push(`${label}: title is required`)\n else claimTitle('', title, label)\n if (h.body !== undefined && typeof h.body !== 'string') errors.push(`${label}: body must be a markdown string`)\n })\n\n es.forEach((e, i) => {\n if (!isObj(e)) { errors.push(`epic #${i + 1} must be an object`); return }\n const label = str(e.key) || `epic #${i + 1}`\n const title = str(e.title)\n if (!title) errors.push(`${label}: title is required`)\n if (typeof e.body !== 'string') errors.push(`${label}: body must be a markdown string`)\n if (e.status !== undefined && !STATUSES.includes(e.status as string)) {\n errors.push(`${label}: status must be one of ${STATUSES.join(', ')} (got ${JSON.stringify(e.status)})`)\n }\n const parent = str(e.parent)\n let parentId = ''\n if (!parent) errors.push(`${label}: parent is required (an existing horizon id or a horizon key in this plan)`)\n else if (horizonKeys.has(parent)) parentId = parent\n else if (keys.has(parent)) errors.push(`${label}: parent \"${parent}\" is an epic in this plan; an epic's parent must be a horizon`)\n else {\n const h = resolveHorizon(parent, ctx.roadmap, 'is neither a horizon key in this plan nor an existing roadmap item')\n if ('id' in h) parentId = h.id\n else errors.push(`${label}: ${h.error}`)\n }\n if (title && parentId) claimTitle(parentId, title, label)\n })\n return errors\n}\n\n/** Keep only the selected items. A kept item depending on an unchecked one is an error. */\nexport function selectPlan(plan: Plan, selected: string[]): { plan: Plan; errors: string[] } {\n if (plan.kind === 'roadmap') return selectRoadmapPlan(plan, selected)\n const errors: string[] = []\n // Trim like validatePlan/applyPlan do, or \" t1 \" vs \"t1\" slips past the unchecked-dependency check\n const keys = new Set(plan.tasks.map(t => t.key.trim()))\n const sel = new Set(selected.map(k => k.trim()))\n for (const k of sel) if (!keys.has(k)) errors.push(`unknown key \"${k}\"`)\n const tasks = plan.tasks.filter(t => sel.has(t.key.trim()))\n if (tasks.length === 0) errors.push('nothing selected')\n for (const t of tasks) {\n for (const d of (t.dependsOn ?? []).map(d => d.trim())) {\n if (keys.has(d) && !sel.has(d)) errors.push(`${t.key.trim()} depends on ${d}, which you unchecked`)\n }\n }\n return { plan: { ...plan, tasks }, errors }\n}\n\nfunction selectRoadmapPlan(plan: Extract<Plan, { kind: 'roadmap' }>, selected: string[]): { plan: Plan; errors: string[] } {\n const errors: string[] = []\n const horizons = plan.horizons ?? []\n const epics = plan.epics ?? []\n const hKeys = new Set(horizons.map(h => h.key))\n const keys = new Set([...hKeys, ...epics.map(e => e.key)])\n const sel = new Set(selected)\n for (const k of sel) if (!keys.has(k)) errors.push(`unknown key \"${k}\"`)\n const keptH = horizons.filter(h => sel.has(h.key))\n const keptE = epics.filter(e => sel.has(e.key))\n if (keptH.length + keptE.length === 0) errors.push('nothing selected')\n for (const e of keptE) {\n const p = e.parent.trim()\n if (hKeys.has(p) && !sel.has(p)) errors.push(`${e.key} is under ${p}, which you unchecked; check ${p} or uncheck ${e.key}`)\n }\n return { plan: { ...plan, horizons: keptH, epics: keptE }, errors }\n}\n","/**\n * src/lib/roadmap-health.ts\n * Pure (no fs): roadmap progress + drift, shared by the Roadmap page and the MCP handler.\n * A feature's expected status comes from its linked tasks; a horizon's from its features.\n */\n\nimport type { RoadmapItem, RoadmapStatus, Task } from './core'\n\n/** What health needs from a task: status for progress, due for at-risk. */\nexport type TaskInfo = Pick<Task, 'status' | 'due'>\n\nexport interface RoadmapProgress { done: number; total: number }\n\nexport interface RoadmapDrift {\n id: string\n kind: 'status-mismatch' | 'missing-task' | 'overdue' | 'at-risk'\n message: string\n suggestedStatus?: RoadmapStatus\n}\n\nexport interface RoadmapHealth {\n progress: Record<string, RoadmapProgress>\n drift: RoadmapDrift[]\n}\n\nexport type DueState = 'overdue' | 'soon' | 'ok' | 'done'\n\nconst SOON_DAYS = 7\n\n/** Local calendar date \"YYYY-MM-DD\" (due dates are calendar dates, not instants). */\nexport function localToday(now = new Date()): string {\n const p = (n: number) => String(n).padStart(2, '0')\n return `${now.getFullYear()}-${p(now.getMonth() + 1)}-${p(now.getDate())}`\n}\n\nfunction daysBetween(from: string, to: string): number {\n const utc = (d: string) => Date.UTC(+d.slice(0, 4), +d.slice(5, 7) - 1, +d.slice(8, 10))\n return Math.round((utc(to) - utc(from)) / 86_400_000)\n}\n\nexport function dueState(due: string | null, status: RoadmapStatus, today: string): DueState | null {\n if (!due) return null\n if (status === 'done') return 'done'\n if (due < today) return 'overdue'\n return daysBetween(today, due) <= SOON_DAYS ? 'soon' : 'ok'\n}\n\ntype Started = 'done' | 'in-progress' | 'other'\n\nfunction expectedStatus(states: Started[]): RoadmapStatus {\n if (states.every(s => s === 'done')) return 'done'\n if (states.some(s => s !== 'other')) return 'in-progress'\n return 'planned'\n}\n\nexport interface TaskDueSummary { overdue: number; next: string | null }\n\n/** Open tasks' deadlines for a map node: how many are overdue, and the nearest upcoming due. */\nexport function taskDueSummary(taskIds: string[], tasks: Record<string, TaskInfo>, today: string): TaskDueSummary | null {\n const dues = taskIds\n .map(id => tasks[id])\n .filter(t => t && t.due && t.status !== 'done' && t.status !== 'cancelled')\n .map(t => t.due as string)\n if (!dues.length) return null\n const upcoming = dues.filter(d => d >= today).sort()\n return { overdue: dues.length - upcoming.length, next: upcoming[0] ?? null }\n}\n\n/** Why an unfinished epic may miss its date: overdue or blocked tasks, or due soon with nothing started. */\nfunction atRiskReasons(item: RoadmapItem, linked: string[], tasks: Record<string, TaskInfo>, today: string): string[] {\n const reasons: string[] = []\n for (const id of linked) {\n const t = tasks[id]\n if (t.status !== 'done' && t.due && t.due < today) reasons.push(`${id} overdue since ${t.due}`)\n if (t.status === 'blocked') reasons.push(`${id} blocked`)\n }\n const started = linked.some(id => ['done', 'in-progress', 'review'].includes(tasks[id].status))\n if (item.due && dueState(item.due, item.status, today) === 'soon' && !started) {\n reasons.push(`due ${item.due}, nothing started`)\n }\n return reasons\n}\n\nexport function roadmapHealth(\n items: RoadmapItem[], tasks: Record<string, TaskInfo>, today: string,\n): RoadmapHealth {\n const progress: Record<string, RoadmapProgress> = {}\n const drift: RoadmapDrift[] = []\n\n for (const item of items) {\n if (item.due && dueState(item.due, item.status, today) === 'overdue') {\n drift.push({ id: item.id, kind: 'overdue', message: `${item.id} \"${item.title}\" is overdue since ${item.due}` })\n }\n }\n const horizonIds = new Set(items.filter(i => i.parent === null).map(i => i.id))\n\n for (const item of items) {\n if (item.parent === null) continue\n const missing = item.tasks.filter(t => !(t in tasks))\n if (missing.length) {\n drift.push({ id: item.id, kind: 'missing-task', message: `${item.id} links unknown task ${missing.join(', ')}` })\n }\n // cancelled tasks don't count toward progress or expected status\n const linked = item.tasks.filter(t => t in tasks && tasks[t].status !== 'cancelled')\n // a paused epic is stopped on purpose: not at risk\n const risks = item.status === 'done' || item.status === 'paused' ? [] : atRiskReasons(item, linked, tasks, today)\n if (risks.length) {\n drift.push({ id: item.id, kind: 'at-risk', message: `${item.id} \"${item.title}\" at risk: ${risks.join('; ')}` })\n }\n if (!linked.length) continue\n const states: Started[] = linked.map(t =>\n tasks[t].status === 'done' ? 'done' : tasks[t].status === 'in-progress' || tasks[t].status === 'review' ? 'in-progress' : 'other')\n progress[item.id] = { done: states.filter(s => s === 'done').length, total: linked.length }\n const expected = expectedStatus(states)\n // paused stays paused until everything is done\n if (expected !== item.status && !(item.status === 'paused' && expected !== 'done')) {\n const open = linked.filter(t => tasks[t].status !== 'done')\n drift.push({\n id: item.id,\n kind: 'status-mismatch',\n message: expected === 'done'\n ? `${item.id} \"${item.title}\": all tasks done but status is ${item.status}`\n : `${item.id} \"${item.title}\" is ${item.status} but tasks ${open.join(', ')} are not done`,\n suggestedStatus: expected,\n })\n }\n }\n\n for (const h of items) {\n if (!horizonIds.has(h.id)) continue\n const kids = items.filter(i => i.parent === h.id)\n if (!kids.length) continue\n const states: Started[] = kids.map(k => k.status === 'done' ? 'done' : k.status === 'in-progress' ? 'in-progress' : 'other')\n // weight by tasks; an epic not broken down yet counts as one unit\n progress[h.id] = kids.reduce((sum, k) => {\n const p = progress[k.id] ?? { done: k.status === 'done' ? 1 : 0, total: 1 }\n return { done: sum.done + p.done, total: sum.total + p.total }\n }, { done: 0, total: 0 })\n const expected = expectedStatus(states)\n if (expected !== h.status && !(h.status === 'paused' && expected !== 'done')) {\n drift.push({\n id: h.id,\n kind: 'status-mismatch',\n message: `${h.id} \"${h.title}\" is ${h.status} but its features say ${expected}`,\n suggestedStatus: expected,\n })\n }\n }\n\n return { progress, drift }\n}\n","const DYNAMIC_ERROR_CODE = 'DYNAMIC_SERVER_USAGE'\n\nexport class DynamicServerError extends Error {\n digest: typeof DYNAMIC_ERROR_CODE = DYNAMIC_ERROR_CODE\n\n constructor(public readonly description: string) {\n super(`Dynamic server usage: ${description}`)\n }\n}\n\nexport function isDynamicServerError(err: unknown): err is DynamicServerError {\n if (\n typeof err !== 'object' ||\n err === null ||\n !('digest' in err) ||\n typeof err.digest !== 'string'\n ) {\n return false\n }\n\n return err.digest === DYNAMIC_ERROR_CODE\n}\n","const NEXT_STATIC_GEN_BAILOUT = 'NEXT_STATIC_GEN_BAILOUT'\n\nexport class StaticGenBailoutError extends Error {\n public readonly code = NEXT_STATIC_GEN_BAILOUT\n}\n\nexport function isStaticGenBailoutError(\n error: unknown\n): error is StaticGenBailoutError {\n if (typeof error !== 'object' || error === null || !('code' in error)) {\n return false\n }\n\n return error.code === NEXT_STATIC_GEN_BAILOUT\n}\n","export class InvariantError extends Error {\n constructor(message: string, options?: ErrorOptions) {\n super(\n `Invariant: ${message.endsWith('.') ? message : message + '.'} This is a bug in Next.js.`,\n options\n )\n this.name = 'InvariantError'\n }\n}\n","export function createPromiseWithResolvers<T>(): PromiseWithResolvers<T> {\n // Shim of Stage 4 Promise.withResolvers proposal\n let resolve: (value: T | PromiseLike<T>) => void\n let reject: (reason: any) => void\n const promise = new Promise<T>((res, rej) => {\n resolve = res\n reject = rej\n })\n return { resolve: resolve!, reject: reject!, promise }\n}\n","import { InvariantError } from '../../shared/lib/invariant-error'\nimport { createPromiseWithResolvers } from '../../shared/lib/promise-with-resolvers'\n\nexport enum RenderStage {\n Before = 1,\n //\n ShellStatic = 11,\n Static = 13,\n //\n ShellRuntime = 21,\n Runtime = 23,\n //\n Dynamic = 30,\n //\n Abandoned = 40,\n}\n\nexport type AdvanceableRenderStage = Exclude<\n RenderStage,\n RenderStage.Before | RenderStage.Abandoned\n>\n\nexport const RENDER_STAGE_ADVANCE_ORDER: AdvanceableRenderStage[] = [\n RenderStage.ShellStatic,\n RenderStage.Static,\n //\n RenderStage.ShellRuntime,\n RenderStage.Runtime,\n //\n RenderStage.Dynamic,\n]\n\nexport function getNextStage(\n stage: Exclude<AdvanceableRenderStage, RenderStage.Dynamic>\n) {\n return RENDER_STAGE_ADVANCE_ORDER[\n RENDER_STAGE_ADVANCE_ORDER.indexOf(stage) + 1\n ]\n}\n\nexport function isAdvanceableRenderStage(\n stage: RenderStage\n): stage is AdvanceableRenderStage {\n return RenderStage.Before < stage && stage <= RenderStage.Dynamic\n}\n\nexport enum SyncIOMode {\n /** Sync IO does not error in any stage. */\n Untracked = 1,\n /** Before `partialPrefetching`: Sync IO errors in static stages, and is allowed otherwise. */\n AllowedInRuntimeOrDynamic = 2,\n /** After `partialPrefetching`: Sync IO errors in all stages other than dynamic. */\n AllowedInDynamic = 3,\n}\n\nexport class StagedRenderingController {\n private abortSignal: AbortSignal | null\n private abandonController: AbortController | null\n private syncIOMode: SyncIOMode\n public readonly finalStage: AdvanceableRenderStage | null\n\n currentStage: RenderStage = RenderStage.Before\n\n syncInterruptReason: Error | null = null\n\n triggers: Record<AdvanceableRenderStage, StageTrigger> = {\n [RenderStage.ShellStatic]: createStageTrigger(),\n [RenderStage.Static]: createStageTrigger(),\n //\n [RenderStage.ShellRuntime]: createStageTrigger(),\n [RenderStage.Runtime]: createStageTrigger(),\n //\n [RenderStage.Dynamic]: createStageTrigger(),\n }\n\n constructor({\n abortSignal,\n abandonController,\n syncIO,\n finalStage,\n }: {\n abortSignal: AbortSignal | null\n abandonController: AbortController | null\n syncIO: SyncIOMode\n finalStage: AdvanceableRenderStage | null\n }) {\n this.abortSignal = abortSignal\n this.abandonController = abandonController\n this.syncIOMode = syncIO\n this.finalStage = finalStage\n\n if (abortSignal) {\n abortSignal.addEventListener(\n 'abort',\n () => {\n // Reject all stage promises that haven't already been resolved.\n // `cancelStageTrigger` is a noop if the trigger already resolved.\n const { reason } = abortSignal\n for (const trigger of Object.values(this.triggers)) {\n cancelStageTrigger(trigger, reason)\n }\n },\n { once: true }\n )\n }\n\n if (abandonController) {\n abandonController.signal.addEventListener(\n 'abort',\n () => {\n this.abandonRender()\n },\n { once: true }\n )\n }\n }\n\n onStage(stage: AdvanceableRenderStage, callback: () => void) {\n addSyncTriggerListener(this.triggers[stage], callback)\n }\n\n shouldTrackSyncInterrupt(): boolean {\n if (this.syncIOMode === SyncIOMode.Untracked) {\n return false\n }\n\n switch (this.currentStage) {\n case RenderStage.Before:\n // If we haven't started the render yet, it can't be interrupted.\n return false\n case RenderStage.ShellStatic:\n case RenderStage.Static:\n return true\n case RenderStage.ShellRuntime:\n case RenderStage.Runtime: {\n switch (this.syncIOMode) {\n case SyncIOMode.AllowedInRuntimeOrDynamic: {\n // Before `partialPrefetching`: Sync IO only errors in static stages.\n return false\n }\n case SyncIOMode.AllowedInDynamic: {\n return true\n }\n }\n // NOT a fallthrough, but eslint doesn't understand that\n }\n case RenderStage.Dynamic:\n case RenderStage.Abandoned:\n return false\n default:\n this.currentStage satisfies never\n return false\n }\n }\n\n /** Note: only call this if `shouldTrackSyncInterrupt()` returned true */\n syncInterruptCurrentStageWithReason(reason: Error) {\n const { currentStage } = this\n if (\n currentStage === RenderStage.Before ||\n currentStage === RenderStage.Dynamic ||\n currentStage === RenderStage.Abandoned\n ) {\n // Not interruptible. Defensive noop.\n return\n }\n\n // If Sync IO occurs during an abandonable render, we trigger the abandon.\n // The abandon listener will call abandonRender which advances through\n // stages to let caches fill before marking as Abandoned.\n if (this.abandonController) {\n this.abandonController.abort()\n return\n }\n\n if (this.abortSignal) {\n // If this is an abortable render, we capture the interruption reason and stop advancing.\n // We don't release any more promises.\n // The caller is expected to abort the signal.\n this.syncInterruptReason = reason\n this.currentStage = RenderStage.Abandoned\n return\n }\n\n // If we're in a non-abandonable & non-abortable render,\n // we need to advance to the Dynamic stage and capture the interruption reason.\n // (in dev, this will be the restarted render)\n this.syncInterruptReason = reason\n this.advanceStage(RenderStage.Dynamic)\n }\n\n getSyncInterruptReason() {\n return this.syncInterruptReason\n }\n\n getStageEndTime(stage: Exclude<AdvanceableRenderStage, RenderStage.Dynamic>) {\n return this.triggers[getNextStage(stage)].triggeredAt ?? Infinity\n }\n\n private abandonRender() {\n // In staged rendering, only the initial render is abandonable.\n // We can abandon the initial render if\n // 1. We notice a cache miss, and need to wait for caches to fill\n // 2. A sync IO error occurs, and the render should be interrupted\n // (this might be a lazy intitialization of a module,\n // so we still want to restart in this case and see if it still occurs)\n // In either case, we'll be doing another render after this one,\n // so we only want to unblock the next stage, not Dynamic, because\n // unblocking the dynamic stage would likely lead to wasted (uncached) IO.\n\n const { currentStage } = this\n\n if (currentStage === RenderStage.Before) {\n throw new InvariantError(\n \"A render that hasn't started yet cannot be abandoned\"\n )\n }\n if (\n currentStage === RenderStage.Dynamic ||\n currentStage === RenderStage.Abandoned\n ) {\n // We shouldn't ever trigger an abandon in these. Defensive noop.\n return\n }\n\n // Resolve all stages after the current one, up to runtime (excluding dynamic)\n const nextStageIx = RENDER_STAGE_ADVANCE_ORDER.indexOf(currentStage) + 1\n const dynamicStageIx = RENDER_STAGE_ADVANCE_ORDER.indexOf(\n RenderStage.Dynamic\n )\n for (let i = nextStageIx; i < dynamicStageIx; i++) {\n this.resolveStage(RENDER_STAGE_ADVANCE_ORDER[i])\n }\n\n this.currentStage = RenderStage.Abandoned\n }\n\n advanceStage(targetStage: AdvanceableRenderStage) {\n if (this.finalStage !== null && targetStage > this.finalStage) {\n throw new InvariantError(\n `Attempted to advance to stage ${RenderStage[targetStage]} but the render is limited to ${RenderStage[this.finalStage]}`\n )\n }\n const { currentStage } = this\n\n if (\n currentStage === RenderStage.Dynamic ||\n currentStage === RenderStage.Abandoned\n ) {\n // Terminal stages, nowhere left to advance.\n return\n }\n\n // If we're already at the target stage or beyond, do nothing.\n if (targetStage <= currentStage) {\n return\n }\n\n this.currentStage = targetStage\n\n // Resolve all stages between the current stage and the target.\n const nextStageIx =\n currentStage === RenderStage.Before\n ? 0\n : RENDER_STAGE_ADVANCE_ORDER.indexOf(currentStage) + 1\n const targetStageIx = RENDER_STAGE_ADVANCE_ORDER.indexOf(targetStage)\n for (let i = nextStageIx; i <= targetStageIx; i++) {\n this.resolveStage(RENDER_STAGE_ADVANCE_ORDER[i])\n }\n }\n\n private resolveStage(stage: AdvanceableRenderStage) {\n fireStageTrigger(this.triggers[stage])\n }\n\n private getStagePromise(stage: AdvanceableRenderStage): Promise<void> {\n return this.triggers[stage].promise\n }\n\n waitForStage(stage: AdvanceableRenderStage) {\n return this.getStagePromise(stage)\n }\n\n delayUntilStage<T>(\n stage: AdvanceableRenderStage,\n displayName: string | undefined,\n resolvedValue: T\n ): Promise<T> {\n const stagePromise = this.getStagePromise(stage)\n\n const promise =\n process.env.NODE_ENV === 'development'\n ? makeDevtoolsIOPromiseFromIOTrigger(\n stagePromise,\n displayName,\n resolvedValue\n )\n : stagePromise.then(() => resolvedValue)\n\n // Analogously to `makeDynamicHangingPromise`, we might reject this promise if the signal is invoked.\n // (e.g. in the case where we don't want want the render to proceed to the dynamic stage and abort it).\n // We shouldn't consider this an unhandled rejection, so we attach a noop catch handler here to suppress this warning.\n if (this.abortSignal) {\n promise.catch(ignoreReject)\n }\n return promise\n }\n}\n\nfunction ignoreReject() {}\n\n// TODO(restart-on-cache-miss): the layering of `delayUntilStage`,\n// `makeDevtoolsIOPromiseFromIOTrigger` and and `makeDevtoolsIOAwarePromise`\n// is confusing, we should clean it up.\nfunction makeDevtoolsIOPromiseFromIOTrigger<T>(\n ioTrigger: Promise<any>,\n displayName: string | undefined,\n resolvedValue: T\n): Promise<T> {\n // If we create a `new Promise` and give it a displayName\n // (with no userspace code above us in the stack)\n // React Devtools will use it as the IO cause when determining \"suspended by\".\n // In particular, it should shadow any inner IO that resolved/rejected the promise\n // (in case of staged rendering, this will be the `setTimeout` that triggers the relevant stage)\n const promise = new Promise<T>((resolve, reject) => {\n ioTrigger.then(resolve.bind(null, resolvedValue), reject)\n })\n if (displayName !== undefined) {\n // @ts-expect-error\n promise.displayName = displayName\n }\n return promise\n}\n\ntype StageTrigger = {\n state: 'pending' | 'triggered' | 'cancelled'\n triggeredAt: number | null\n promise: Promise<void>\n _listeners: Array<() => void>\n _resolvePromise: () => void\n _rejectPromise: (reason: unknown) => void\n}\n\nfunction addSyncTriggerListener(trigger: StageTrigger, listener: () => void) {\n if (trigger.state === 'pending') {\n trigger._listeners.push(listener)\n } else {\n listener()\n }\n}\n\nfunction createStageTrigger(): StageTrigger {\n const { promise, resolve, reject } = createPromiseWithResolvers<void>()\n return {\n state: 'pending',\n triggeredAt: null,\n promise,\n _listeners: [],\n _resolvePromise: resolve,\n _rejectPromise: reject,\n }\n}\n\nfunction fireStageTrigger(trigger: StageTrigger) {\n if (trigger.state !== 'pending') {\n return\n }\n trigger.state = 'triggered'\n trigger.triggeredAt = performance.now() + performance.timeOrigin\n try {\n const { _listeners: listeners } = trigger\n for (let i = 0; i < listeners.length; i++) {\n listeners[i]()\n }\n listeners.length = 0\n } finally {\n trigger._resolvePromise()\n }\n}\n\nfunction cancelStageTrigger(trigger: StageTrigger, reason: unknown) {\n if (trigger.state !== 'pending') {\n return\n }\n trigger.state = 'cancelled'\n // we didn't trigger, so don't save `triggeredAt`.\n\n // We're not gonna fire the listeners, we may as well free them.\n trigger._listeners.length = 0\n\n // Suppress unhandled rejection warnings for promises that no one is awaiting.\n trigger.promise.catch(ignoreReject)\n trigger._rejectPromise(reason)\n}\n","import { workAsyncStorage } from '../app-render/work-async-storage.external'\nimport { workUnitAsyncStorage } from '../app-render/work-unit-async-storage.external'\n\nexport type AfterTask<T = unknown> = Promise<T> | AfterCallback<T>\nexport type AfterCallback<T = unknown> = () => T | Promise<T>\n\n/**\n * This function allows you to schedule callbacks to be executed after the current request finishes.\n */\nexport function after<T>(task: AfterTask<T>): void {\n const workStore = workAsyncStorage.getStore()\n const workUnitStore = workUnitAsyncStorage.getStore()\n\n if (!workStore || !workUnitStore) {\n // TODO(after): the linked docs page talks about *dynamic* APIs, which after soon won't be anymore\n throw new Error(\n '`after` was called outside a request scope. Read more: https://nextjs.org/docs/messages/next-dynamic-api-wrong-context'\n )\n }\n\n const { afterContext } = workStore\n return afterContext.after(task, workUnitStore)\n}\n","export * from './after'\n","import {\n RenderStage,\n type AdvanceableRenderStage,\n} from './app-render/staged-rendering'\nimport type {\n RequestStore,\n WorkUnitStore,\n} from './app-render/work-unit-async-storage.external'\nimport { workUnitAsyncStorage } from './app-render/work-unit-async-storage.external'\nimport { getServerReact, getClientReact } from './runtime-reacts.external'\n\nexport function isHangingPromiseRejectionError(\n err: unknown\n): err is HangingPromiseRejectionError {\n if (typeof err !== 'object' || err === null || !('digest' in err)) {\n return false\n }\n\n return err.digest === HANGING_PROMISE_REJECTION\n}\n\nconst HANGING_PROMISE_REJECTION = 'HANGING_PROMISE_REJECTION'\n\nclass HangingPromiseRejectionError extends Error {\n public readonly digest = HANGING_PROMISE_REJECTION\n\n constructor(\n public readonly route: string,\n public readonly expression: string\n ) {\n super(\n `During prerendering, ${expression} rejects when the prerender is complete. Typically these errors are handled by React but if you move ${expression} to a different context by using \\`setTimeout\\`, \\`after\\`, or similar functions you may observe this error and you should handle it in that context. This occurred at route \"${route}\".`\n )\n }\n}\n\nconst CLIENT_HOOK_DYNAMIC = 'CLIENT_HOOK_DYNAMIC'\n\nexport class ClientHookDynamicError extends Error {\n public readonly digest = CLIENT_HOOK_DYNAMIC\n\n constructor(route: string, expression: string) {\n super(\n `Route \"${route}\": Next.js encountered URL data \\`${expression}\\` in a Client Component outside of \\`<Suspense>\\`.\\n\\n` +\n `This blocks prerendering because the value is only available at runtime.\\n\\n` +\n `Ways to fix this:\\n` +\n ` - [stream] Wrap the component in \\`<Suspense fallback={...}>\\` so the hook value streams in after prerendering\\n` +\n ` - [block] Set \\`export const instant = false\\` to allow a blocking route\\n\\n` +\n `Learn more: https://nextjs.org/docs/messages/blocking-prerender-client-hook`\n )\n }\n}\n\nexport function isClientHookDynamicError(\n err: unknown\n): err is ClientHookDynamicError {\n if (typeof err !== 'object' || err === null || !('digest' in err)) {\n return false\n }\n\n return err.digest === CLIENT_HOOK_DYNAMIC\n}\n\ntype AbortListeners = Array<() => void>\nconst abortListenersBySignal = new WeakMap<AbortSignal, AbortListeners>()\n\n/**\n * Constructs a promise that never resolves, standing in for *dynamic* data:\n * data that is only available during a real dynamic request and hangs in\n * every kind of prerender — `io()`, `connection()`, uncached `fetch()`.\n *\n * This is primarily useful for cacheComponents where we use promise\n * resolution timing to determine which parts of a render can be included in a\n * prerender.\n *\n * Records nothing on the prerender store: the promise's holes are only ever\n * filled by a real dynamic request, so a runtime prefetch response would have\n * the same holes as the static one. If the data source would resolve during a\n * runtime prerender, use `makeRuntimeHangingPromise` instead.\n *\n * @internal\n */\nexport function makeDynamicHangingPromise<T>(\n signal: AbortSignal,\n route: string,\n expression: string\n): Promise<T> {\n return makeHangingPromiseWithError(\n signal,\n new HangingPromiseRejectionError(route, expression)\n )\n}\n\nexport function makeUntrackedHangingPromise<T>(\n signal: AbortSignal,\n route: string,\n expression: string\n): Promise<T> {\n return makeHangingPromiseWithError(\n signal,\n new HangingPromiseRejectionError(route, expression)\n )\n}\n\n/**\n * Constructs a promise that never resolves, standing in for *runtime* data:\n * data that hangs during a static prerender but is available during a runtime\n * prerender (the kind that backs a runtime prefetch request: request data\n * like cookies and headers is available, but the render is still not a real\n * dynamic request). Examples: cookies, headers, fallback params,\n * searchParams, and cache entries that are excluded only from static\n * prerenders.\n *\n * Creating one of these during a static prerender records on the prerender\n * store that a runtime prefetch would produce more content than the static\n * response (`runtimeDataAccessed`), which the segment prefetch encoding uses\n * to tell the client whether a runtime prefetch request could be skipped.\n *\n * When unsure whether data is dynamic or runtime, prefer this method — the\n * cost of over-recording is a redundant runtime prefetch request; the cost of\n * under-recording is a permanently missing one.\n *\n * `workUnitStore` may be null ONLY when the caller tracks the access itself\n * at observation time instead of creation time. This is for promises the\n * framework creates eagerly whether or not anything reads them (e.g. the\n * `searchParams` prop constructed for every page): recording at creation\n * would mark every render. Such a caller MUST call `trackRuntimeDataAccessed`\n * from every path that observes the promise (e.g. the proxy traps for\n * `then`/`status`), against the work unit store active at access time.\n *\n * For fallback-param data — data a concrete (ISR-upgraded) prerender would\n * resolve — use `makeFallbackParamsHangingPromise` instead, so the access\n * is recorded with the right effect on the static-prefetch hint.\n *\n * @internal\n */\nexport function makeRuntimeHangingPromise<T>(\n signal: AbortSignal,\n route: string,\n expression: string,\n workUnitStore: WorkUnitStore | null\n): Promise<T> {\n if (workUnitStore !== null) {\n trackRuntimeDataAccessed(workUnitStore)\n }\n return makeHangingPromiseWithError(\n signal,\n new HangingPromiseRejectionError(route, expression)\n )\n}\n\n/**\n * Variant of `makeRuntimeHangingPromise` for *fallback-param* data: fallback\n * route params and values derived solely from them (`params`, `rootParams`,\n * `pathname` during a fallback prerender). Like every runtime data access it\n * records the access on the prerender store's response-level flag, but its\n * effect on the build-time static-prefetch hint differs — on a\n * fallback-upgradeable route the access is transient (a concrete prerender\n * resolves it), so it leaves the hint intact. See\n * `trackFallbackParamsAccessed`.\n *\n * As with `makeRuntimeHangingPromise`, `workUnitStore` may be null ONLY when\n * the caller tracks the access itself at observation time instead of creation\n * time, by calling `trackFallbackParamsAccessed` from every path that\n * observes the promise.\n *\n * @internal\n */\nexport function makeFallbackParamsHangingPromise<T>(\n signal: AbortSignal,\n route: string,\n expression: string,\n workUnitStore: WorkUnitStore | null\n): Promise<T> {\n if (workUnitStore !== null) {\n trackFallbackParamsAccessed(workUnitStore)\n }\n return makeHangingPromiseWithError(\n signal,\n new HangingPromiseRejectionError(route, expression)\n )\n}\n\n/**\n * Constructs a promise that never resolves, standing in for data that is only\n * accessible in a later *stage* of rendering than this render reaches — e.g.\n * a prefetchable short-stale cache entry that's excluded from shells when the\n * render ends at the shell stage, or params during a runtime-prefetch render\n * that stops before the stage where params resolve.\n *\n * A render that runs through the later stage would include the data; in\n * particular a runtime prefetch renders through its later stages, so on a\n * static prerender store this records `runtimeDataAccessed`, same as\n * `makeRuntimeHangingPromise`.\n *\n * @internal\n */\nexport function makeStageHangingPromise<T>(\n signal: AbortSignal,\n route: string,\n expression: string,\n workUnitStore: WorkUnitStore\n): Promise<T> {\n trackRuntimeDataAccessed(workUnitStore)\n return makeHangingPromiseWithError(\n signal,\n new HangingPromiseRejectionError(route, expression)\n )\n}\n\n/**\n * Records on a static prerender store that the render accessed a data source\n * which would have resolved during a runtime prerender. No-op for all other\n * store types.\n *\n * `makeRuntimeHangingPromise` and `makeStageHangingPromise` call this\n * automatically; call it directly only where the access is observed\n * separately from the promise's creation (see the null `workUnitStore` case\n * of `makeRuntimeHangingPromise`), or where the prerender is aborted\n * synchronously instead of hanging.\n *\n * For fallback-param data, use `trackFallbackParamsAccessed` instead. When\n * unsure, this is the conservative choice: it unconditionally clears the\n * static-prefetch hint.\n */\nexport function trackRuntimeDataAccessed(workUnitStore: WorkUnitStore): void {\n trackRuntimeDataAccessedImpl(workUnitStore, false)\n}\n\n/**\n * Fallback-param variant of `trackRuntimeDataAccessed`, for accesses of\n * fallback route params and values derived solely from them. It records the\n * response-level flag all the same, but only clears the build-time\n * static-prefetch hint when the route is not fallback-upgradeable — on an\n * upgradeable route the access is transient, since ISR later produces a\n * concrete prerender that resolves it.\n */\nexport function trackFallbackParamsAccessed(\n workUnitStore: WorkUnitStore\n): void {\n trackRuntimeDataAccessedImpl(workUnitStore, true)\n}\n\nfunction trackRuntimeDataAccessedImpl(\n workUnitStore: WorkUnitStore,\n isFallbackParamAccess: boolean\n): void {\n switch (workUnitStore.type) {\n case 'prerender': {\n // Response-level flag (the payload's `u`, forwarded to segment\n // responses as `needsRuntimeRequest`): resolved for every kind of\n // access — a pre-upgrade fallback response must keep reporting that\n // a runtime request would return more. The fulfillment row lands at\n // the current position in the Flight stream, which is what makes the\n // value rewindable per stage. Promise resolution is idempotent, so\n // repeated accesses are free.\n workUnitStore.runtimeDataAccessed?.resolve(true)\n\n // Hint cell (holds the build-constant\n // PrefetchHint.ShouldAttemptStaticPrefetch value directly): a\n // fallback-param access is transient when the route is\n // fallback-upgradeable — ISR later produces the concrete prerender a\n // static prefetch attempt would hit — so it leaves the hint intact.\n // (Until that upgrade, the response-level flag above keeps directing\n // the client to a runtime fallback; the hint only costs a wasted\n // static attempt in the interim.) Every other access clears it.\n const hintCell = workUnitStore.shouldAttemptStaticPrefetch\n if (\n hintCell !== null &&\n (!isFallbackParamAccess || !workUnitStore.isFallbackUpgradeable)\n ) {\n hintCell.current = false\n }\n break\n }\n case 'prerender-client':\n case 'prerender-ppr':\n case 'prerender-legacy':\n case 'prerender-runtime':\n case 'validation-client':\n case 'request':\n case 'cache':\n case 'private-cache':\n case 'unstable-cache':\n case 'generate-static-params':\n // Only the modern server prerender tracks this; see the field docs on\n // PrerenderStoreModernServer.\n break\n default:\n workUnitStore satisfies never\n }\n}\n\nexport function makeClientHookHangingPromise<T>(\n signal: AbortSignal,\n error: ClientHookDynamicError\n): Promise<T> {\n return makeHangingPromiseWithError(signal, error)\n}\n\nfunction makeHangingPromiseWithError<T>(\n signal: AbortSignal,\n error: Error\n): Promise<T> {\n if (signal.aborted) {\n return Promise.reject(error)\n } else {\n const hangingPromise = new Promise<T>((_, reject) => {\n const boundRejection = reject.bind(null, error)\n let currentListeners = abortListenersBySignal.get(signal)\n if (currentListeners) {\n currentListeners.push(boundRejection)\n } else {\n const listeners = [boundRejection]\n abortListenersBySignal.set(signal, listeners)\n signal.addEventListener(\n 'abort',\n () => {\n for (let i = 0; i < listeners.length; i++) {\n listeners[i]()\n }\n },\n { once: true }\n )\n }\n })\n // We are fine if no one actually awaits this promise. We shouldn't consider this an unhandled rejection so\n // we attach a noop catch handler here to suppress this warning. If you actually await somewhere or construct\n // your own promise out of it you'll need to ensure you handle the error when it rejects.\n hangingPromise.catch(ignoreReject)\n return hangingPromise\n }\n}\n\nfunction ignoreReject() {}\n\n/**\n * Creates a promise that will be triggered when another promise resolves.\n * It will not emit unhandled rejections, which is important if the trigger\n * is a promise that might itself get rejected (e.g. when a prerender/render\n * are aborted due to sync IO)\n */\nexport function makePromiseFromTrigger<T>(\n trigger: Promise<any>,\n value: T\n): Promise<T> {\n const promise = trigger.then(() => value)\n promise.catch(ignoreReject)\n return promise\n}\n\nexport function makeDevtoolsIOAwarePromise<T>(\n underlying: T,\n requestStore: RequestStore,\n stage: AdvanceableRenderStage\n): Promise<T> {\n if (requestStore.stagedRendering) {\n // We resolve each stage in a timeout, so React DevTools will pick this up as IO.\n return requestStore.stagedRendering.delayUntilStage(\n stage,\n undefined,\n underlying\n )\n }\n // in React DevTools if we resolve in a setTimeout we will observe\n // the promise resolution as something that can suspend a boundary or root.\n return new Promise<T>((resolve) => {\n // Must use setTimeout to be considered IO React DevTools. setImmediate will not work.\n setTimeout(() => {\n resolve(underlying)\n }, 0)\n })\n}\n\nexport const RENDER_STAGES_BY_DATA_KIND = {\n sessionData: RenderStage.ShellRuntime as const,\n staticLinkData: RenderStage.Static as const,\n runtimeLinkData: RenderStage.Runtime as const,\n}\n\nexport function applyOwnerStack(error: Error): Error {\n if (process.env.NODE_ENV !== 'production') {\n let ownerStack: string | undefined | null\n const workUnitStore = workUnitAsyncStorage.getStore()\n\n // captureOwnerStack() returns the owner stack for the current React\n // rendering context. Inside a cache scope this only includes the inner\n // component tree. The outer owner stack (captured before entering the\n // cache boundary in use-cache-wrapper.ts) is stored on the cache store.\n // We concatenate both to get the full component tree.\n const innerOwnerStack =\n getClientReact()?.captureOwnerStack?.() ??\n getServerReact()?.captureOwnerStack?.()\n\n switch (workUnitStore?.type) {\n case 'cache':\n case 'private-cache':\n ownerStack =\n (innerOwnerStack || '') + (workUnitStore.outerOwnerStack || '') ||\n undefined\n break\n case 'unstable-cache':\n case 'request':\n case 'prerender':\n case 'prerender-ppr':\n case 'prerender-legacy':\n case 'prerender-runtime':\n case 'prerender-client':\n case 'validation-client':\n case 'generate-static-params':\n case undefined:\n ownerStack = innerOwnerStack\n break\n default:\n workUnitStore satisfies never\n }\n\n if (ownerStack) {\n let stack = ownerStack\n\n if (error.stack) {\n const frames: string[] = []\n\n for (const frame of error.stack.split('\\n').slice(1)) {\n if (frame.includes('react_stack_bottom_frame')) {\n break\n }\n\n frames.push(frame)\n }\n\n stack = '\\n' + frames.join('\\n') + stack\n }\n\n error.stack = error.name + ': ' + error.message + stack\n }\n }\n\n return error\n}\n","export const METADATA_BOUNDARY_NAME = '__next_metadata_boundary__'\nexport const VIEWPORT_BOUNDARY_NAME = '__next_viewport_boundary__'\nexport const OUTLET_BOUNDARY_NAME = '__next_outlet_boundary__'\nexport const ROOT_LAYOUT_BOUNDARY_NAME = '__next_root_layout_boundary__'\n","export type ScheduledFn<T = void> = () => T | PromiseLike<T>\nexport type SchedulerFn<T = void> = (cb: ScheduledFn<T>) => void\n\n/**\n * Schedules a function to be called on the next tick after the other promises\n * have been resolved.\n *\n * @param cb the function to schedule\n */\nexport const scheduleOnNextTick = (cb: ScheduledFn<void>) => {\n // We use Promise.resolve().then() here so that the operation is scheduled at\n // the end of the promise job queue, we then add it to the next process tick\n // to ensure it's evaluated afterwards.\n //\n // This was inspired by the implementation of the DataLoader interface: https://github.com/graphql/dataloader/blob/d336bd15282664e0be4b4a657cb796f09bafbc6b/src/index.js#L213-L255\n //\n Promise.resolve().then(() => {\n if (process.env.NEXT_RUNTIME === 'edge') {\n setTimeout(cb, 0)\n } else {\n process.nextTick(cb)\n }\n })\n}\n\n/**\n * Schedules a function to be called using `setImmediate` or `setTimeout` if\n * `setImmediate` is not available (like in the Edge runtime).\n *\n * @param cb the function to schedule\n */\nexport const scheduleImmediate = (cb: ScheduledFn<void>): void => {\n if (process.env.NEXT_RUNTIME === 'edge') {\n setTimeout(cb, 0)\n } else {\n setImmediate(cb)\n }\n}\n\n/**\n * returns a promise than resolves in a future task. There is no guarantee that the task it resolves in\n * will be the next task but if you await it you can at least be sure that the current task is over and\n * most usefully that the entire microtask queue of the current task has been emptied.\n */\nexport function atLeastOneTask() {\n return new Promise<void>((resolve) => scheduleImmediate(resolve))\n}\n\n/**\n * This utility function is extracted to make it easier to find places where we are doing\n * specific timing tricks to try to schedule work after React has rendered. This is especially\n * important at the moment because Next.js uses the edge builds of React which use setTimeout to\n * schedule work when you might expect that something like setImmediate would do the trick.\n *\n * Long term we should switch to the node versions of React rendering when possible and then\n * update this to use setImmediate rather than setTimeout\n */\nexport function waitAtLeastOneReactRenderTask(): Promise<void> {\n if (process.env.NEXT_RUNTIME === 'edge') {\n return new Promise((r) => setTimeout(r, 0))\n } else {\n return new Promise((r) => setImmediate(r))\n }\n}\n","// This has to be a shared module which is shared between client component error boundary and dynamic component\nconst BAILOUT_TO_CSR = 'BAILOUT_TO_CLIENT_SIDE_RENDERING'\n\n/** An error that should be thrown when we want to bail out to client-side rendering. */\nexport class BailoutToCSRError extends Error {\n public readonly digest = BAILOUT_TO_CSR\n\n constructor(public readonly reason: string) {\n super(`Bail out to client-side rendering: ${reason}`)\n }\n}\n\n/** Checks if a passed argument is an error that is thrown if we want to bail out to client-side rendering. */\nexport function isBailoutToCSRError(err: unknown): err is BailoutToCSRError {\n if (typeof err !== 'object' || err === null || !('digest' in err)) {\n return false\n }\n\n return err.digest === BAILOUT_TO_CSR\n}\n","export function createRuntimeBodyError(route: string): Error {\n return new Error(\n `Route \"${route}\": Next.js encountered runtime data during prerendering.\\n\\n` +\n `\\`cookies()\\`, \\`headers()\\`, \\`params\\`, or \\`searchParams\\` accessed outside of \\`<Suspense>\\` prevents the route from being prerendered, blocking the page load and leading to a slower user experience.\\n\\n` +\n `Ways to fix this:\\n` +\n ` - [stream] Provide a placeholder with \\`<Suspense fallback={...}>\\` around the data access\\n` +\n ` - [block] Set \\`export const instant = false\\` to allow a blocking route\\n\\n` +\n `Learn more: https://nextjs.org/docs/messages/blocking-prerender-runtime`\n )\n}\n\nexport function createDynamicBodyError(route: string): Error {\n return new Error(\n `Route \"${route}\": Next.js encountered uncached data during prerendering.\\n\\n` +\n `\\`fetch(...)\\` or \\`connection()\\` accessed outside of \\`<Suspense>\\` prevents the route from being prerendered, blocking the page load and leading to a slower user experience.\\n\\n` +\n `Ways to fix this:\\n` +\n ` - [stream] Provide a placeholder with \\`<Suspense fallback={...}>\\` around the data access\\n` +\n ` - [cache] Cache the data access with \\`\"use cache\"\\` (does not apply to \\`connection()\\`)\\n` +\n ` - [block] Set \\`export const instant = false\\` to allow a blocking route\\n\\n` +\n `Learn more: https://nextjs.org/docs/messages/blocking-prerender-dynamic`\n )\n}\n\nexport function createRuntimeBodyErrorInNavigation(route: string): Error {\n return new Error(\n `Route \"${route}\": Next.js encountered runtime data during prerendering or a navigation.\\n\\n` +\n `\\`cookies()\\`, \\`headers()\\`, \\`params\\`, or \\`searchParams\\` accessed outside of \\`<Suspense>\\` prevents the route from being prerendered or the navigation from being instant, leading to a slower user experience.\\n\\n` +\n `Ways to fix this:\\n` +\n ` - [stream] Provide a placeholder with \\`<Suspense fallback={...}>\\` around the data access\\n` +\n ` - [block] Set \\`export const instant = false\\` to allow a blocking route\\n\\n` +\n `Learn more: https://nextjs.org/docs/messages/blocking-prerender-runtime`\n )\n}\n\nexport function createLinkBodyErrorInNavigation(route: string): Error {\n return new Error(\n `Route \"${route}\": Next.js encountered URL data during prerendering or a navigation.\\n\\n` +\n `\\`params\\` or \\`searchParams\\` accessed outside of \\`<Suspense>\\` may prevent the navigation from being instant, leading to a slower user experience.\\n\\n` +\n `Ways to fix this:\\n` +\n ` - [stream] Provide a placeholder with \\`<Suspense fallback={...}>\\` around the data access\\n` +\n ` - [block] Set \\`export const instant = false\\` to allow a blocking route\\n\\n` +\n `Learn more: https://nextjs.org/docs/messages/instant-shell-url-data`\n )\n}\n\nexport function createDynamicBodyErrorInNavigation(route: string): Error {\n return new Error(\n `Route \"${route}\": Next.js encountered uncached data during prerendering or a navigation.\\n\\n` +\n `\\`fetch(...)\\` or \\`connection()\\` accessed outside of \\`<Suspense>\\` prevents the route from being prerendered or the navigation from being instant, leading to a slower user experience.\\n\\n` +\n `Ways to fix this:\\n` +\n ` - [stream] Provide a placeholder with \\`<Suspense fallback={...}>\\` around the data access\\n` +\n ` - [cache] Cache the data access with \\`\"use cache\"\\` (does not apply to \\`connection()\\`)\\n` +\n ` - [block] Set \\`export const instant = false\\` to allow a blocking route\\n\\n` +\n `Learn more: https://nextjs.org/docs/messages/blocking-prerender-dynamic`\n )\n}\n\n/**\n * NOTE: Prefer `createRuntimeBodyError` or `createDynamicBodyError`.\n * Only use this in situations like build-time static validation, where\n * we can't pinpoint a more specific reason.\n */\nexport function createDynamicOrRuntimeBodyError(route: string): Error {\n return new Error(\n `Route \"${route}\": Next.js encountered uncached or runtime data during prerendering.\\n\\n` +\n `\\`fetch(...)\\`, \\`cookies()\\`, \\`headers()\\`, \\`params\\`, \\`searchParams\\`, or \\`connection()\\` accessed outside of \\`<Suspense>\\` prevents the route from being prerendered, blocking the page load and leading to a slower user experience.\\n\\n` +\n `Ways to fix this:\\n` +\n ` - [stream] Provide a placeholder with \\`<Suspense fallback={...}>\\` around the data access\\n` +\n ` - [cache] For uncached data (\\`fetch\\`, database calls): cache the access with \\`\"use cache\"\\` (does not apply to \\`connection()\\`)\\n` +\n ` - [block] Set \\`export const instant = false\\` to allow a blocking route\\n\\n` +\n `Learn more: https://nextjs.org/docs/messages/blocking-prerender-dynamic`\n )\n}\n\nexport function createLinkMetadataError(route: string): Error {\n return new Error(\n `Route \"${route}\": Next.js encountered URL data in \\`generateMetadata()\\`.\\n\\n` +\n `This route's metadata is blocked, but the rest of its content can be prefetched. \\`params\\` or \\`searchParams\\` accessed in \\`generateMetadata()\\` prevent it from being prefetched.\\n\\n` +\n `Ways to fix this:\\n` +\n ` - [static] Use a static metadata export instead of \\`generateMetadata()\\`\\n` +\n ` - [dynamic] Render a marker component that calls \\`await connection()\\` inside \\`<Suspense>\\` on the page\\n\\n` +\n `Learn more: https://nextjs.org/docs/messages/blocking-prerender-metadata-runtime`\n )\n}\n\nexport function createRuntimeMetadataError(route: string): Error {\n return new Error(\n `Route \"${route}\": Next.js encountered runtime data in \\`generateMetadata()\\`.\\n\\n` +\n `This route's metadata is blocked, but the rest of its content can be prerendered. \\`cookies()\\`, \\`headers()\\`, \\`params\\`, or \\`searchParams\\` accessed in \\`generateMetadata()\\` cause it to run dynamically.\\n\\n` +\n `Ways to fix this:\\n` +\n ` - [static] Use a static metadata export instead of \\`generateMetadata()\\`\\n` +\n ` - [dynamic] Render a marker component that calls \\`await connection()\\` inside \\`<Suspense>\\` on the page\\n\\n` +\n `Learn more: https://nextjs.org/docs/messages/blocking-prerender-metadata-runtime`\n )\n}\n\nexport function createDynamicMetadataError(route: string): Error {\n return new Error(\n `Route \"${route}\": Next.js encountered uncached data in \\`generateMetadata()\\`.\\n\\n` +\n `This route's metadata is blocked, but the rest of its content can be prerendered. \\`fetch(...)\\` or \\`connection()\\` accessed in \\`generateMetadata()\\` cause it to run dynamically.\\n\\n` +\n `Ways to fix this:\\n` +\n ` - [cache] Cache the metadata with \\`\"use cache\"\\` in \\`generateMetadata()\\` (does not apply to \\`connection()\\`)\\n` +\n ` - [dynamic] Render a marker component that calls \\`await connection()\\` inside \\`<Suspense>\\` on the page\\n\\n` +\n `Learn more: https://nextjs.org/docs/messages/blocking-prerender-metadata-dynamic`\n )\n}\n\nexport function createLinkViewportError(route: string): Error {\n return new Error(\n `Route \"${route}\": Next.js encountered URL data in \\`generateViewport()\\`.\\n\\n` +\n `\\`params\\` or \\`searchParams\\` in \\`generateViewport()\\` prevents the page from being prerendered, leading to a slower user experience.\\n\\n` +\n `Ways to fix this:\\n` +\n ` - [static] Use a static viewport export instead of \\`generateViewport()\\`\\n` +\n ` - [block] Set \\`export const instant = false\\` to allow a blocking route\\n\\n` +\n `Learn more: https://nextjs.org/docs/messages/blocking-prerender-viewport-runtime`\n )\n}\n\nexport function createRuntimeViewportError(route: string): Error {\n return new Error(\n `Route \"${route}\": Next.js encountered runtime data in \\`generateViewport()\\`.\\n\\n` +\n `\\`cookies()\\`, \\`headers()\\`, \\`params\\`, or \\`searchParams\\` in \\`generateViewport()\\` prevents the page from being prerendered, leading to a slower user experience.\\n\\n` +\n `Ways to fix this:\\n` +\n ` - [static] Use a static viewport export instead of \\`generateViewport()\\`\\n` +\n ` - [block] Set \\`export const instant = false\\` to allow a blocking route\\n\\n` +\n `Learn more: https://nextjs.org/docs/messages/blocking-prerender-viewport-runtime`\n )\n}\n\nexport function createDynamicViewportError(route: string): Error {\n return new Error(\n `Route \"${route}\": Next.js encountered uncached data in \\`generateViewport()\\`.\\n\\n` +\n `\\`fetch(...)\\` or \\`connection()\\` in \\`generateViewport()\\` prevents the page from being prerendered, leading to a slower user experience.\\n\\n` +\n `Ways to fix this:\\n` +\n ` - [cache] Cache the viewport data with \\`\"use cache\"\\` in \\`generateViewport()\\` (does not apply to \\`connection()\\`)\\n` +\n ` - [block] Set \\`export const instant = false\\` to allow a blocking route\\n\\n` +\n `Learn more: https://nextjs.org/docs/messages/blocking-prerender-viewport-dynamic`\n )\n}\n\n/**\n * NOTE: Prefer `createRuntimeViewportError` or `createDynamicViewportError`.\n * Only use this in situations like build-time static validation, where\n * we can't pinpoint a more specific reason.\n */\nexport function createDynamicOrRuntimeViewportError(route: string): Error {\n return new Error(\n `Route \"${route}\": Next.js encountered uncached or runtime data in \\`generateViewport()\\`.\\n\\n` +\n `This prevents the page from being prerendered, leading to a slower user experience. Unlike metadata, viewport cannot be streamed behind \\`<Suspense>\\` because it affects the initial page load.\\n\\n` +\n `Ways to fix this:\\n` +\n ` - [static] Use a static viewport export instead of \\`generateViewport()\\`\\n` +\n ` - [cache] For uncached data (\\`fetch\\`, database calls): cache the viewport with \\`\"use cache\"\\` in \\`generateViewport()\\` (does not apply to \\`connection()\\`)\\n` +\n ` - [block] Set \\`export const instant = false\\` to allow a blocking route\\n\\n` +\n `Learn more: https://nextjs.org/docs/messages/blocking-prerender-viewport-runtime`\n )\n}\n\n/**\n * NOTE: Prefer `createRuntimeMetadataError` or `createDynamicMetadataError`.\n * Only use this in situations like build-time static validation, where\n * we can't pinpoint a more specific reason.\n */\nexport function createDynamicOrRuntimeMetadataError(route: string): Error {\n return new Error(\n `Route \"${route}\": Next.js encountered uncached or runtime data in \\`generateMetadata()\\`.\\n\\n` +\n `This route's metadata is blocked, but the rest of its content can be prerendered.\\n\\n` +\n `Ways to fix this:\\n` +\n ` - [static] Use a static metadata export instead of \\`generateMetadata()\\`\\n` +\n ` - [cache] Cache the metadata with \\`\"use cache\"\\` in \\`generateMetadata()\\` (does not apply to \\`connection()\\`)\\n` +\n ` - [dynamic] Render a marker component that calls \\`await connection()\\` inside \\`<Suspense>\\` on the page\\n\\n` +\n `Learn more: https://nextjs.org/docs/messages/blocking-prerender-metadata-runtime`\n )\n}\n\nexport function logBuildDebugHint(route: string): void {\n if (process.env.NODE_ENV !== 'development') {\n console.error(\n `To get a more detailed stack trace and pinpoint the issue, try one of the following:\\n` +\n ` - Start the app in development mode by running \\`next dev\\`, then open \"${route}\" in your browser to investigate the error.\\n` +\n ` - Rerun the production build with \\`next build --debug-prerender\\` to generate better stack traces.`\n )\n } else if (!process.env.__NEXT_DEV_SERVER) {\n console.error(\n `To debug the issue, start the app in development mode by running \\`next dev\\`, then open \"${route}\" in your browser to investigate the error.`\n )\n }\n}\n","export const INSTANT_VALIDATION_BOUNDARY_NAME =\n '__next_instant_validation_boundary__'\n\nexport const INSTANT_SLOT_MARKER_PREFIX = '__next_instant_slot_'\nexport const INSTANT_SLOT_MARKER_SUFFIX = '__'\n","export type ValidationBoundaryTracking = {\n /**\n * Map from boundary id (the SegmentPath where a validation boundary is\n * placed) to the file paths of modules inside that boundary's subtree.\n * When the boundary spans multiple parallel slots, each slot contributes\n * its own first-found module path so all unrendered segments can be\n * reported together.\n */\n requiredIds: Map<string, string[]>\n renderedIds: Set<string>\n}\n\nexport function createValidationBoundaryTracking(): ValidationBoundaryTracking {\n return {\n requiredIds: new Map(),\n renderedIds: new Set(),\n }\n}\n\nexport function allRequiredBoundariesRendered(\n state: ValidationBoundaryTracking\n): boolean {\n for (const id of state.requiredIds.keys()) {\n if (!state.renderedIds.has(id)) {\n return false\n }\n }\n return true\n}\n","export function createUnrenderedSegmentError(\n route: string,\n missingFiles: readonly string[]\n): Error {\n let message = `Route \"${route}\": Could not validate that a segment in your UI has instant navigation.`\n if (missingFiles.length > 0) {\n const label =\n missingFiles.length === 1 ? 'Dropped segment' : 'Dropped segments'\n message +=\n `\\n\\nThis segment was dropped from rendering. Issues that would prevent instant navigation will go undetected.` +\n `\\n\\n${label}:\\n${missingFiles.map((p) => ` ${p}`).join('\\n')}` +\n `\\n\\nWays to fix this:` +\n `\\n - [render] Render the dropped segment` +\n `\\n - [ignore] Set \\`export const instant = false\\` to opt the dropped segment out of instant-navigation validation` +\n `\\n\\nLearn more: https://nextjs.org/docs/messages/instant-unrendered-segment`\n }\n return new Error(message)\n}\n\nexport function createLinkPrefetchPartialError(pathname: string): Error {\n return new Error(\n `Next.js encountered dynamic data during prefetching for \"${pathname}\".\\n\\n` +\n `This will lead to slower, more expensive prefetches.\\n\\n` +\n `Ways to fix this:\\n` +\n ` - [upgrade] Opt into Partial Prefetching by exporting \\`const prefetch = 'partial'\\` from the page or layout, or by setting \\`partialPrefetching: true\\` in next.config to opt the whole app in\\n` +\n ` - [disable] Remove \\`prefetch={true}\\` from the <Link> to use the default prefetch\\n` +\n ` - [ignore] Set \\`export const instant = false\\` to opt the route out of instant-navigation validation\\n\\n` +\n `Learn more: https://nextjs.org/docs/messages/instant-link-prefetch-partial`\n )\n}\n","/**\n * The functions provided by this module are used to communicate certain properties\n * about the currently running code so that Next.js can make decisions on how to handle\n * the current execution in different rendering modes such as pre-rendering, resuming, and SSR.\n *\n * Today Next.js treats all code as potentially static. Certain APIs may only make sense when dynamically rendering.\n * Traditionally this meant deopting the entire render to dynamic however with PPR we can now deopt parts\n * of a React tree as dynamic while still keeping other parts static. There are really two different kinds of\n * Dynamic indications.\n *\n * The first is simply an intention to be dynamic. unstable_noStore is an example of this where\n * the currently executing code simply declares that the current scope is dynamic but if you use it\n * inside unstable_cache it can still be cached. This type of indication can be removed if we ever\n * make the default dynamic to begin with because the only way you would ever be static is inside\n * a cache scope which this indication does not affect.\n *\n * The second is an indication that a dynamic data source was read. This is a stronger form of dynamic\n * because it means that it is inappropriate to cache this at all. using a dynamic data source inside\n * unstable_cache should error. If you want to use some dynamic data inside unstable_cache you should\n * read that data outside the cache and pass it in as an argument to the cached function.\n */\n\nimport type { WorkStore } from '../app-render/work-async-storage.external'\nimport type {\n WorkUnitStore,\n PrerenderStoreLegacy,\n PrerenderStoreModern,\n ValidationStoreClient,\n PrerenderStoreModernServer,\n} from '../app-render/work-unit-async-storage.external'\n\n// Once postpone is in stable we should switch to importing the postpone export directly\nimport React from 'react'\n\nimport { DynamicServerError } from '../../client/components/hooks-server-context'\nimport { StaticGenBailoutError } from '../../client/components/static-generation-bailout'\nimport {\n getStagedRenderingController,\n throwForMissingRequestStore,\n workUnitAsyncStorage,\n} from './work-unit-async-storage.external'\nimport { workAsyncStorage } from '../app-render/work-async-storage.external'\nimport {\n ClientHookDynamicError,\n isClientHookDynamicError,\n makeClientHookHangingPromise,\n trackRuntimeDataAccessed,\n} from '../dynamic-rendering-utils'\nimport {\n METADATA_BOUNDARY_NAME,\n VIEWPORT_BOUNDARY_NAME,\n OUTLET_BOUNDARY_NAME,\n ROOT_LAYOUT_BOUNDARY_NAME,\n} from '../../lib/framework/boundary-constants'\nimport { scheduleOnNextTick } from '../../lib/scheduler'\nimport { BailoutToCSRError } from '../../shared/lib/lazy-dynamic/bailout-to-csr'\nimport {\n createRuntimeBodyError,\n createDynamicBodyError,\n createRuntimeBodyErrorInNavigation,\n createDynamicBodyErrorInNavigation,\n createDynamicOrRuntimeBodyError,\n createRuntimeMetadataError,\n createDynamicMetadataError,\n createRuntimeViewportError,\n createDynamicViewportError,\n createDynamicOrRuntimeViewportError,\n createDynamicOrRuntimeMetadataError,\n logBuildDebugHint,\n createLinkBodyErrorInNavigation,\n createLinkMetadataError,\n createLinkViewportError,\n} from './blocking-route-messages'\nimport { InvariantError } from '../../shared/lib/invariant-error'\nimport {\n INSTANT_VALIDATION_BOUNDARY_NAME,\n INSTANT_SLOT_MARKER_PREFIX,\n INSTANT_SLOT_MARKER_SUFFIX,\n} from './instant-validation/boundary-constants'\nimport {\n type ValidationBoundaryTracking,\n allRequiredBoundariesRendered,\n} from './instant-validation/boundary-tracking'\nimport type { InstantValidationSampleTracking } from './instant-validation/instant-samples'\nimport { createUnrenderedSegmentError } from '../../shared/lib/instant-messages'\n\nconst hasPostpone = typeof React.unstable_postpone === 'function'\n\nexport type DynamicAccess = {\n /**\n * If debugging, this will contain the stack trace of where the dynamic access\n * occurred. This is used to provide more information to the user about why\n * their page is being rendered dynamically.\n */\n stack?: string\n\n /**\n * The expression that was accessed dynamically.\n */\n expression: string\n}\n\n// Stores dynamic reasons used during an RSC render.\nexport type DynamicTrackingState = {\n /**\n * When true, stack information will also be tracked during dynamic access.\n */\n readonly isDebugDynamicAccesses: boolean | undefined\n\n /**\n * The dynamic accesses that occurred during the render.\n */\n readonly dynamicAccesses: Array<DynamicAccess>\n\n syncDynamicErrorWithStack: null | Error\n syncDynamicErrorWithStackPostMicrotask: boolean\n}\n\n// Stores dynamic reasons used during an SSR render.\nexport type DynamicValidationState = {\n hasSuspenseAboveBody: boolean\n hasDynamicMetadata: boolean\n dynamicMetadata: null | Error\n hasDynamicViewport: boolean\n hasAllowedDynamic: boolean\n dynamicErrors: Array<Error>\n}\n\nexport function createDynamicTrackingState(\n isDebugDynamicAccesses: boolean | undefined\n): DynamicTrackingState {\n return {\n isDebugDynamicAccesses,\n dynamicAccesses: [],\n syncDynamicErrorWithStack: null,\n syncDynamicErrorWithStackPostMicrotask: false,\n }\n}\n\nexport function createDynamicValidationState(): DynamicValidationState {\n return {\n hasSuspenseAboveBody: false,\n hasDynamicMetadata: false,\n dynamicMetadata: null,\n hasDynamicViewport: false,\n hasAllowedDynamic: false,\n dynamicErrors: [],\n }\n}\n\nfunction getPendingClientSyncDynamicError(\n clientDynamic: DynamicTrackingState\n): null | Error {\n return clientDynamic.syncDynamicErrorWithStackPostMicrotask\n ? null\n : clientDynamic.syncDynamicErrorWithStack\n}\n\nexport function getFirstDynamicReason(\n trackingState: DynamicTrackingState\n): undefined | string {\n return trackingState.dynamicAccesses[0]?.expression\n}\n\n/**\n * This function communicates that the current scope should be treated as dynamic.\n *\n * In most cases this function is a no-op but if called during\n * a PPR prerender it will postpone the current sub-tree and calling\n * it during a normal prerender will cause the entire prerender to abort\n */\nexport function markCurrentScopeAsDynamic(\n store: WorkStore,\n workUnitStore: undefined | Exclude<WorkUnitStore, PrerenderStoreModern>,\n expression: string\n): void {\n if (workUnitStore) {\n switch (workUnitStore.type) {\n case 'cache':\n case 'unstable-cache':\n // Inside cache scopes, marking a scope as dynamic has no effect,\n // because the outer cache scope creates a cache boundary. This is\n // subtly different from reading a dynamic data source, which is\n // forbidden inside a cache scope.\n return\n case 'private-cache':\n // A private cache scope is already dynamic by definition.\n return\n case 'prerender-legacy':\n case 'prerender-ppr':\n case 'request':\n case 'generate-static-params':\n break\n default:\n workUnitStore satisfies never\n }\n }\n\n // If we're forcing dynamic rendering or we're forcing static rendering, we\n // don't need to do anything here because the entire page is already dynamic\n // or it's static and it should not throw or postpone here.\n if (store.forceDynamic || store.forceStatic) return\n\n if (store.dynamicShouldError) {\n throw new StaticGenBailoutError(\n `Route ${store.route} with \\`dynamic = \"error\"\\` couldn't be rendered statically because it used \\`${expression}\\`. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`\n )\n }\n\n if (workUnitStore) {\n switch (workUnitStore.type) {\n case 'prerender-ppr':\n return postponeWithTracking(\n store.route,\n expression,\n workUnitStore.dynamicTracking\n )\n case 'prerender-legacy':\n workUnitStore.revalidate = 0\n\n // We aren't prerendering, but we are generating a static page. We need\n // to bail out of static generation.\n const err = new DynamicServerError(\n `Route ${store.route} couldn't be rendered statically because it used ${expression}. See more info here: https://nextjs.org/docs/messages/dynamic-server-error`\n )\n store.dynamicUsageDescription = expression\n store.dynamicUsageStack = err.stack\n\n throw err\n case 'request':\n if (process.env.NODE_ENV !== 'production') {\n workUnitStore.usedDynamic = true\n }\n break\n case 'generate-static-params':\n break\n default:\n workUnitStore satisfies never\n }\n }\n}\n\n/**\n * This function is meant to be used when prerendering without cacheComponents or PPR.\n * When called during a build it will cause Next.js to consider the route as dynamic.\n *\n * @internal\n */\nexport function throwToInterruptStaticGeneration(\n expression: string,\n store: WorkStore,\n prerenderStore: PrerenderStoreLegacy\n): never {\n // We aren't prerendering but we are generating a static page. We need to bail out of static generation\n const err = new DynamicServerError(\n `Route ${store.route} couldn't be rendered statically because it used \\`${expression}\\`. See more info here: https://nextjs.org/docs/messages/dynamic-server-error`\n )\n\n prerenderStore.revalidate = 0\n\n store.dynamicUsageDescription = expression\n store.dynamicUsageStack = err.stack\n\n throw err\n}\n\n/**\n * This function should be used to track whether something dynamic happened even when\n * we are in a dynamic render. This is useful for Dev where all renders are dynamic but\n * we still track whether dynamic APIs were accessed for helpful messaging\n *\n * @internal\n */\nexport function trackDynamicDataInDynamicRender(workUnitStore: WorkUnitStore) {\n switch (workUnitStore.type) {\n case 'cache':\n case 'unstable-cache':\n // Inside cache scopes, marking a scope as dynamic has no effect,\n // because the outer cache scope creates a cache boundary. This is\n // subtly different from reading a dynamic data source, which is\n // forbidden inside a cache scope.\n return\n case 'private-cache':\n // A private cache scope is already dynamic by definition.\n return\n case 'prerender':\n case 'prerender-runtime':\n case 'prerender-legacy':\n case 'prerender-ppr':\n case 'prerender-client':\n case 'validation-client':\n case 'generate-static-params':\n break\n case 'request':\n if (process.env.NODE_ENV !== 'production') {\n workUnitStore.usedDynamic = true\n }\n break\n default:\n workUnitStore satisfies never\n }\n}\n\nfunction abortOnSynchronousDynamicDataAccess(\n route: string,\n expression: string,\n prerenderStore: PrerenderStoreModern\n): void {\n const reason = `Route ${route} needs to bail out of prerendering at this point because it used ${expression}.`\n\n const error = createPrerenderInterruptedError(reason)\n\n prerenderStore.controller.abort(error)\n\n const dynamicTracking = prerenderStore.dynamicTracking\n if (dynamicTracking) {\n dynamicTracking.dynamicAccesses.push({\n // When we aren't debugging, we don't need to create another error for the\n // stack trace.\n stack: dynamicTracking.isDebugDynamicAccesses\n ? new Error().stack\n : undefined,\n expression,\n })\n }\n}\n\nexport function abortOnSynchronousPlatformIOAccess(\n route: string,\n expression: string,\n errorWithStack: Error,\n prerenderStore: PrerenderStoreModern\n): void {\n const dynamicTracking = prerenderStore.dynamicTracking\n\n if (dynamicTracking && dynamicTracking.syncDynamicErrorWithStack === null) {\n dynamicTracking.syncDynamicErrorWithStack = errorWithStack\n // React completes the task that is currently rendering before scheduled\n // abort cleanup. Client tracking can attribute the sync IO only during\n // that current task; server tracking keeps the error regardless.\n queueMicrotask(() => {\n dynamicTracking.syncDynamicErrorWithStackPostMicrotask = true\n })\n }\n\n abortOnSynchronousDynamicDataAccess(route, expression, prerenderStore)\n}\n\n/**\n * use this function when prerendering with cacheComponents. If we are doing a\n * prospective prerender we don't actually abort because we want to discover\n * all caches for the shell. If this is the actual prerender we do abort.\n *\n * This function accepts a prerenderStore but the caller should ensure we're\n * actually running in cacheComponents mode.\n *\n * @internal\n */\nexport function abortAndThrowOnSynchronousRequestDataAccess(\n route: string,\n expression: string,\n errorWithStack: Error,\n prerenderStore: PrerenderStoreModern\n): never {\n // The synchronously accessed request data would have been available during\n // a runtime prerender, which would have rendered past this point instead of\n // aborting — so a runtime prefetch would produce more content than this\n // render. Record that, same as when request data access creates a hanging\n // promise (see makeRuntimeHangingPromise). Unlike\n // `abortOnSynchronousPlatformIOAccess`, which aborts a runtime prerender\n // all the same and therefore must not record anything.\n trackRuntimeDataAccessed(prerenderStore)\n\n const prerenderSignal = prerenderStore.controller.signal\n if (prerenderSignal.aborted === false) {\n // TODO it would be better to move this aborted check into the callsite so we can avoid making\n // the error object when it isn't relevant to the aborting of the prerender however\n // since we need the throw semantics regardless of whether we abort it is easier to land\n // this way. See how this was handled with `abortOnSynchronousPlatformIOAccess` for a closer\n // to ideal implementation\n abortOnSynchronousDynamicDataAccess(route, expression, prerenderStore)\n // Preserve the exact server-side dynamic access for final validation after\n // interrupting this render.\n const dynamicTracking = prerenderStore.dynamicTracking\n if (dynamicTracking) {\n if (dynamicTracking.syncDynamicErrorWithStack === null) {\n dynamicTracking.syncDynamicErrorWithStack = errorWithStack\n }\n }\n }\n throw createPrerenderInterruptedError(\n `Route ${route} needs to bail out of prerendering at this point because it used ${expression}.`\n )\n}\n\n/**\n * This component will call `React.postpone` that throws the postponed error.\n */\ntype PostponeProps = {\n reason: string\n route: string\n}\nexport function Postpone({ reason, route }: PostponeProps): never {\n const prerenderStore = workUnitAsyncStorage.getStore()\n const dynamicTracking =\n prerenderStore && prerenderStore.type === 'prerender-ppr'\n ? prerenderStore.dynamicTracking\n : null\n postponeWithTracking(route, reason, dynamicTracking)\n}\n\nexport function postponeWithTracking(\n route: string,\n expression: string,\n dynamicTracking: null | DynamicTrackingState\n): never {\n assertPostpone()\n if (dynamicTracking) {\n dynamicTracking.dynamicAccesses.push({\n // When we aren't debugging, we don't need to create another error for the\n // stack trace.\n stack: dynamicTracking.isDebugDynamicAccesses\n ? new Error().stack\n : undefined,\n expression,\n })\n }\n\n React.unstable_postpone(createPostponeReason(route, expression))\n}\n\nfunction createPostponeReason(route: string, expression: string) {\n return (\n `Route ${route} needs to bail out of prerendering at this point because it used ${expression}. ` +\n `React throws this special object to indicate where. It should not be caught by ` +\n `your own try/catch. Learn more: https://nextjs.org/docs/messages/ppr-caught-error`\n )\n}\n\nexport function isDynamicPostpone(err: unknown) {\n if (\n typeof err === 'object' &&\n err !== null &&\n typeof (err as any).message === 'string'\n ) {\n return isDynamicPostponeReason((err as any).message)\n }\n return false\n}\n\nfunction isDynamicPostponeReason(reason: string) {\n return (\n reason.includes(\n 'needs to bail out of prerendering at this point because it used'\n ) &&\n reason.includes(\n 'Learn more: https://nextjs.org/docs/messages/ppr-caught-error'\n )\n )\n}\n\nif (isDynamicPostponeReason(createPostponeReason('%%%', '^^^')) === false) {\n throw new Error(\n 'Invariant: isDynamicPostpone misidentified a postpone reason. This is a bug in Next.js'\n )\n}\n\nconst NEXT_PRERENDER_INTERRUPTED = 'NEXT_PRERENDER_INTERRUPTED'\n\nfunction createPrerenderInterruptedError(message: string): Error {\n const error = new Error(message)\n ;(error as any).digest = NEXT_PRERENDER_INTERRUPTED\n return error\n}\n\ntype DigestError = Error & {\n digest: string\n}\n\nexport function isPrerenderInterruptedError(\n error: unknown\n): error is DigestError {\n return (\n typeof error === 'object' &&\n error !== null &&\n (error as any).digest === NEXT_PRERENDER_INTERRUPTED &&\n 'name' in error &&\n 'message' in error &&\n error instanceof Error\n )\n}\n\nexport function accessedDynamicData(\n dynamicAccesses: Array<DynamicAccess>\n): boolean {\n return dynamicAccesses.length > 0\n}\n\nexport function consumeDynamicAccess(\n serverDynamic: DynamicTrackingState,\n clientDynamic: DynamicTrackingState\n): DynamicTrackingState['dynamicAccesses'] {\n // We mutate because we only call this once we are no longer writing\n // to the dynamicTrackingState and it's more efficient than creating a new\n // array.\n serverDynamic.dynamicAccesses.push(...clientDynamic.dynamicAccesses)\n return serverDynamic.dynamicAccesses\n}\n\nexport function formatDynamicAPIAccesses(\n dynamicAccesses: Array<DynamicAccess>\n): string[] {\n return dynamicAccesses\n .filter(\n (access): access is Required<DynamicAccess> =>\n typeof access.stack === 'string' && access.stack.length > 0\n )\n .map(({ expression, stack }) => {\n stack = stack\n .split('\\n')\n // Remove the \"Error: \" prefix from the first line of the stack trace as\n // well as the first 4 lines of the stack trace which is the distance\n // from the user code and the `new Error().stack` call.\n .slice(4)\n .filter((line) => {\n // Exclude Next.js internals from the stack trace.\n if (line.includes('node_modules/next/')) {\n return false\n }\n\n // Exclude anonymous functions from the stack trace.\n if (line.includes(' (<anonymous>)')) {\n return false\n }\n\n // Exclude Node.js internals from the stack trace.\n if (line.includes(' (node:')) {\n return false\n }\n\n return true\n })\n .join('\\n')\n return `Dynamic API Usage Debug - ${expression}:\\n${stack}`\n })\n}\n\nfunction assertPostpone() {\n if (!hasPostpone) {\n throw new Error(\n `Invariant: React.unstable_postpone is not defined. This suggests the wrong version of React was loaded. This is a bug in Next.js`\n )\n }\n}\n\n/**\n * This is a bit of a hack to allow us to abort a render using a Postpone instance instead of an Error which changes React's\n * abort semantics slightly.\n */\nexport function createRenderInBrowserAbortSignal(): AbortSignal {\n const controller = new AbortController()\n controller.abort(new BailoutToCSRError('Render in Browser'))\n return controller.signal\n}\n\n/**\n * In a prerender, we may end up with hanging Promises as inputs due them\n * stalling on connection() or because they're loading dynamic data. In that\n * case we need to abort the encoding of arguments since they'll never complete.\n */\nexport function createHangingInputAbortSignal(\n workUnitStore: PrerenderStoreModernServer\n): AbortSignal\nexport function createHangingInputAbortSignal(\n workUnitStore: WorkUnitStore\n): AbortSignal | undefined\nexport function createHangingInputAbortSignal(\n workUnitStore: WorkUnitStore\n): AbortSignal | undefined {\n switch (workUnitStore.type) {\n case 'prerender':\n case 'prerender-runtime':\n const controller = new AbortController()\n\n if (workUnitStore.cacheSignal) {\n // If we have a cacheSignal it means we're in a prospective render. If\n // the input we're waiting on is coming from another cache, we do want\n // to wait for it so that we can resolve this cache entry too.\n workUnitStore.cacheSignal.inputReady().then(() => {\n controller.abort()\n })\n } else {\n // Otherwise we're in the final render and we should already have all\n // our caches filled.\n // If the prerender uses stages, we have wait until the final stage.\n // if an input didn't resolve at that point, then we can assume it never will.\n //\n // We might still be waiting on some microtasks so we\n // wait one tick before giving up. When we give up, we still want to\n // render the content of this cache as deeply as we can so that we can\n // suspend as deeply as possible in the tree or not at all if we don't\n // end up waiting for the input.\n\n const stagedRendering = getStagedRenderingController(workUnitStore)\n if (stagedRendering && stagedRendering.finalStage !== null) {\n stagedRendering\n .waitForStage(stagedRendering.finalStage)\n .then(() => scheduleOnNextTick(() => controller.abort()), noop)\n } else {\n scheduleOnNextTick(() => controller.abort())\n }\n }\n\n return controller.signal\n case 'prerender-client':\n case 'validation-client':\n case 'prerender-ppr':\n case 'prerender-legacy':\n case 'request':\n case 'cache':\n case 'private-cache':\n case 'unstable-cache':\n case 'generate-static-params':\n return undefined\n default:\n workUnitStore satisfies never\n }\n}\n\nfunction noop() {}\n\nexport function annotateDynamicAccess(\n expression: string,\n prerenderStore: PrerenderStoreModern | ValidationStoreClient\n) {\n const dynamicTracking = prerenderStore.dynamicTracking\n if (dynamicTracking) {\n dynamicTracking.dynamicAccesses.push({\n stack: dynamicTracking.isDebugDynamicAccesses\n ? new Error().stack\n : undefined,\n expression,\n })\n }\n}\n\nexport function useDynamicRouteParams(expression: string) {\n const workStore = workAsyncStorage.getStore()\n const workUnitStore = workUnitAsyncStorage.getStore()\n if (workStore && workUnitStore) {\n switch (workUnitStore.type) {\n case 'prerender-client': {\n const fallbackParams = workUnitStore.fallbackRouteParams\n\n if (fallbackParams && fallbackParams.size > 0) {\n // We are in a prerender with cacheComponents semantics. We are going to\n // hang here and never resolve. This will cause the currently\n // rendering component to effectively be a dynamic hole.\n React.use(\n makeClientHookHangingPromise(\n workUnitStore.renderSignal,\n new ClientHookDynamicError(workStore.route, expression)\n )\n )\n }\n break\n }\n case 'prerender':\n throw new InvariantError(\n `\\`${expression}\\` was called from a Server Component. Next.js should be preventing ${expression} from being included in server components statically, but did not in this case.`\n )\n case 'prerender-ppr': {\n const fallbackParams = workUnitStore.fallbackRouteParams\n if (fallbackParams && fallbackParams.size > 0) {\n return postponeWithTracking(\n workStore.route,\n expression,\n workUnitStore.dynamicTracking\n )\n }\n break\n }\n case 'validation-client': {\n // Don't check fallbackRouteParams here. We handle params that weren't\n // provided in the samples using a proxy that throws when accessed.\n break\n }\n case 'prerender-runtime':\n throw new InvariantError(\n `\\`${expression}\\` was called during a runtime prerender. Next.js should be preventing ${expression} from being included in server components statically, but did not in this case.`\n )\n case 'cache':\n case 'private-cache':\n throw new InvariantError(\n `\\`${expression}\\` was called inside a cache scope. Next.js should be preventing ${expression} from being included in server components statically, but did not in this case.`\n )\n case 'generate-static-params':\n throw new InvariantError(\n `\\`${expression}\\` was called in \\`generateStaticParams\\`. Next.js should be preventing ${expression} from being included in server component files statically, but did not in this case.`\n )\n case 'prerender-legacy':\n case 'request':\n case 'unstable-cache':\n break\n default:\n workUnitStore satisfies never\n }\n }\n}\n\nexport function useDynamicSearchParams(expression: string) {\n const workStore = workAsyncStorage.getStore()\n const workUnitStore = workUnitAsyncStorage.getStore()\n\n if (!workStore) {\n // We assume pages router context and just return\n return\n }\n\n if (!workUnitStore) {\n throwForMissingRequestStore(expression)\n }\n\n switch (workUnitStore.type) {\n case 'validation-client':\n // During instant validation we try to behave as close to client as possible,\n // so this shouldn't hang during SSR.\n return\n case 'prerender-client': {\n React.use(\n makeClientHookHangingPromise(\n workUnitStore.renderSignal,\n new ClientHookDynamicError(workStore.route, expression)\n )\n )\n break\n }\n case 'prerender-legacy':\n case 'prerender-ppr': {\n if (workStore.forceStatic) {\n return\n }\n throw new BailoutToCSRError(expression)\n }\n case 'prerender':\n case 'prerender-runtime':\n throw new InvariantError(\n `\\`${expression}\\` was called from a Server Component. Next.js should be preventing ${expression} from being included in server components statically, but did not in this case.`\n )\n case 'cache':\n case 'unstable-cache':\n case 'private-cache':\n throw new InvariantError(\n `\\`${expression}\\` was called inside a cache scope. Next.js should be preventing ${expression} from being included in server components statically, but did not in this case.`\n )\n case 'generate-static-params':\n throw new InvariantError(\n `\\`${expression}\\` was called in \\`generateStaticParams\\`. Next.js should be preventing ${expression} from being included in server component files statically, but did not in this case.`\n )\n case 'request':\n return\n default:\n workUnitStore satisfies never\n }\n}\n\nconst hasSuspenseRegex = /\\n\\s+at Suspense \\(<anonymous>\\)/\n\n// Common implicit body tags that React will treat as body when placed directly in html\nconst bodyAndImplicitTags =\n 'body|div|main|section|article|aside|header|footer|nav|form|p|span|h1|h2|h3|h4|h5|h6'\n\n// Detects when RootLayoutBoundary (our framework marker component) appears\n// after Suspense in the component stack, indicating the root layout is wrapped\n// within a Suspense boundary. Ensures no body/html/implicit-body components are in between.\n//\n// Example matches:\n// at Suspense (<anonymous>)\n// at __next_root_layout_boundary__ (<anonymous>)\n//\n// Or with other components in between (but not body/html/implicit-body):\n// at Suspense (<anonymous>)\n// at SomeComponent (<anonymous>)\n// at __next_root_layout_boundary__ (<anonymous>)\nconst hasSuspenseBeforeRootLayoutWithoutBodyOrImplicitBodyRegex = new RegExp(\n `\\\\n\\\\s+at Suspense \\\\(<anonymous>\\\\)(?:(?!\\\\n\\\\s+at (?:${bodyAndImplicitTags}) \\\\(<anonymous>\\\\))[\\\\s\\\\S])*?\\\\n\\\\s+at ${ROOT_LAYOUT_BOUNDARY_NAME} \\\\([^\\\\n]*\\\\)`\n)\n\nconst hasMetadataRegex = new RegExp(\n `\\\\n\\\\s+at ${METADATA_BOUNDARY_NAME}[\\\\n\\\\s]`\n)\nconst hasViewportRegex = new RegExp(\n `\\\\n\\\\s+at ${VIEWPORT_BOUNDARY_NAME}[\\\\n\\\\s]`\n)\nconst hasOutletRegex = new RegExp(`\\\\n\\\\s+at ${OUTLET_BOUNDARY_NAME}[\\\\n\\\\s]`)\n\nconst hasInstantValidationBoundaryRegex = new RegExp(\n `\\\\n\\\\s+at ${INSTANT_VALIDATION_BOUNDARY_NAME}[\\\\n\\\\s]`\n)\nconst slotMarkerRegex = new RegExp(\n `\\\\n\\\\s+at ${INSTANT_SLOT_MARKER_PREFIX}(\\\\d+)${INSTANT_SLOT_MARKER_SUFFIX}[\\\\n\\\\s]`\n)\n\n/** Look up the config factory for the slot this error belongs to.\n * Checks the component stack for a slot marker (__next_instant_slot_N__)\n * and returns the config at that index. Falls back to index 0 (root\n * config) when no slot marker is found or the slot has no config. */\nfunction resolveInstantStack(\n componentStack: string,\n dynamicValidation: InstantValidationState\n): (() => Error) | null {\n const { slotStacks } = dynamicValidation\n if (slotStacks.length > 1) {\n const match = slotMarkerRegex.exec(componentStack)\n if (match) {\n // Slot markers are 0-indexed in the component name but\n // slotStacks is 1-indexed (index 0 is the root config).\n const slotIndex = parseInt(match[1], 10) + 1\n const slotStack = slotStacks[slotIndex]\n if (slotStack != null) {\n return slotStack\n }\n }\n }\n // Fall back to root config (index 0)\n return slotStacks[0] ?? null\n}\n\n/**\n * Inspects the component stack of an outlet boundary to discover whether the\n * user placed a Suspense boundary above the document body, and records the\n * opt-in on `dynamicValidation.hasSuspenseAboveBody` if so.\n *\n * The outlet itself isn't a meaningful source of dynamic — it only resolves\n * when metadata/viewport are dynamic, which we track via their own boundaries.\n * However, the outlet renders alongside the page content, so its stack passes\n * through the user's layout chain (typically reaching into `<body>` via the\n * root layout). That makes the outlet stack our best opportunity to spot a\n * Suspense boundary above the body, even when no real body content is dynamic.\n * Without this, a route whose only dynamic source is `generateViewport()` would\n * miss the Suspense-above-body opt-in, because the viewport's stack lives in\n * the head and never sees the user's root layout.\n *\n * We deliberately only set `hasSuspenseAboveBody`, not `hasAllowedDynamic`. The\n * latter tracks whether the body has dynamic content that's been wrapped in\n * Suspense (i.e., the page is partially dynamic). The outlet rendering tells us\n * about the structural opt-in for an empty shell, not about the body being\n * partially dynamic. The distinction matters because dynamic metadata is only\n * acceptable when the page is partially dynamic (via real body holes), and we\n * don't want this outlet-based detection to mask that case.\n */\nfunction trackOutletSuspenseAboveBody(\n componentStack: string,\n dynamicValidation: DynamicValidationState\n): void {\n if (\n hasSuspenseBeforeRootLayoutWithoutBodyOrImplicitBodyRegex.test(\n componentStack\n )\n ) {\n dynamicValidation.hasSuspenseAboveBody = true\n }\n}\n\nexport function trackAllowedDynamicAccess(\n dynamicReason: unknown,\n workStore: WorkStore,\n componentStack: string,\n dynamicValidation: DynamicValidationState,\n clientDynamic: DynamicTrackingState\n) {\n const syncDynamicError = getPendingClientSyncDynamicError(clientDynamic)\n\n if (hasOutletRegex.test(componentStack)) {\n trackOutletSuspenseAboveBody(componentStack, dynamicValidation)\n return\n } else if (hasMetadataRegex.test(componentStack)) {\n dynamicValidation.hasDynamicMetadata = true\n return\n } else if (hasViewportRegex.test(componentStack)) {\n dynamicValidation.hasDynamicViewport = true\n return\n } else if (\n hasSuspenseBeforeRootLayoutWithoutBodyOrImplicitBodyRegex.test(\n componentStack\n )\n ) {\n // For Suspense within body, the prelude wouldn't be empty so it wouldn't violate the empty static shells rule.\n // But if you have Suspense above body, the prelude is empty but we allow that because having Suspense\n // is an explicit signal from the user that they acknowledge the empty shell and want dynamic rendering.\n dynamicValidation.hasAllowedDynamic = true\n dynamicValidation.hasSuspenseAboveBody = true\n return\n } else if (hasSuspenseRegex.test(componentStack)) {\n // this error had a Suspense boundary above it so we don't need to report it as a source\n // of disallowed\n dynamicValidation.hasAllowedDynamic = true\n return\n } else if (syncDynamicError) {\n dynamicValidation.dynamicErrors.push(syncDynamicError)\n return\n }\n\n if (isClientHookDynamicError(dynamicReason)) {\n dynamicValidation.dynamicErrors.push(\n addErrorContext(dynamicReason, componentStack, null)\n )\n return\n }\n\n const error = addErrorContext(\n createDynamicOrRuntimeBodyError(workStore.route),\n componentStack,\n null\n )\n dynamicValidation.dynamicErrors.push(error)\n return\n}\n\nexport enum DynamicHoleKind {\n /** We know that this hole is caused by link data. */\n Link = 1,\n /** We know that this hole is caused by runtime data. */\n Runtime = 2,\n /** We know that this hole is caused by dynamic data. */\n Dynamic = 3,\n}\n\n/** Stores dynamic reasons used during an SSR render in instant validation. */\nexport type InstantValidationState = {\n hasDynamicMetadata: boolean\n hasAllowedClientDynamicAboveBoundary: boolean\n dynamicMetadata: null | Error\n hasDynamicViewport: boolean\n hasAllowedDynamic: boolean\n dynamicErrors: Array<Error>\n validationPreventingErrors: Array<Error>\n thrownErrorsOutsideBoundary: Array<unknown>\n /** Per-slot config factories. Index 0 is the root config (fallback).\n * Indices 1+ correspond to slot marker components in the tree. */\n slotStacks: Array<(() => Error) | null>\n}\n\nexport function createInstantValidationState(\n slotStacks: Array<(() => Error) | null>\n): InstantValidationState {\n return {\n hasDynamicMetadata: false,\n hasAllowedClientDynamicAboveBoundary: false,\n dynamicMetadata: null,\n hasDynamicViewport: false,\n hasAllowedDynamic: false,\n dynamicErrors: [],\n validationPreventingErrors: [],\n thrownErrorsOutsideBoundary: [],\n slotStacks,\n }\n}\n\nexport function trackDynamicHoleInNavigation(\n dynamicReason: unknown,\n workStore: WorkStore,\n componentStack: string,\n dynamicValidation: InstantValidationState,\n clientDynamic: DynamicTrackingState,\n kind: DynamicHoleKind,\n boundaryState: ValidationBoundaryTracking\n) {\n const syncDynamicError = getPendingClientSyncDynamicError(clientDynamic)\n\n if (hasOutletRegex.test(componentStack)) {\n // We don't need to track that this is dynamic. It is only so when something else is also dynamic.\n return\n }\n // Resolve the config stack for this specific error. If the error\n // is inside a slot marker, use that slot's config. Otherwise fall\n // back to the default.\n const effectiveCreateInstantStack = resolveInstantStack(\n componentStack,\n dynamicValidation\n )\n\n if (hasMetadataRegex.test(componentStack)) {\n const error = addErrorContext(\n kind === DynamicHoleKind.Link\n ? createLinkMetadataError(workStore.route)\n : kind === DynamicHoleKind.Runtime\n ? createRuntimeMetadataError(workStore.route)\n : createDynamicMetadataError(workStore.route),\n componentStack,\n effectiveCreateInstantStack\n )\n dynamicValidation.dynamicMetadata = error\n return\n }\n if (hasViewportRegex.test(componentStack)) {\n const error = addErrorContext(\n kind === DynamicHoleKind.Link\n ? createLinkViewportError(workStore.route)\n : kind === DynamicHoleKind.Runtime\n ? createRuntimeViewportError(workStore.route)\n : createDynamicViewportError(workStore.route),\n componentStack,\n effectiveCreateInstantStack\n )\n dynamicValidation.dynamicErrors.push(error)\n return\n }\n\n const boundaryLocation =\n hasInstantValidationBoundaryRegex.exec(componentStack)\n if (!boundaryLocation) {\n // We don't see the validation boundary in the component stack,\n // so this hole must be coming from a shared parent.\n // Shared parents are fully resolved and don't have RSC holes,\n // but they can still suspend in a client component during SSR.\n\n // If we managed to render all the validation boundaries, that means\n // that the client holes aren't blocking validation and we can disregard them.\n // Note that we don't even care whether they have suspense or not.\n if (allRequiredBoundariesRendered(boundaryState)) {\n dynamicValidation.hasAllowedClientDynamicAboveBoundary = true\n dynamicValidation.hasAllowedDynamic = true // Holes outside the boundary contribute to allowing dynamic metadata\n return\n } else {\n // TODO(instant-validation) TODO(NAR-787)\n // If shared parents blocked us from validating, we should only log\n // the errors from the innermost (segments), i.e. omit layouts whose\n // slots managed to render (because clearly they didn't block validation)\n const message = `Route \"${workStore.route}\": Could not validate \\`instant\\` because a Client Component in a parent segment prevented the page from rendering.`\n const error = addErrorContext(\n new Error(message),\n componentStack,\n effectiveCreateInstantStack\n )\n dynamicValidation.validationPreventingErrors.push(error)\n return\n }\n } else {\n // The hole originates inside the validation boundary.\n //\n // Check if we have a Suspense above the hole, but below the validation boundary.\n // If we do, then this dynamic usage wouldn't block a navigation to this subtree.\n // Conversely, if the nearest suspense is above the validation boundary, then this subtree would block.\n //\n // Note that in the component stack, children come before parents.\n //\n // Valid:\n // ...\n // at Suspense\n // ...\n // at __next_prefetch_validation_boundary__\n //\n // Invalid:\n // ...\n // at __next_prefetch_validation_boundary__\n // ...\n // at Suspense\n //\n const suspenseLocation = hasSuspenseRegex.exec(componentStack)\n if (suspenseLocation) {\n if (suspenseLocation.index < boundaryLocation.index) {\n dynamicValidation.hasAllowedDynamic = true\n return\n } else {\n // invalid - fallthrough\n }\n }\n }\n\n if (syncDynamicError) {\n if (\n effectiveCreateInstantStack !== null &&\n syncDynamicError.cause === undefined\n ) {\n syncDynamicError.cause = effectiveCreateInstantStack()\n }\n dynamicValidation.dynamicErrors.push(syncDynamicError)\n return\n }\n\n if (isClientHookDynamicError(dynamicReason)) {\n dynamicValidation.dynamicErrors.push(\n addErrorContext(\n dynamicReason,\n componentStack,\n effectiveCreateInstantStack\n )\n )\n return\n }\n\n const error = addErrorContext(\n kind === DynamicHoleKind.Link\n ? createLinkBodyErrorInNavigation(workStore.route)\n : kind === DynamicHoleKind.Runtime\n ? createRuntimeBodyErrorInNavigation(workStore.route)\n : createDynamicBodyErrorInNavigation(workStore.route),\n componentStack,\n effectiveCreateInstantStack\n )\n dynamicValidation.dynamicErrors.push(error)\n return\n}\n\nexport function trackThrownErrorInNavigation(\n workStore: WorkStore,\n dynamicValidation: InstantValidationState,\n thrownValue: unknown,\n componentStack: string\n) {\n const boundaryLocation =\n hasInstantValidationBoundaryRegex.exec(componentStack)\n if (!boundaryLocation) {\n // There's no validation boundary on the component stack.\n // This error may have blocked a boundary from rendering.\n\n // Wrap the error to provide component context.\n // This helps for errors from node_modules which would otherwise\n // have no useful stack information due to ignore-listing,\n // e.g. next/dynamic with `ssr: false`.\n const error = addErrorContext(\n new Error(\n 'An error occurred while attempting to validate instant UI. This error may be preventing the validation from completing.',\n { cause: thrownValue }\n ),\n componentStack,\n null\n )\n dynamicValidation.thrownErrorsOutsideBoundary.push(error)\n } else {\n // There's validation boundary on the component stack,\n // so we know this error didn't block a validation boundary from rendering.\n // However, this error might be hiding be hiding dynamic content that would\n // cause validation to fail.\n const suspenseLocation = hasSuspenseRegex.exec(componentStack)\n if (suspenseLocation) {\n if (suspenseLocation.index < boundaryLocation.index) {\n // There's a Suspense below the validation boundary but above this error's location.\n // This subtree can't fail instant validation because any potential\n // dynamic holes would be guarded by the Suspense anyway,\n // so we can allow this.\n return\n } else {\n // invalid - fallthrough\n }\n }\n const message = `Route \"${workStore.route}\": Could not validate \\`instant\\` because an error prevented the target segment from rendering.`\n const error = addErrorContext(\n new Error(message, { cause: thrownValue }),\n componentStack,\n null // TODO(instant-validation-build): conflicting use of cause\n )\n dynamicValidation.validationPreventingErrors.push(error)\n }\n}\n\nexport function trackDynamicHoleInRuntimeShell(\n dynamicReason: unknown,\n workStore: WorkStore,\n componentStack: string,\n dynamicValidation: DynamicValidationState,\n clientDynamic: DynamicTrackingState\n) {\n const syncDynamicError = getPendingClientSyncDynamicError(clientDynamic)\n\n if (hasOutletRegex.test(componentStack)) {\n trackOutletSuspenseAboveBody(componentStack, dynamicValidation)\n return\n } else if (hasMetadataRegex.test(componentStack)) {\n const error = addErrorContext(\n createDynamicMetadataError(workStore.route),\n componentStack,\n null\n )\n dynamicValidation.dynamicMetadata = error\n return\n } else if (hasViewportRegex.test(componentStack)) {\n const error = addErrorContext(\n createDynamicViewportError(workStore.route),\n componentStack,\n null\n )\n dynamicValidation.dynamicErrors.push(error)\n return\n } else if (\n hasSuspenseBeforeRootLayoutWithoutBodyOrImplicitBodyRegex.test(\n componentStack\n )\n ) {\n // For Suspense within body, the prelude wouldn't be empty so it wouldn't violate the empty static shells rule.\n // But if you have Suspense above body, the prelude is empty but we allow that because having Suspense\n // is an explicit signal from the user that they acknowledge the empty shell and want dynamic rendering.\n dynamicValidation.hasAllowedDynamic = true\n dynamicValidation.hasSuspenseAboveBody = true\n return\n } else if (hasSuspenseRegex.test(componentStack)) {\n // this error had a Suspense boundary above it so we don't need to report it as a source\n // of disallowed\n dynamicValidation.hasAllowedDynamic = true\n return\n } else if (syncDynamicError) {\n dynamicValidation.dynamicErrors.push(syncDynamicError)\n return\n }\n\n if (isClientHookDynamicError(dynamicReason)) {\n dynamicValidation.dynamicErrors.push(\n addErrorContext(dynamicReason, componentStack, null)\n )\n return\n }\n\n const error = addErrorContext(\n createDynamicBodyError(workStore.route),\n componentStack,\n null\n )\n dynamicValidation.dynamicErrors.push(error)\n return\n}\n\nexport function trackDynamicHoleInStaticShell(\n dynamicReason: unknown,\n workStore: WorkStore,\n componentStack: string,\n dynamicValidation: DynamicValidationState,\n clientDynamic: DynamicTrackingState\n) {\n const syncDynamicError = getPendingClientSyncDynamicError(clientDynamic)\n\n if (hasOutletRegex.test(componentStack)) {\n trackOutletSuspenseAboveBody(componentStack, dynamicValidation)\n return\n } else if (hasMetadataRegex.test(componentStack)) {\n const error = addErrorContext(\n createRuntimeMetadataError(workStore.route),\n componentStack,\n null\n )\n dynamicValidation.dynamicMetadata = error\n return\n } else if (hasViewportRegex.test(componentStack)) {\n const error = addErrorContext(\n createRuntimeViewportError(workStore.route),\n componentStack,\n null\n )\n dynamicValidation.dynamicErrors.push(error)\n return\n } else if (\n hasSuspenseBeforeRootLayoutWithoutBodyOrImplicitBodyRegex.test(\n componentStack\n )\n ) {\n // For Suspense within body, the prelude wouldn't be empty so it wouldn't violate the empty static shells rule.\n // But if you have Suspense above body, the prelude is empty but we allow that because having Suspense\n // is an explicit signal from the user that they acknowledge the empty shell and want dynamic rendering.\n dynamicValidation.hasAllowedDynamic = true\n dynamicValidation.hasSuspenseAboveBody = true\n return\n } else if (hasSuspenseRegex.test(componentStack)) {\n // this error had a Suspense boundary above it so we don't need to report it as a source\n // of disallowed\n dynamicValidation.hasAllowedDynamic = true\n return\n } else if (syncDynamicError) {\n dynamicValidation.dynamicErrors.push(syncDynamicError)\n return\n }\n\n if (isClientHookDynamicError(dynamicReason)) {\n dynamicValidation.dynamicErrors.push(\n addErrorContext(dynamicReason, componentStack, null)\n )\n return\n }\n\n const error = addErrorContext(\n createRuntimeBodyError(workStore.route),\n componentStack,\n null\n )\n dynamicValidation.dynamicErrors.push(error)\n return\n}\n\n/**\n * In dev mode, we prefer using the owner stack, otherwise the provided\n * component stack is used.\n *\n * Accepts an already-created Error so the SWC error-code plugin can see the\n * `new Error(...)` call at each call site and auto-assign error codes.\n */\nfunction addErrorContext(\n error: Error,\n componentStack: string,\n createInstantStack: (() => Error) | null\n) {\n const ownerStack =\n process.env.NODE_ENV !== 'production' && React.captureOwnerStack\n ? React.captureOwnerStack()\n : null\n\n if (createInstantStack !== null) {\n error.cause = createInstantStack()\n }\n // TODO go back to owner stack here if available. This is temporarily using componentStack to get the right\n //\n error.stack =\n error.name + ': ' + error.message + (ownerStack || componentStack)\n return error\n}\n\nexport enum PreludeState {\n Full = 0,\n Empty = 1,\n Errored = 2,\n}\n\nexport function logDisallowedDynamicError(\n workStore: WorkStore,\n error: Error\n): void {\n console.error(error)\n logBuildDebugHint(workStore.route)\n}\n\nexport function throwIfSyncIOUsed(\n workStore: WorkStore,\n serverDynamic: DynamicTrackingState\n) {\n if (serverDynamic.syncDynamicErrorWithStack) {\n logDisallowedDynamicError(\n workStore,\n serverDynamic.syncDynamicErrorWithStack\n )\n throw new StaticGenBailoutError()\n }\n}\n\nexport function throwIfDisallowedDynamic(\n workStore: WorkStore,\n prelude: PreludeState,\n dynamicValidation: DynamicValidationState,\n serverDynamic: DynamicTrackingState,\n allowEmptyStaticShell: boolean\n): void {\n throwIfSyncIOUsed(workStore, serverDynamic)\n\n // The dynamic metadata error is a mistake-detection signal. It fires when the\n // rest of the shell is otherwise fully static apart from metadata, suggesting\n // the dynamic data access in `generateMetadata` was probably unintentional.\n // That condition is independent of whether the user or build phase accepted\n // an empty shell, so we surface it before any opt-in bypass.\n if (\n prelude === PreludeState.Full &&\n dynamicValidation.hasAllowedDynamic === false &&\n dynamicValidation.hasDynamicMetadata\n ) {\n console.error(createDynamicOrRuntimeMetadataError(workStore.route).message)\n throw new StaticGenBailoutError()\n }\n\n // Either flag expresses \"this shell is allowed to be empty/blocking\":\n // - `allowEmptyStaticShell` covers `instant = false` (user opt-in)\n // and the build-phase fallback-shell case.\n // - `hasSuspenseAboveBody` is the structural opt-in inside the user's root\n // layout.\n // Treat them as synonyms for the purpose of bypassing shell-failure errors.\n if (allowEmptyStaticShell || dynamicValidation.hasSuspenseAboveBody) {\n return\n }\n\n if (prelude !== PreludeState.Full) {\n // We didn't have any sync bailouts but there may be user code which\n // blocked the root. We would have captured these during the prerender\n // and can log them here and then terminate the build/validating render\n const dynamicErrors = dynamicValidation.dynamicErrors\n if (dynamicErrors.length > 0) {\n for (let i = 0; i < dynamicErrors.length; i++) {\n logDisallowedDynamicError(workStore, dynamicErrors[i])\n }\n\n throw new StaticGenBailoutError()\n }\n\n // If we got this far then the only other thing that could be blocking\n // the root is dynamic Viewport. If this is dynamic then\n // you need to opt into that by adding a Suspense boundary above the body\n // to indicate your are ok with fully dynamic rendering.\n if (dynamicValidation.hasDynamicViewport) {\n console.error(\n createDynamicOrRuntimeViewportError(workStore.route).message\n )\n throw new StaticGenBailoutError()\n }\n\n if (prelude === PreludeState.Empty) {\n // If we ever get this far then we messed up the tracking of invalid dynamic.\n // We still adhere to the constraint that you must produce a shell but invite the\n // user to report this as a bug in Next.js.\n console.error(\n `Route \"${workStore.route}\" did not produce a static shell and Next.js was unable to determine a reason. This is a bug in Next.js.`\n )\n throw new StaticGenBailoutError()\n }\n }\n}\n\nexport function getStaticShellDisallowedDynamicReasons(\n workStore: WorkStore,\n prelude: PreludeState,\n dynamicValidation: DynamicValidationState,\n allowEmptyStaticShell: boolean\n): Array<Error> {\n // The dynamic metadata error is a mistake-detection signal. It fires when the\n // rest of the shell is otherwise fully static apart from metadata, suggesting\n // the dynamic data access in `generateMetadata` was probably unintentional.\n // That condition is independent of whether the user or build phase accepted\n // an empty shell, so we surface it before any opt-in bypass.\n if (\n prelude === PreludeState.Full &&\n dynamicValidation.hasAllowedDynamic === false &&\n dynamicValidation.dynamicErrors.length === 0 &&\n dynamicValidation.dynamicMetadata\n ) {\n return [dynamicValidation.dynamicMetadata]\n }\n\n // Either flag expresses \"this shell is allowed to be empty/blocking\":\n // - `allowEmptyStaticShell` covers `instant = false` (user opt-in)\n // and the build-phase fallback-shell case.\n // - `hasSuspenseAboveBody` is the structural opt-in inside the user's root\n // layout.\n // Treat them as synonyms for the purpose of bypassing shell-failure errors.\n if (allowEmptyStaticShell || dynamicValidation.hasSuspenseAboveBody) {\n return []\n }\n\n if (prelude !== PreludeState.Full) {\n // We didn't have any sync bailouts but there may be user code which\n // blocked the root. We would have captured these during the prerender\n // and can log them here and then terminate the build/validating render\n const dynamicErrors = dynamicValidation.dynamicErrors\n if (dynamicErrors.length > 0) {\n return dynamicErrors\n }\n\n if (prelude === PreludeState.Empty) {\n // If we ever get this far then we messed up the tracking of invalid dynamic.\n // We still adhere to the constraint that you must produce a shell but invite the\n // user to report this as a bug in Next.js.\n return [\n new InvariantError(\n `Route \"${workStore.route}\" did not produce a static shell and Next.js was unable to determine a reason.`\n ),\n ]\n }\n }\n // We had a non-empty prelude and there are no dynamic holes\n return []\n}\n\n/**\n * `errors` are validation failures that should be surfaced immediately.\n * `deferredFallback` carries a missing-boundary explanation that the caller\n * should hold back until *every* validation depth has been tried — a missing\n * boundary often just means a parent layout intentionally omitted a slot, and\n * a different depth's validation may surface a more meaningful error.\n */\nexport type NavigationValidationResult =\n // instances that block instant navigation\n | Array<Error>\n // validation was blocked with zero or more reasons\n | Error\n | AggregateError\n\nexport function getNavigationDisallowedDynamicReasons(\n workStore: WorkStore,\n prelude: PreludeState,\n dynamicValidation: InstantValidationState,\n validationSampleTracking: InstantValidationSampleTracking | null,\n boundaryState: ValidationBoundaryTracking,\n devRenderDidError: boolean\n): NavigationValidationResult {\n // If we have errors related to missing samples, those should take precedence over everything else.\n if (validationSampleTracking) {\n const { missingSampleErrors } = validationSampleTracking\n if (missingSampleErrors.length > 0) {\n return missingSampleErrors\n }\n }\n\n const { validationPreventingErrors } = dynamicValidation\n if (validationPreventingErrors.length > 0) {\n if (process.env.__NEXT_DEV_SERVER && devRenderDidError) {\n // The dev render already surfaced server errors to the user.\n // The same errors likely caused validation to be inconclusive,\n // so reporting them again as validation failures would be noisy.\n return []\n }\n return validationPreventingErrors\n }\n\n // NOTE: We don't care about Suspense above body here,\n // we're only concerned with the validation boundary\n if (prelude !== PreludeState.Full) {\n const dynamicErrors = dynamicValidation.dynamicErrors\n if (dynamicErrors.length > 0) {\n return dynamicErrors\n }\n\n if (\n prelude === PreludeState.Empty &&\n !dynamicValidation.hasAllowedClientDynamicAboveBoundary &&\n allRequiredBoundariesRendered(boundaryState)\n ) {\n // If we ever get this far then we messed up the tracking of invalid\n // dynamic. (When boundaries are missing the deferred fallback below\n // will surface a more useful error.)\n return new InvariantError(\n `Route \"${workStore.route}\" failed to render during instant validation and Next.js was unable to determine a reason.`\n )\n }\n } else {\n const dynamicErrors = dynamicValidation.dynamicErrors\n if (dynamicErrors.length > 0) {\n return dynamicErrors\n }\n\n if (\n dynamicValidation.hasAllowedDynamic === false &&\n dynamicValidation.dynamicMetadata\n ) {\n return [dynamicValidation.dynamicMetadata]\n }\n }\n\n // Missing boundaries on their own aren't a strong signal — a parent\n // layout may legitimately omit a slot. Defer this so the caller can\n // try shallower validation depths first; if every depth comes up\n // empty we still want to surface this so the user is made aware that\n // validation didn't complete. When we add a markers API, the\n // marker-based variant of this check can become strict again.\n if (!allRequiredBoundariesRendered(boundaryState)) {\n const { thrownErrorsOutsideBoundary } = dynamicValidation\n const rootInstantStack = dynamicValidation.slotStacks[0]\n if (thrownErrorsOutsideBoundary.length === 0) {\n const missingFiles: string[] = []\n for (const [id, filePaths] of boundaryState.requiredIds) {\n if (!boundaryState.renderedIds.has(id)) {\n for (const filePath of filePaths) {\n let normalized = filePath\n .replace(/^\\[project\\][\\\\/]?/, '')\n .replace(process.cwd() + '/', '')\n .replace(process.cwd() + '\\\\', '')\n missingFiles.push(normalized)\n }\n }\n }\n missingFiles.sort()\n return createUnrenderedSegmentError(workStore.route, missingFiles)\n } else if (process.env.__NEXT_DEV_SERVER && devRenderDidError) {\n // Errors outside the boundary likely blocked it from rendering,\n // but they're already being reported to the user via the dev\n // render. Suppress the validation failure to avoid noise.\n return []\n } else if (thrownErrorsOutsideBoundary.length === 1) {\n const message = `Route \"${workStore.route}\": Could not validate \\`instant\\` because the target segment was prevented from rendering, likely due to the following error.`\n const error = rootInstantStack !== null ? rootInstantStack() : new Error()\n error.name = 'Error'\n error.message = message\n return new AggregateError([\n error,\n thrownErrorsOutsideBoundary[0] as Error,\n ])\n } else {\n const message = `Route \"${workStore.route}\": Could not validate \\`instant\\` because the target segment was prevented from rendering, likely due to one of the following errors.`\n const error = rootInstantStack !== null ? rootInstantStack() : new Error()\n error.name = 'Error'\n error.message = message\n return new AggregateError([\n error,\n ...(thrownErrorsOutsideBoundary as Error[]),\n ])\n }\n }\n\n // We had a non-empty prelude and there are no dynamic holes\n return []\n}\n","import { StaticGenBailoutError } from '../../client/components/static-generation-bailout'\nimport { actionAsyncStorage } from '../app-render/action-async-storage.external'\nimport { afterTaskAsyncStorage } from '../app-render/after-task-async-storage.external'\nimport type { WorkStore } from '../app-render/work-async-storage.external'\nimport type { WorkUnitStore } from '../app-render/work-unit-async-storage.external'\n\nexport function throwWithStaticGenerationBailoutErrorWithDynamicError(\n route: string,\n expression: string\n): never {\n throw new StaticGenBailoutError(\n `Route ${route} with \\`dynamic = \"error\"\\` couldn't be rendered statically because it used ${expression}. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`\n )\n}\n\nexport function throwForSearchParamsAccessInUseCache(\n workStore: WorkStore,\n constructorOpt: Function\n): never {\n const error = new Error(\n `Route ${workStore.route} used \\`searchParams\\` inside \"use cache\". Accessing dynamic request data inside a cache scope is not supported. If you need some search params inside a cached function await \\`searchParams\\` outside of the cached function and pass only the required search params as arguments to the cached function. See more info here: https://nextjs.org/docs/messages/next-request-in-use-cache`\n )\n\n Error.captureStackTrace(error, constructorOpt)\n workStore.invalidDynamicUsageError ??= error\n\n throw error\n}\n\nexport function isRequestApiAllowedInCurrentPhase(\n workUnitStore: WorkUnitStore\n): boolean {\n switch (workUnitStore.phase) {\n case 'action':\n case 'render': {\n // The request is still in progress. The API may be disallowed for other reasons,\n // but not because of phase.\n return true\n }\n case 'after': {\n // The request has finished.\n\n // If we're in a Route Handler or a Server Action,\n // request APIs can be called everywhere, even in after().\n const actionStore = actionAsyncStorage.getStore()\n if (actionStore && (actionStore.isAppRoute || actionStore.isAction)) {\n return true\n }\n\n const afterTaskStore = afterTaskAsyncStorage.getStore()\n if (afterTaskStore) {\n // We're in an `after` callback. Request APIs are callable if\n // the `after()` call happened in an action phase:\n // - in a Route Handler\n // - in a Server Action's body (but not the render after)\n //\n // TODO(after): Is it even possible to have `phase === 'action'` but no `actionStore`?\n // We should revisit this setup and simplify this.\n return afterTaskStore.rootTaskSpawnPhase === 'action'\n }\n\n // Otherwise, we must be in a page, in the `after` phase.\n // We don't allow calling request APIs here because we'd miss\n // them during prerendering and wouldn't know that the page is dynamic.\n return false\n }\n }\n}\n","import { workAsyncStorage } from '../app-render/work-async-storage.external'\nimport {\n throwForMissingRequestStore,\n workUnitAsyncStorage,\n} from '../app-render/work-unit-async-storage.external'\nimport {\n postponeWithTracking,\n throwToInterruptStaticGeneration,\n trackDynamicDataInDynamicRender,\n} from '../app-render/dynamic-rendering'\nimport { StaticGenBailoutError } from '../../client/components/static-generation-bailout'\nimport {\n makeDynamicHangingPromise,\n makeDevtoolsIOAwarePromise,\n} from '../dynamic-rendering-utils'\nimport { isRequestApiAllowedInCurrentPhase } from './utils'\nimport { applyOwnerStack } from '../dynamic-rendering-utils'\nimport { RenderStage } from '../app-render/staged-rendering'\nimport { InvariantError } from '../../shared/lib/invariant-error'\n\n/**\n * This function allows you to indicate that you require an actual user Request before continuing.\n *\n * During prerendering it will never resolve and during rendering it resolves immediately.\n */\nexport function connection(): Promise<void> {\n const callingExpression = 'connection'\n const workStore = workAsyncStorage.getStore()\n const workUnitStore = workUnitAsyncStorage.getStore()\n\n if (workStore) {\n if (workUnitStore && !isRequestApiAllowedInCurrentPhase(workUnitStore)) {\n throw new Error(\n `Route ${workStore.route} used \\`connection()\\` inside \\`after()\\` while rendering. The \\`connection()\\` function is used to indicate the subsequent code must only run when there is an actual Request, but \\`after()\\` executes after the request, so this function is not allowed in this scope. See more info here: https://nextjs.org/docs/app/api-reference/functions/after`\n )\n }\n\n if (workStore.forceStatic) {\n // When using forceStatic, we override all other logic and always just\n // return a resolving promise without tracking.\n return Promise.resolve(undefined)\n }\n\n if (workStore.dynamicShouldError) {\n throw new StaticGenBailoutError(\n `Route ${workStore.route} with \\`dynamic = \"error\"\\` couldn't be rendered statically because it used \\`connection()\\`. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`\n )\n }\n\n if (workUnitStore) {\n switch (workUnitStore.type) {\n case 'cache': {\n const error = new Error(\n `Route ${workStore.route} used \\`connection()\\` inside \"use cache\". The \\`connection()\\` function is used to indicate the subsequent code must only run when there is an actual request, but caches must be able to be produced before a request, so this function is not allowed in this scope. See more info here: https://nextjs.org/docs/messages/next-request-in-use-cache`\n )\n Error.captureStackTrace(error, connection)\n applyOwnerStack(error)\n workStore.invalidDynamicUsageError ??= error\n throw error\n }\n case 'private-cache': {\n // It might not be intuitive to throw for private caches as well, but\n // we don't consider runtime prefetches as \"actual requests\" (in the\n // navigation sense), despite allowing them to read cookies.\n const error = new Error(\n `Route ${workStore.route} used \\`connection()\\` inside \"use cache: private\". The \\`connection()\\` function is used to indicate the subsequent code must only run when there is an actual navigation request, but caches must be able to be produced before a navigation request, so this function is not allowed in this scope. See more info here: https://nextjs.org/docs/messages/next-request-in-use-cache`\n )\n Error.captureStackTrace(error, connection)\n applyOwnerStack(error)\n workStore.invalidDynamicUsageError ??= error\n throw error\n }\n case 'unstable-cache':\n throw new Error(\n `Route ${workStore.route} used \\`connection()\\` inside a function cached with \\`unstable_cache()\\`. The \\`connection()\\` function is used to indicate the subsequent code must only run when there is an actual Request, but caches must be able to be produced before a Request so this function is not allowed in this scope. See more info here: https://nextjs.org/docs/app/api-reference/functions/unstable_cache`\n )\n case 'generate-static-params':\n throw new Error(\n `Route ${workStore.route} used \\`connection()\\` inside \\`generateStaticParams\\`. This is not supported because \\`generateStaticParams\\` runs at build time without an HTTP request. Read more: https://nextjs.org/docs/messages/next-dynamic-api-wrong-context`\n )\n case 'prerender':\n case 'prerender-client':\n case 'prerender-runtime':\n // We return a promise that never resolves to allow the prerender to\n // stall at this point.\n return makeDynamicHangingPromise(\n workUnitStore.renderSignal,\n workStore.route,\n '`connection()`'\n )\n case 'validation-client': {\n // TODO(NAR-789): make this consistent with the actual browser behavior when we change it.\n // Until then, erroring is fine.\n const exportName = '`connection`'\n throw new InvariantError(\n `${exportName} must not be used within a Client Component. Next.js should be preventing ${exportName} from being included in Client Components statically, but did not in this case.`\n )\n }\n case 'prerender-ppr':\n // We use React's postpone API to interrupt rendering here to create a\n // dynamic hole\n return postponeWithTracking(\n workStore.route,\n 'connection',\n workUnitStore.dynamicTracking\n )\n case 'prerender-legacy':\n // We throw an error here to interrupt prerendering to mark the route\n // as dynamic\n return throwToInterruptStaticGeneration(\n 'connection',\n workStore,\n workUnitStore\n )\n case 'request':\n trackDynamicDataInDynamicRender(workUnitStore)\n if (process.env.NODE_ENV === 'development') {\n // Semantically we only need the dev tracking when running in `next dev`\n // but since you would never use next dev with production NODE_ENV we use this\n // as a proxy so we can statically exclude this code from production builds.\n if (workUnitStore.asyncApiPromises) {\n return workUnitStore.asyncApiPromises.connection\n }\n return makeDevtoolsIOAwarePromise(\n undefined,\n workUnitStore,\n RenderStage.Dynamic\n )\n } else if (workUnitStore.asyncApiPromises) {\n return workUnitStore.asyncApiPromises.connection\n } else {\n return Promise.resolve(undefined)\n }\n default:\n workUnitStore satisfies never\n }\n }\n }\n\n // If we end up here, there was no work store or work unit store present.\n // TODO(NAR-789): connection() is not currently statically prevented from being imported in client components,\n // so we always error about a missing work unit store.\n throwForMissingRequestStore(callingExpression)\n}\n","const serverExports = {\n NextRequest: require('next/dist/server/web/spec-extension/request')\n .NextRequest,\n NextResponse: require('next/dist/server/web/spec-extension/response')\n .NextResponse,\n ImageResponse: require('next/dist/server/web/spec-extension/image-response')\n .ImageResponse,\n userAgentFromString: require('next/dist/server/web/spec-extension/user-agent')\n .userAgentFromString,\n userAgent: require('next/dist/server/web/spec-extension/user-agent')\n .userAgent,\n URLPattern: require('next/dist/server/web/spec-extension/url-pattern')\n .URLPattern,\n after: require('next/dist/server/after').after,\n connection: require('next/dist/server/request/connection').connection,\n}\n\n// https://nodejs.org/api/esm.html#commonjs-namespaces\n// When importing CommonJS modules, the module.exports object is provided as the default export\nmodule.exports = serverExports\n\n// make import { xxx } from 'next/server' work\nexports.NextRequest = serverExports.NextRequest\nexports.NextResponse = serverExports.NextResponse\nexports.ImageResponse = serverExports.ImageResponse\nexports.userAgentFromString = serverExports.userAgentFromString\nexports.userAgent = serverExports.userAgent\nexports.URLPattern = serverExports.URLPattern\nexports.after = serverExports.after\nexports.connection = serverExports.connection\n","export {\n RequestCookies,\n ResponseCookies,\n stringifyCookie,\n} from 'next/dist/compiled/@edge-runtime/cookies'\n","import type { I18NConfig } from '../../config-shared'\nimport { NextURL } from '../next-url'\nimport { toNodeOutgoingHttpHeaders, validateURL } from '../utils'\nimport { RemovedUAError, RemovedPageError } from '../error'\nimport { RequestCookies } from './cookies'\n\nexport const INTERNALS = Symbol('internal request')\n\n/**\n * This class extends the [Web `Request` API](https://developer.mozilla.org/docs/Web/API/Request) with additional convenience methods.\n *\n * Read more: [Next.js Docs: `NextRequest`](https://nextjs.org/docs/app/api-reference/functions/next-request)\n */\nexport class NextRequest extends Request {\n /** @internal */\n [INTERNALS]: {\n cookies: RequestCookies\n url: string\n nextUrl: NextURL\n }\n\n constructor(input: URL | RequestInfo, init: RequestInit = {}) {\n const url =\n typeof input !== 'string' && 'url' in input ? input.url : String(input)\n\n validateURL(url)\n\n // node Request instance requires duplex option when a body\n // is present or it errors, we don't handle this for\n // Request being passed in since it would have already\n // errored if this wasn't configured\n if (process.env.NEXT_RUNTIME !== 'edge') {\n if (init.body && init.duplex !== 'half') {\n init.duplex = 'half'\n }\n }\n\n if (input instanceof Request) super(input, init)\n else super(url, init)\n\n const nextUrl = new NextURL(url, {\n headers: toNodeOutgoingHttpHeaders(this.headers),\n nextConfig: init.nextConfig,\n })\n this[INTERNALS] = {\n cookies: new RequestCookies(this.headers),\n nextUrl,\n url: process.env.__NEXT_NO_MIDDLEWARE_URL_NORMALIZE\n ? url\n : nextUrl.toString(),\n }\n }\n\n [Symbol.for('edge-runtime.inspect.custom')]() {\n return {\n cookies: this.cookies,\n nextUrl: this.nextUrl,\n url: this.url,\n // rest of props come from Request\n bodyUsed: this.bodyUsed,\n cache: this.cache,\n credentials: this.credentials,\n destination: this.destination,\n headers: Object.fromEntries(this.headers),\n integrity: this.integrity,\n keepalive: this.keepalive,\n method: this.method,\n mode: this.mode,\n redirect: this.redirect,\n referrer: this.referrer,\n referrerPolicy: this.referrerPolicy,\n signal: this.signal,\n }\n }\n\n public get cookies() {\n return this[INTERNALS].cookies\n }\n\n public get nextUrl() {\n return this[INTERNALS].nextUrl\n }\n\n /**\n * @deprecated\n * `page` has been deprecated in favour of `URLPattern`.\n * Read more: https://nextjs.org/docs/messages/middleware-request-page\n */\n public get page() {\n throw new RemovedPageError()\n }\n\n /**\n * @deprecated\n * `ua` has been removed in favour of \\`userAgent\\` function.\n * Read more: https://nextjs.org/docs/messages/middleware-parse-user-agent\n */\n public get ua() {\n throw new RemovedUAError()\n }\n\n public get url() {\n return this[INTERNALS].url\n }\n}\n\nexport interface RequestInit extends globalThis.RequestInit {\n nextConfig?: {\n basePath?: string\n i18n?: I18NConfig | null\n trailingSlash?: boolean\n }\n signal?: AbortSignal\n // see https://github.com/whatwg/fetch/pull/1457\n duplex?: 'half'\n}\n","export class ReflectAdapter {\n static get<T extends object>(\n target: T,\n prop: string | symbol,\n receiver: unknown\n ): any {\n const value = Reflect.get(target, prop, receiver)\n if (typeof value === 'function') {\n return value.bind(target)\n }\n\n return value\n }\n\n static set<T extends object>(\n target: T,\n prop: string | symbol,\n value: any,\n receiver: any\n ): boolean {\n return Reflect.set(target, prop, value, receiver)\n }\n\n static has<T extends object>(target: T, prop: string | symbol): boolean {\n return Reflect.has(target, prop)\n }\n\n static deleteProperty<T extends object>(\n target: T,\n prop: string | symbol\n ): boolean {\n return Reflect.deleteProperty(target, prop)\n }\n}\n","import { stringifyCookie } from '../../web/spec-extension/cookies'\nimport type { I18NConfig } from '../../config-shared'\nimport { NextURL } from '../next-url'\nimport { toNodeOutgoingHttpHeaders, validateURL } from '../utils'\nimport { ReflectAdapter } from './adapters/reflect'\n\nimport { ResponseCookies } from './cookies'\n\nconst INTERNALS = Symbol('internal response')\nconst REDIRECTS = new Set([301, 302, 303, 307, 308])\n\nfunction handleMiddlewareField(\n init: MiddlewareResponseInit | undefined,\n headers: Headers\n) {\n if (init?.request?.headers) {\n if (!(init.request.headers instanceof Headers)) {\n throw new Error('request.headers must be an instance of Headers')\n }\n\n const keys = []\n for (const [key, value] of init.request.headers) {\n headers.set('x-middleware-request-' + key, value)\n keys.push(key)\n }\n\n headers.set('x-middleware-override-headers', keys.join(','))\n }\n}\n\n/**\n * This class extends the [Web `Response` API](https://developer.mozilla.org/docs/Web/API/Response) with additional convenience methods.\n *\n * Read more: [Next.js Docs: `NextResponse`](https://nextjs.org/docs/app/api-reference/functions/next-response)\n */\nexport class NextResponse<Body = unknown> extends Response {\n [INTERNALS]: {\n cookies: ResponseCookies\n url?: NextURL\n body?: Body\n }\n\n constructor(body?: BodyInit | null, init: ResponseInit = {}) {\n super(body, init)\n\n const headers = this.headers\n const cookies = new ResponseCookies(headers)\n\n const cookiesProxy = new Proxy(cookies, {\n get(target, prop, receiver) {\n switch (prop) {\n case 'delete':\n case 'set': {\n return (...args: [string, string]) => {\n const result = Reflect.apply(target[prop], target, args)\n const newHeaders = new Headers(headers)\n\n if (result instanceof ResponseCookies) {\n headers.set(\n 'x-middleware-set-cookie',\n result\n .getAll()\n .map((cookie) => stringifyCookie(cookie))\n .join(',')\n )\n }\n\n handleMiddlewareField(init, newHeaders)\n return result\n }\n }\n default:\n return ReflectAdapter.get(target, prop, receiver)\n }\n },\n })\n\n this[INTERNALS] = {\n cookies: cookiesProxy,\n url: init.url\n ? new NextURL(init.url, {\n headers: toNodeOutgoingHttpHeaders(headers),\n nextConfig: init.nextConfig,\n })\n : undefined,\n }\n }\n\n [Symbol.for('edge-runtime.inspect.custom')]() {\n return {\n cookies: this.cookies,\n url: this.url,\n // rest of props come from Response\n body: this.body,\n bodyUsed: this.bodyUsed,\n headers: Object.fromEntries(this.headers),\n ok: this.ok,\n redirected: this.redirected,\n status: this.status,\n statusText: this.statusText,\n type: this.type,\n }\n }\n\n public get cookies() {\n return this[INTERNALS].cookies\n }\n\n static json<JsonBody>(\n body: JsonBody,\n init?: ResponseInit\n ): NextResponse<JsonBody> {\n const response: Response = Response.json(body, init)\n return new NextResponse(response.body, response)\n }\n\n static redirect(url: string | NextURL | URL, init?: number | ResponseInit) {\n const status = typeof init === 'number' ? init : (init?.status ?? 307)\n if (!REDIRECTS.has(status)) {\n throw new RangeError(\n 'Failed to execute \"redirect\" on \"response\": Invalid status code'\n )\n }\n const initObj = typeof init === 'object' ? init : {}\n const headers = new Headers(initObj?.headers)\n headers.set('Location', validateURL(url))\n\n return new NextResponse(null, {\n ...initObj,\n headers,\n status,\n })\n }\n\n static rewrite(\n destination: string | NextURL | URL,\n init?: MiddlewareResponseInit\n ) {\n const headers = new Headers(init?.headers)\n headers.set('x-middleware-rewrite', validateURL(destination))\n\n handleMiddlewareField(init, headers)\n return new NextResponse(null, { ...init, headers })\n }\n\n static next(init?: MiddlewareResponseInit) {\n const headers = new Headers(init?.headers)\n headers.set('x-middleware-next', '1')\n\n handleMiddlewareField(init, headers)\n return new NextResponse(null, { ...init, headers })\n }\n}\n\ninterface ResponseInit extends globalThis.ResponseInit {\n nextConfig?: {\n basePath?: string\n i18n?: I18NConfig\n trailingSlash?: boolean\n }\n url?: string\n}\n\ninterface ModifiedRequest {\n /**\n * If this is set, the request headers will be overridden with this value.\n */\n headers?: Headers\n}\n\ninterface MiddlewareResponseInit extends globalThis.ResponseInit {\n /**\n * These fields will override the request from clients.\n */\n request?: ModifiedRequest\n}\n","/**\n * @deprecated ImageResponse moved from \"next/server\" to \"next/og\" since Next.js 14, please import from \"next/og\" instead.\n * Migration with codemods: https://nextjs.org/docs/app/building-your-application/upgrading/codemods#next-og-import\n */\nexport function ImageResponse(): never {\n throw new Error(\n 'ImageResponse moved from \"next/server\" to \"next/og\" since Next.js 14, please import from \"next/og\" instead'\n )\n}\n","(()=>{var i={943:function(i,e){(function(o,a){\"use strict\";var r=\"1.0.35\",t=\"\",n=\"?\",s=\"function\",b=\"undefined\",w=\"object\",l=\"string\",d=\"major\",c=\"model\",u=\"name\",p=\"type\",m=\"vendor\",f=\"version\",h=\"architecture\",v=\"console\",g=\"mobile\",k=\"tablet\",x=\"smarttv\",_=\"wearable\",y=\"embedded\",q=350;var T=\"Amazon\",S=\"Apple\",z=\"ASUS\",N=\"BlackBerry\",A=\"Browser\",C=\"Chrome\",E=\"Edge\",O=\"Firefox\",U=\"Google\",j=\"Huawei\",P=\"LG\",R=\"Microsoft\",M=\"Motorola\",B=\"Opera\",V=\"Samsung\",D=\"Sharp\",I=\"Sony\",W=\"Viera\",F=\"Xiaomi\",G=\"Zebra\",H=\"Facebook\",L=\"Chromium OS\",Z=\"Mac OS\";var extend=function(i,e){var o={};for(var a in i){if(e[a]&&e[a].length%2===0){o[a]=e[a].concat(i[a])}else{o[a]=i[a]}}return o},enumerize=function(i){var e={};for(var o=0;o<i.length;o++){e[i[o].toUpperCase()]=i[o]}return e},has=function(i,e){return typeof i===l?lowerize(e).indexOf(lowerize(i))!==-1:false},lowerize=function(i){return i.toLowerCase()},majorize=function(i){return typeof i===l?i.replace(/[^\\d\\.]/g,t).split(\".\")[0]:a},trim=function(i,e){if(typeof i===l){i=i.replace(/^\\s\\s*/,t);return typeof e===b?i:i.substring(0,q)}};var rgxMapper=function(i,e){var o=0,r,t,n,b,l,d;while(o<e.length&&!l){var c=e[o],u=e[o+1];r=t=0;while(r<c.length&&!l){if(!c[r]){break}l=c[r++].exec(i);if(!!l){for(n=0;n<u.length;n++){d=l[++t];b=u[n];if(typeof b===w&&b.length>0){if(b.length===2){if(typeof b[1]==s){this[b[0]]=b[1].call(this,d)}else{this[b[0]]=b[1]}}else if(b.length===3){if(typeof b[1]===s&&!(b[1].exec&&b[1].test)){this[b[0]]=d?b[1].call(this,d,b[2]):a}else{this[b[0]]=d?d.replace(b[1],b[2]):a}}else if(b.length===4){this[b[0]]=d?b[3].call(this,d.replace(b[1],b[2])):a}}else{this[b]=d?d:a}}}}o+=2}},strMapper=function(i,e){for(var o in e){if(typeof e[o]===w&&e[o].length>0){for(var r=0;r<e[o].length;r++){if(has(e[o][r],i)){return o===n?a:o}}}else if(has(e[o],i)){return o===n?a:o}}return i};var $={\"1.0\":\"/8\",1.2:\"/1\",1.3:\"/3\",\"2.0\":\"/412\",\"2.0.2\":\"/416\",\"2.0.3\":\"/417\",\"2.0.4\":\"/419\",\"?\":\"/\"},X={ME:\"4.90\",\"NT 3.11\":\"NT3.51\",\"NT 4.0\":\"NT4.0\",2e3:\"NT 5.0\",XP:[\"NT 5.1\",\"NT 5.2\"],Vista:\"NT 6.0\",7:\"NT 6.1\",8:\"NT 6.2\",8.1:\"NT 6.3\",10:[\"NT 6.4\",\"NT 10.0\"],RT:\"ARM\"};var K={browser:[[/\\b(?:crmo|crios)\\/([\\w\\.]+)/i],[f,[u,\"Chrome\"]],[/edg(?:e|ios|a)?\\/([\\w\\.]+)/i],[f,[u,\"Edge\"]],[/(opera mini)\\/([-\\w\\.]+)/i,/(opera [mobiletab]{3,6})\\b.+version\\/([-\\w\\.]+)/i,/(opera)(?:.+version\\/|[\\/ ]+)([\\w\\.]+)/i],[u,f],[/opios[\\/ ]+([\\w\\.]+)/i],[f,[u,B+\" Mini\"]],[/\\bopr\\/([\\w\\.]+)/i],[f,[u,B]],[/(kindle)\\/([\\w\\.]+)/i,/(lunascape|maxthon|netfront|jasmine|blazer)[\\/ ]?([\\w\\.]*)/i,/(avant |iemobile|slim)(?:browser)?[\\/ ]?([\\w\\.]*)/i,/(ba?idubrowser)[\\/ ]?([\\w\\.]+)/i,/(?:ms|\\()(ie) ([\\w\\.]+)/i,/(flock|rockmelt|midori|epiphany|silk|skyfire|bolt|iron|vivaldi|iridium|phantomjs|bowser|quark|qupzilla|falkon|rekonq|puffin|brave|whale(?!.+naver)|qqbrowserlite|qq|duckduckgo)\\/([-\\w\\.]+)/i,/(heytap|ovi)browser\\/([\\d\\.]+)/i,/(weibo)__([\\d\\.]+)/i],[u,f],[/(?:\\buc? ?browser|(?:juc.+)ucweb)[\\/ ]?([\\w\\.]+)/i],[f,[u,\"UC\"+A]],[/microm.+\\bqbcore\\/([\\w\\.]+)/i,/\\bqbcore\\/([\\w\\.]+).+microm/i],[f,[u,\"WeChat(Win) Desktop\"]],[/micromessenger\\/([\\w\\.]+)/i],[f,[u,\"WeChat\"]],[/konqueror\\/([\\w\\.]+)/i],[f,[u,\"Konqueror\"]],[/trident.+rv[: ]([\\w\\.]{1,9})\\b.+like gecko/i],[f,[u,\"IE\"]],[/ya(?:search)?browser\\/([\\w\\.]+)/i],[f,[u,\"Yandex\"]],[/(avast|avg)\\/([\\w\\.]+)/i],[[u,/(.+)/,\"$1 Secure \"+A],f],[/\\bfocus\\/([\\w\\.]+)/i],[f,[u,O+\" Focus\"]],[/\\bopt\\/([\\w\\.]+)/i],[f,[u,B+\" Touch\"]],[/coc_coc\\w+\\/([\\w\\.]+)/i],[f,[u,\"Coc Coc\"]],[/dolfin\\/([\\w\\.]+)/i],[f,[u,\"Dolphin\"]],[/coast\\/([\\w\\.]+)/i],[f,[u,B+\" Coast\"]],[/miuibrowser\\/([\\w\\.]+)/i],[f,[u,\"MIUI \"+A]],[/fxios\\/([-\\w\\.]+)/i],[f,[u,O]],[/\\bqihu|(qi?ho?o?|360)browser/i],[[u,\"360 \"+A]],[/(oculus|samsung|sailfish|huawei)browser\\/([\\w\\.]+)/i],[[u,/(.+)/,\"$1 \"+A],f],[/(comodo_dragon)\\/([\\w\\.]+)/i],[[u,/_/g,\" \"],f],[/(electron)\\/([\\w\\.]+) safari/i,/(tesla)(?: qtcarbrowser|\\/(20\\d\\d\\.[-\\w\\.]+))/i,/m?(qqbrowser|baiduboxapp|2345Explorer)[\\/ ]?([\\w\\.]+)/i],[u,f],[/(metasr)[\\/ ]?([\\w\\.]+)/i,/(lbbrowser)/i,/\\[(linkedin)app\\]/i],[u],[/((?:fban\\/fbios|fb_iab\\/fb4a)(?!.+fbav)|;fbav\\/([\\w\\.]+);)/i],[[u,H],f],[/(kakao(?:talk|story))[\\/ ]([\\w\\.]+)/i,/(naver)\\(.*?(\\d+\\.[\\w\\.]+).*\\)/i,/safari (line)\\/([\\w\\.]+)/i,/\\b(line)\\/([\\w\\.]+)\\/iab/i,/(chromium|instagram)[\\/ ]([-\\w\\.]+)/i],[u,f],[/\\bgsa\\/([\\w\\.]+) .*safari\\//i],[f,[u,\"GSA\"]],[/musical_ly(?:.+app_?version\\/|_)([\\w\\.]+)/i],[f,[u,\"TikTok\"]],[/headlesschrome(?:\\/([\\w\\.]+)| )/i],[f,[u,C+\" Headless\"]],[/ wv\\).+(chrome)\\/([\\w\\.]+)/i],[[u,C+\" WebView\"],f],[/droid.+ version\\/([\\w\\.]+)\\b.+(?:mobile safari|safari)/i],[f,[u,\"Android \"+A]],[/(chrome|omniweb|arora|[tizenoka]{5} ?browser)\\/v?([\\w\\.]+)/i],[u,f],[/version\\/([\\w\\.\\,]+) .*mobile\\/\\w+ (safari)/i],[f,[u,\"Mobile Safari\"]],[/version\\/([\\w(\\.|\\,)]+) .*(mobile ?safari|safari)/i],[f,u],[/webkit.+?(mobile ?safari|safari)(\\/[\\w\\.]+)/i],[u,[f,strMapper,$]],[/(webkit|khtml)\\/([\\w\\.]+)/i],[u,f],[/(navigator|netscape\\d?)\\/([-\\w\\.]+)/i],[[u,\"Netscape\"],f],[/mobile vr; rv:([\\w\\.]+)\\).+firefox/i],[f,[u,O+\" Reality\"]],[/ekiohf.+(flow)\\/([\\w\\.]+)/i,/(swiftfox)/i,/(icedragon|iceweasel|camino|chimera|fennec|maemo browser|minimo|conkeror|klar)[\\/ ]?([\\w\\.\\+]+)/i,/(seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\\/([-\\w\\.]+)$/i,/(firefox)\\/([\\w\\.]+)/i,/(mozilla)\\/([\\w\\.]+) .+rv\\:.+gecko\\/\\d+/i,/(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|sleipnir|obigo|mosaic|(?:go|ice|up)[\\. ]?browser)[-\\/ ]?v?([\\w\\.]+)/i,/(links) \\(([\\w\\.]+)/i,/panasonic;(viera)/i],[u,f],[/(cobalt)\\/([\\w\\.]+)/i],[u,[f,/master.|lts./,\"\"]]],cpu:[[/(?:(amd|x(?:(?:86|64)[-_])?|wow|win)64)[;\\)]/i],[[h,\"amd64\"]],[/(ia32(?=;))/i],[[h,lowerize]],[/((?:i[346]|x)86)[;\\)]/i],[[h,\"ia32\"]],[/\\b(aarch64|arm(v?8e?l?|_?64))\\b/i],[[h,\"arm64\"]],[/\\b(arm(?:v[67])?ht?n?[fl]p?)\\b/i],[[h,\"armhf\"]],[/windows (ce|mobile); ppc;/i],[[h,\"arm\"]],[/((?:ppc|powerpc)(?:64)?)(?: mac|;|\\))/i],[[h,/ower/,t,lowerize]],[/(sun4\\w)[;\\)]/i],[[h,\"sparc\"]],[/((?:avr32|ia64(?=;))|68k(?=\\))|\\barm(?=v(?:[1-7]|[5-7]1)l?|;|eabi)|(?=atmel )avr|(?:irix|mips|sparc)(?:64)?\\b|pa-risc)/i],[[h,lowerize]]],device:[[/\\b(sch-i[89]0\\d|shw-m380s|sm-[ptx]\\w{2,4}|gt-[pn]\\d{2,4}|sgh-t8[56]9|nexus 10)/i],[c,[m,V],[p,k]],[/\\b((?:s[cgp]h|gt|sm)-\\w+|sc[g-]?[\\d]+a?|galaxy nexus)/i,/samsung[- ]([-\\w]+)/i,/sec-(sgh\\w+)/i],[c,[m,V],[p,g]],[/(?:\\/|\\()(ip(?:hone|od)[\\w, ]*)(?:\\/|;)/i],[c,[m,S],[p,g]],[/\\((ipad);[-\\w\\),; ]+apple/i,/applecoremedia\\/[\\w\\.]+ \\((ipad)/i,/\\b(ipad)\\d\\d?,\\d\\d?[;\\]].+ios/i],[c,[m,S],[p,k]],[/(macintosh);/i],[c,[m,S]],[/\\b(sh-?[altvz]?\\d\\d[a-ekm]?)/i],[c,[m,D],[p,g]],[/\\b((?:ag[rs][23]?|bah2?|sht?|btv)-a?[lw]\\d{2})\\b(?!.+d\\/s)/i],[c,[m,j],[p,k]],[/(?:huawei|honor)([-\\w ]+)[;\\)]/i,/\\b(nexus 6p|\\w{2,4}e?-[atu]?[ln][\\dx][012359c][adn]?)\\b(?!.+d\\/s)/i],[c,[m,j],[p,g]],[/\\b(poco[\\w ]+)(?: bui|\\))/i,/\\b; (\\w+) build\\/hm\\1/i,/\\b(hm[-_ ]?note?[_ ]?(?:\\d\\w)?) bui/i,/\\b(redmi[\\-_ ]?(?:note|k)?[\\w_ ]+)(?: bui|\\))/i,/\\b(mi[-_ ]?(?:a\\d|one|one[_ ]plus|note lte|max|cc)?[_ ]?(?:\\d?\\w?)[_ ]?(?:plus|se|lite)?)(?: bui|\\))/i],[[c,/_/g,\" \"],[m,F],[p,g]],[/\\b(mi[-_ ]?(?:pad)(?:[\\w_ ]+))(?: bui|\\))/i],[[c,/_/g,\" \"],[m,F],[p,k]],[/; (\\w+) bui.+ oppo/i,/\\b(cph[12]\\d{3}|p(?:af|c[al]|d\\w|e[ar])[mt]\\d0|x9007|a101op)\\b/i],[c,[m,\"OPPO\"],[p,g]],[/vivo (\\w+)(?: bui|\\))/i,/\\b(v[12]\\d{3}\\w?[at])(?: bui|;)/i],[c,[m,\"Vivo\"],[p,g]],[/\\b(rmx[12]\\d{3})(?: bui|;|\\))/i],[c,[m,\"Realme\"],[p,g]],[/\\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\\b[\\w ]+build\\//i,/\\bmot(?:orola)?[- ](\\w*)/i,/((?:moto[\\w\\(\\) ]+|xt\\d{3,4}|nexus 6)(?= bui|\\)))/i],[c,[m,M],[p,g]],[/\\b(mz60\\d|xoom[2 ]{0,2}) build\\//i],[c,[m,M],[p,k]],[/((?=lg)?[vl]k\\-?\\d{3}) bui| 3\\.[-\\w; ]{10}lg?-([06cv9]{3,4})/i],[c,[m,P],[p,k]],[/(lm(?:-?f100[nv]?|-[\\w\\.]+)(?= bui|\\))|nexus [45])/i,/\\blg[-e;\\/ ]+((?!browser|netcast|android tv)\\w+)/i,/\\blg-?([\\d\\w]+) bui/i],[c,[m,P],[p,g]],[/(ideatab[-\\w ]+)/i,/lenovo ?(s[56]000[-\\w]+|tab(?:[\\w ]+)|yt[-\\d\\w]{6}|tb[-\\d\\w]{6})/i],[c,[m,\"Lenovo\"],[p,k]],[/(?:maemo|nokia).*(n900|lumia \\d+)/i,/nokia[-_ ]?([-\\w\\.]*)/i],[[c,/_/g,\" \"],[m,\"Nokia\"],[p,g]],[/(pixel c)\\b/i],[c,[m,U],[p,k]],[/droid.+; (pixel[\\daxl ]{0,6})(?: bui|\\))/i],[c,[m,U],[p,g]],[/droid.+ (a?\\d[0-2]{2}so|[c-g]\\d{4}|so[-gl]\\w+|xq-a\\w[4-7][12])(?= bui|\\).+chrome\\/(?![1-6]{0,1}\\d\\.))/i],[c,[m,I],[p,g]],[/sony tablet [ps]/i,/\\b(?:sony)?sgp\\w+(?: bui|\\))/i],[[c,\"Xperia Tablet\"],[m,I],[p,k]],[/ (kb2005|in20[12]5|be20[12][59])\\b/i,/(?:one)?(?:plus)? (a\\d0\\d\\d)(?: b|\\))/i],[c,[m,\"OnePlus\"],[p,g]],[/(alexa)webm/i,/(kf[a-z]{2}wi|aeo[c-r]{2})( bui|\\))/i,/(kf[a-z]+)( bui|\\)).+silk\\//i],[c,[m,T],[p,k]],[/((?:sd|kf)[0349hijorstuw]+)( bui|\\)).+silk\\//i],[[c,/(.+)/g,\"Fire Phone $1\"],[m,T],[p,g]],[/(playbook);[-\\w\\),; ]+(rim)/i],[c,m,[p,k]],[/\\b((?:bb[a-f]|st[hv])100-\\d)/i,/\\(bb10; (\\w+)/i],[c,[m,N],[p,g]],[/(?:\\b|asus_)(transfo[prime ]{4,10} \\w+|eeepc|slider \\w+|nexus 7|padfone|p00[cj])/i],[c,[m,z],[p,k]],[/ (z[bes]6[027][012][km][ls]|zenfone \\d\\w?)\\b/i],[c,[m,z],[p,g]],[/(nexus 9)/i],[c,[m,\"HTC\"],[p,k]],[/(htc)[-;_ ]{1,2}([\\w ]+(?=\\)| bui)|\\w+)/i,/(zte)[- ]([\\w ]+?)(?: bui|\\/|\\))/i,/(alcatel|geeksphone|nexian|panasonic(?!(?:;|\\.))|sony(?!-bra))[-_ ]?([-\\w]*)/i],[m,[c,/_/g,\" \"],[p,g]],[/droid.+; ([ab][1-7]-?[0178a]\\d\\d?)/i],[c,[m,\"Acer\"],[p,k]],[/droid.+; (m[1-5] note) bui/i,/\\bmz-([-\\w]{2,})/i],[c,[m,\"Meizu\"],[p,g]],[/(blackberry|benq|palm(?=\\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron)[-_ ]?([-\\w]*)/i,/(hp) ([\\w ]+\\w)/i,/(asus)-?(\\w+)/i,/(microsoft); (lumia[\\w ]+)/i,/(lenovo)[-_ ]?([-\\w]+)/i,/(jolla)/i,/(oppo) ?([\\w ]+) bui/i],[m,c,[p,g]],[/(kobo)\\s(ereader|touch)/i,/(archos) (gamepad2?)/i,/(hp).+(touchpad(?!.+tablet)|tablet)/i,/(kindle)\\/([\\w\\.]+)/i,/(nook)[\\w ]+build\\/(\\w+)/i,/(dell) (strea[kpr\\d ]*[\\dko])/i,/(le[- ]+pan)[- ]+(\\w{1,9}) bui/i,/(trinity)[- ]*(t\\d{3}) bui/i,/(gigaset)[- ]+(q\\w{1,9}) bui/i,/(vodafone) ([\\w ]+)(?:\\)| bui)/i],[m,c,[p,k]],[/(surface duo)/i],[c,[m,R],[p,k]],[/droid [\\d\\.]+; (fp\\du?)(?: b|\\))/i],[c,[m,\"Fairphone\"],[p,g]],[/(u304aa)/i],[c,[m,\"AT&T\"],[p,g]],[/\\bsie-(\\w*)/i],[c,[m,\"Siemens\"],[p,g]],[/\\b(rct\\w+) b/i],[c,[m,\"RCA\"],[p,k]],[/\\b(venue[\\d ]{2,7}) b/i],[c,[m,\"Dell\"],[p,k]],[/\\b(q(?:mv|ta)\\w+) b/i],[c,[m,\"Verizon\"],[p,k]],[/\\b(?:barnes[& ]+noble |bn[rt])([\\w\\+ ]*) b/i],[c,[m,\"Barnes & Noble\"],[p,k]],[/\\b(tm\\d{3}\\w+) b/i],[c,[m,\"NuVision\"],[p,k]],[/\\b(k88) b/i],[c,[m,\"ZTE\"],[p,k]],[/\\b(nx\\d{3}j) b/i],[c,[m,\"ZTE\"],[p,g]],[/\\b(gen\\d{3}) b.+49h/i],[c,[m,\"Swiss\"],[p,g]],[/\\b(zur\\d{3}) b/i],[c,[m,\"Swiss\"],[p,k]],[/\\b((zeki)?tb.*\\b) b/i],[c,[m,\"Zeki\"],[p,k]],[/\\b([yr]\\d{2}) b/i,/\\b(dragon[- ]+touch |dt)(\\w{5}) b/i],[[m,\"Dragon Touch\"],c,[p,k]],[/\\b(ns-?\\w{0,9}) b/i],[c,[m,\"Insignia\"],[p,k]],[/\\b((nxa|next)-?\\w{0,9}) b/i],[c,[m,\"NextBook\"],[p,k]],[/\\b(xtreme\\_)?(v(1[045]|2[015]|[3469]0|7[05])) b/i],[[m,\"Voice\"],c,[p,g]],[/\\b(lvtel\\-)?(v1[12]) b/i],[[m,\"LvTel\"],c,[p,g]],[/\\b(ph-1) /i],[c,[m,\"Essential\"],[p,g]],[/\\b(v(100md|700na|7011|917g).*\\b) b/i],[c,[m,\"Envizen\"],[p,k]],[/\\b(trio[-\\w\\. ]+) b/i],[c,[m,\"MachSpeed\"],[p,k]],[/\\btu_(1491) b/i],[c,[m,\"Rotor\"],[p,k]],[/(shield[\\w ]+) b/i],[c,[m,\"Nvidia\"],[p,k]],[/(sprint) (\\w+)/i],[m,c,[p,g]],[/(kin\\.[onetw]{3})/i],[[c,/\\./g,\" \"],[m,R],[p,g]],[/droid.+; (cc6666?|et5[16]|mc[239][23]x?|vc8[03]x?)\\)/i],[c,[m,G],[p,k]],[/droid.+; (ec30|ps20|tc[2-8]\\d[kx])\\)/i],[c,[m,G],[p,g]],[/smart-tv.+(samsung)/i],[m,[p,x]],[/hbbtv.+maple;(\\d+)/i],[[c,/^/,\"SmartTV\"],[m,V],[p,x]],[/(nux; netcast.+smarttv|lg (netcast\\.tv-201\\d|android tv))/i],[[m,P],[p,x]],[/(apple) ?tv/i],[m,[c,S+\" TV\"],[p,x]],[/crkey/i],[[c,C+\"cast\"],[m,U],[p,x]],[/droid.+aft(\\w)( bui|\\))/i],[c,[m,T],[p,x]],[/\\(dtv[\\);].+(aquos)/i,/(aquos-tv[\\w ]+)\\)/i],[c,[m,D],[p,x]],[/(bravia[\\w ]+)( bui|\\))/i],[c,[m,I],[p,x]],[/(mitv-\\w{5}) bui/i],[c,[m,F],[p,x]],[/Hbbtv.*(technisat) (.*);/i],[m,c,[p,x]],[/\\b(roku)[\\dx]*[\\)\\/]((?:dvp-)?[\\d\\.]*)/i,/hbbtv\\/\\d+\\.\\d+\\.\\d+ +\\([\\w\\+ ]*; *([\\w\\d][^;]*);([^;]*)/i],[[m,trim],[c,trim],[p,x]],[/\\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\\b/i],[[p,x]],[/(ouya)/i,/(nintendo) ([wids3utch]+)/i],[m,c,[p,v]],[/droid.+; (shield) bui/i],[c,[m,\"Nvidia\"],[p,v]],[/(playstation [345portablevi]+)/i],[c,[m,I],[p,v]],[/\\b(xbox(?: one)?(?!; xbox))[\\); ]/i],[c,[m,R],[p,v]],[/((pebble))app/i],[m,c,[p,_]],[/(watch)(?: ?os[,\\/]|\\d,\\d\\/)[\\d\\.]+/i],[c,[m,S],[p,_]],[/droid.+; (glass) \\d/i],[c,[m,U],[p,_]],[/droid.+; (wt63?0{2,3})\\)/i],[c,[m,G],[p,_]],[/(quest( 2| pro)?)/i],[c,[m,H],[p,_]],[/(tesla)(?: qtcarbrowser|\\/[-\\w\\.]+)/i],[m,[p,y]],[/(aeobc)\\b/i],[c,[m,T],[p,y]],[/droid .+?; ([^;]+?)(?: bui|\\) applew).+? mobile safari/i],[c,[p,g]],[/droid .+?; ([^;]+?)(?: bui|\\) applew).+?(?! mobile) safari/i],[c,[p,k]],[/\\b((tablet|tab)[;\\/]|focus\\/\\d(?!.+mobile))/i],[[p,k]],[/(phone|mobile(?:[;\\/]| [ \\w\\/\\.]*safari)|pda(?=.+windows ce))/i],[[p,g]],[/(android[-\\w\\. ]{0,9});.+buil/i],[c,[m,\"Generic\"]]],engine:[[/windows.+ edge\\/([\\w\\.]+)/i],[f,[u,E+\"HTML\"]],[/webkit\\/537\\.36.+chrome\\/(?!27)([\\w\\.]+)/i],[f,[u,\"Blink\"]],[/(presto)\\/([\\w\\.]+)/i,/(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna)\\/([\\w\\.]+)/i,/ekioh(flow)\\/([\\w\\.]+)/i,/(khtml|tasman|links)[\\/ ]\\(?([\\w\\.]+)/i,/(icab)[\\/ ]([23]\\.[\\d\\.]+)/i,/\\b(libweb)/i],[u,f],[/rv\\:([\\w\\.]{1,9})\\b.+(gecko)/i],[f,u]],os:[[/microsoft (windows) (vista|xp)/i],[u,f],[/(windows) nt 6\\.2; (arm)/i,/(windows (?:phone(?: os)?|mobile))[\\/ ]?([\\d\\.\\w ]*)/i,/(windows)[\\/ ]?([ntce\\d\\. ]+\\w)(?!.+xbox)/i],[u,[f,strMapper,X]],[/(win(?=3|9|n)|win 9x )([nt\\d\\.]+)/i],[[u,\"Windows\"],[f,strMapper,X]],[/ip[honead]{2,4}\\b(?:.*os ([\\w]+) like mac|; opera)/i,/ios;fbsv\\/([\\d\\.]+)/i,/cfnetwork\\/.+darwin/i],[[f,/_/g,\".\"],[u,\"iOS\"]],[/(mac os x) ?([\\w\\. ]*)/i,/(macintosh|mac_powerpc\\b)(?!.+haiku)/i],[[u,Z],[f,/_/g,\".\"]],[/droid ([\\w\\.]+)\\b.+(android[- ]x86|harmonyos)/i],[f,u],[/(android|webos|qnx|bada|rim tablet os|maemo|meego|sailfish)[-\\/ ]?([\\w\\.]*)/i,/(blackberry)\\w*\\/([\\w\\.]*)/i,/(tizen|kaios)[\\/ ]([\\w\\.]+)/i,/\\((series40);/i],[u,f],[/\\(bb(10);/i],[f,[u,N]],[/(?:symbian ?os|symbos|s60(?=;)|series60)[-\\/ ]?([\\w\\.]*)/i],[f,[u,\"Symbian\"]],[/mozilla\\/[\\d\\.]+ \\((?:mobile|tablet|tv|mobile; [\\w ]+); rv:.+ gecko\\/([\\w\\.]+)/i],[f,[u,O+\" OS\"]],[/web0s;.+rt(tv)/i,/\\b(?:hp)?wos(?:browser)?\\/([\\w\\.]+)/i],[f,[u,\"webOS\"]],[/watch(?: ?os[,\\/]|\\d,\\d\\/)([\\d\\.]+)/i],[f,[u,\"watchOS\"]],[/crkey\\/([\\d\\.]+)/i],[f,[u,C+\"cast\"]],[/(cros) [\\w]+(?:\\)| ([\\w\\.]+)\\b)/i],[[u,L],f],[/panasonic;(viera)/i,/(netrange)mmh/i,/(nettv)\\/(\\d+\\.[\\w\\.]+)/i,/(nintendo|playstation) ([wids345portablevuch]+)/i,/(xbox); +xbox ([^\\);]+)/i,/\\b(joli|palm)\\b ?(?:os)?\\/?([\\w\\.]*)/i,/(mint)[\\/\\(\\) ]?(\\w*)/i,/(mageia|vectorlinux)[; ]/i,/([kxln]?ubuntu|debian|suse|opensuse|gentoo|arch(?= linux)|slackware|fedora|mandriva|centos|pclinuxos|red ?hat|zenwalk|linpus|raspbian|plan 9|minix|risc os|contiki|deepin|manjaro|elementary os|sabayon|linspire)(?: gnu\\/linux)?(?: enterprise)?(?:[- ]linux)?(?:-gnu)?[-\\/ ]?(?!chrom|package)([-\\w\\.]*)/i,/(hurd|linux) ?([\\w\\.]*)/i,/(gnu) ?([\\w\\.]*)/i,/\\b([-frentopcghs]{0,5}bsd|dragonfly)[\\/ ]?(?!amd|[ix346]{1,2}86)([\\w\\.]*)/i,/(haiku) (\\w+)/i],[u,f],[/(sunos) ?([\\w\\.\\d]*)/i],[[u,\"Solaris\"],f],[/((?:open)?solaris)[-\\/ ]?([\\w\\.]*)/i,/(aix) ((\\d)(?=\\.|\\)| )[\\w\\.])*/i,/\\b(beos|os\\/2|amigaos|morphos|openvms|fuchsia|hp-ux|serenityos)/i,/(unix) ?([\\w\\.]*)/i],[u,f]]};var UAParser=function(i,e){if(typeof i===w){e=i;i=a}if(!(this instanceof UAParser)){return new UAParser(i,e).getResult()}var r=typeof o!==b&&o.navigator?o.navigator:a;var n=i||(r&&r.userAgent?r.userAgent:t);var v=r&&r.userAgentData?r.userAgentData:a;var x=e?extend(K,e):K;var _=r&&r.userAgent==n;this.getBrowser=function(){var i={};i[u]=a;i[f]=a;rgxMapper.call(i,n,x.browser);i[d]=majorize(i[f]);if(_&&r&&r.brave&&typeof r.brave.isBrave==s){i[u]=\"Brave\"}return i};this.getCPU=function(){var i={};i[h]=a;rgxMapper.call(i,n,x.cpu);return i};this.getDevice=function(){var i={};i[m]=a;i[c]=a;i[p]=a;rgxMapper.call(i,n,x.device);if(_&&!i[p]&&v&&v.mobile){i[p]=g}if(_&&i[c]==\"Macintosh\"&&r&&typeof r.standalone!==b&&r.maxTouchPoints&&r.maxTouchPoints>2){i[c]=\"iPad\";i[p]=k}return i};this.getEngine=function(){var i={};i[u]=a;i[f]=a;rgxMapper.call(i,n,x.engine);return i};this.getOS=function(){var i={};i[u]=a;i[f]=a;rgxMapper.call(i,n,x.os);if(_&&!i[u]&&v&&v.platform!=\"Unknown\"){i[u]=v.platform.replace(/chrome os/i,L).replace(/macos/i,Z)}return i};this.getResult=function(){return{ua:this.getUA(),browser:this.getBrowser(),engine:this.getEngine(),os:this.getOS(),device:this.getDevice(),cpu:this.getCPU()}};this.getUA=function(){return n};this.setUA=function(i){n=typeof i===l&&i.length>q?trim(i,q):i;return this};this.setUA(n);return this};UAParser.VERSION=r;UAParser.BROWSER=enumerize([u,f,d]);UAParser.CPU=enumerize([h]);UAParser.DEVICE=enumerize([c,m,p,v,g,x,k,_,y]);UAParser.ENGINE=UAParser.OS=enumerize([u,f]);if(typeof e!==b){if(\"object\"!==b&&i.exports){e=i.exports=UAParser}e.UAParser=UAParser}else{if(typeof define===s&&define.amd){define((function(){return UAParser}))}else if(typeof o!==b){o.UAParser=UAParser}}var Q=typeof o!==b&&(o.jQuery||o.Zepto);if(Q&&!Q.ua){var Y=new UAParser;Q.ua=Y.getResult();Q.ua.get=function(){return Y.getUA()};Q.ua.set=function(i){Y.setUA(i);var e=Y.getResult();for(var o in e){Q.ua[o]=e[o]}}}})(typeof window===\"object\"?window:this)}};var e={};function __nccwpck_require__(o){var a=e[o];if(a!==undefined){return a.exports}var r=e[o]={exports:{}};var t=true;try{i[o].call(r.exports,r,r.exports,__nccwpck_require__);t=false}finally{if(t)delete e[o]}return r.exports}if(typeof __nccwpck_require__!==\"undefined\")__nccwpck_require__.ab=__dirname+\"/\";var o=__nccwpck_require__(943);module.exports=o})();","import parseua from 'next/dist/compiled/ua-parser-js'\n\ninterface UserAgent {\n isBot: boolean\n ua: string\n browser: {\n name?: string\n version?: string\n major?: string\n }\n device: {\n model?: string\n type?: string\n vendor?: string\n }\n engine: {\n name?: string\n version?: string\n }\n os: {\n name?: string\n version?: string\n }\n cpu: {\n architecture?: string\n }\n}\n\nexport function isBot(input: string): boolean {\n return /Googlebot|Mediapartners-Google|AdsBot-Google|googleweblight|Storebot-Google|Google-PageRenderer|Google-InspectionTool|Bingbot|BingPreview|Slurp|DuckDuckBot|baiduspider|yandex|sogou|LinkedInBot|bitlybot|tumblr|vkShare|quora link preview|facebookexternalhit|facebookcatalog|Twitterbot|applebot|redditbot|Slackbot|Discordbot|WhatsApp|SkypeUriPreview|ia_archiver|GPTBot/i.test(\n input\n )\n}\n\nexport function userAgentFromString(input: string | undefined): UserAgent {\n return {\n ...parseua(input),\n isBot: input === undefined ? false : isBot(input),\n }\n}\n\nexport function userAgent({ headers }: { headers: Headers }): UserAgent {\n return userAgentFromString(headers.get('user-agent') || undefined)\n}\n","const GlobalURLPattern =\n typeof URLPattern === 'undefined' ? undefined : URLPattern\n\nexport { GlobalURLPattern as URLPattern }\n","import type { DomainLocale } from '../../../server/config-shared'\n\nexport function detectDomainLocale(\n domainItems?: readonly DomainLocale[],\n hostname?: string,\n detectedLocale?: string\n) {\n if (!domainItems) return\n\n if (detectedLocale) {\n detectedLocale = detectedLocale.toLowerCase()\n }\n\n for (const item of domainItems) {\n // remove port if present\n const domainHostname = item.domain?.split(':', 1)[0].toLowerCase()\n if (\n hostname === domainHostname ||\n detectedLocale === item.defaultLocale.toLowerCase() ||\n item.locales?.some((locale) => locale.toLowerCase() === detectedLocale)\n ) {\n return item\n }\n }\n}\n","/**\n * Removes the trailing slash for a given route or page path. Examples:\n * - `/foo/bar/` -> `/foo/bar`\n * - `/foo/bar` -> `/foo/bar`\n *\n * Uses charCodeAt (47 === '/') instead of regex to avoid the overhead of\n * compiling and executing a RegExp on every call (~3-5x faster).\n */\nexport function removeTrailingSlash(route: string) {\n return route.charCodeAt(route.length - 1) === 47 && route.length > 1\n ? route.slice(0, -1)\n : route\n}\n","/**\n * Given a path this function will find the pathname, query and hash and return\n * them. This is useful to parse full paths on the client side.\n * @param path A path to parse e.g. /foo/bar?id=1#hash\n */\nexport function parsePath(path: string) {\n const hashIndex = path.indexOf('#')\n const queryIndex = path.indexOf('?')\n const hasQuery = queryIndex > -1 && (hashIndex < 0 || queryIndex < hashIndex)\n\n if (hasQuery || hashIndex > -1) {\n return {\n pathname: path.substring(0, hasQuery ? queryIndex : hashIndex),\n query: hasQuery\n ? path.substring(queryIndex, hashIndex > -1 ? hashIndex : undefined)\n : '',\n hash: hashIndex > -1 ? path.slice(hashIndex) : '',\n }\n }\n\n return { pathname: path, query: '', hash: '' }\n}\n","import { parsePath } from './parse-path'\n\n/**\n * Adds the provided prefix to the given path. It first ensures that the path\n * is indeed starting with a slash.\n */\nexport function addPathPrefix(path: string, prefix?: string) {\n if (!path.startsWith('/') || !prefix) {\n return path\n }\n\n const { pathname, query, hash } = parsePath(path)\n return `${prefix}${pathname}${query}${hash}`\n}\n","import { parsePath } from './parse-path'\n\n/**\n * Similarly to `addPathPrefix`, this function adds a suffix at the end on the\n * provided path. It also works only for paths ensuring the argument starts\n * with a slash.\n */\nexport function addPathSuffix(path: string, suffix?: string) {\n if (!path.startsWith('/') || !suffix) {\n return path\n }\n\n const { pathname, query, hash } = parsePath(path)\n return `${pathname}${suffix}${query}${hash}`\n}\n","import { parsePath } from './parse-path'\n\n/**\n * Checks if a given path starts with a given prefix. It ensures it matches\n * exactly without containing extra chars. e.g. prefix /docs should replace\n * for /docs, /docs/, /docs/a but not /docsss\n * @param path The path to check.\n * @param prefix The prefix to check against.\n */\nexport function pathHasPrefix(path: string, prefix: string) {\n if (typeof path !== 'string') {\n return false\n }\n\n const { pathname } = parsePath(path)\n return pathname === prefix || pathname.startsWith(prefix + '/')\n}\n","import { addPathPrefix } from './add-path-prefix'\nimport { pathHasPrefix } from './path-has-prefix'\n\n/**\n * For a given path and a locale, if the locale is given, it will prefix the\n * locale. The path shouldn't be an API path. If a default locale is given the\n * prefix will be omitted if the locale is already the default locale.\n */\nexport function addLocale(\n path: string,\n locale?: string | false,\n defaultLocale?: string,\n ignorePrefix?: boolean\n) {\n // If no locale was given or the locale is the default locale, we don't need\n // to prefix the path.\n if (!locale || locale === defaultLocale) return path\n\n const lower = path.toLowerCase()\n\n // If the path is an API path or the path already has the locale prefix, we\n // don't need to prefix the path.\n if (!ignorePrefix) {\n if (pathHasPrefix(lower, '/api')) return path\n if (pathHasPrefix(lower, `/${locale.toLowerCase()}`)) return path\n }\n\n // Add the locale prefix to the path.\n return addPathPrefix(path, `/${locale}`)\n}\n","import type { NextPathnameInfo } from './get-next-pathname-info'\nimport { removeTrailingSlash } from './remove-trailing-slash'\nimport { addPathPrefix } from './add-path-prefix'\nimport { addPathSuffix } from './add-path-suffix'\nimport { addLocale } from './add-locale'\n\ninterface ExtendedInfo extends NextPathnameInfo {\n defaultLocale?: string\n ignorePrefix?: boolean\n}\n\nexport function formatNextPathnameInfo(info: ExtendedInfo) {\n let pathname = addLocale(\n info.pathname,\n info.locale,\n info.buildId ? undefined : info.defaultLocale,\n info.ignorePrefix\n )\n\n if (info.buildId || !info.trailingSlash) {\n pathname = removeTrailingSlash(pathname)\n }\n\n if (info.buildId) {\n pathname = addPathSuffix(\n addPathPrefix(pathname, `/_next/data/${info.buildId}`),\n info.pathname === '/' ? 'index.json' : '.json'\n )\n }\n\n pathname = addPathPrefix(pathname, info.basePath)\n return !info.buildId && info.trailingSlash\n ? !pathname.endsWith('/')\n ? addPathSuffix(pathname, '/')\n : pathname\n : removeTrailingSlash(pathname)\n}\n","import type { OutgoingHttpHeaders } from 'http'\n\n/**\n * Takes an object with a hostname property (like a parsed URL) and some\n * headers that may contain Host and returns the preferred hostname.\n * @param parsed An object containing a hostname property.\n * @param headers A dictionary with headers containing a `host`.\n */\nexport function getHostname(\n parsed: { hostname?: string | null },\n headers?: OutgoingHttpHeaders\n): string | undefined {\n // Get the hostname from the headers if it exists, otherwise use the parsed\n // hostname.\n let hostname: string\n if (headers?.host && !Array.isArray(headers.host)) {\n hostname = headers.host.toString().split(':', 1)[0]\n } else if (parsed.hostname) {\n hostname = parsed.hostname\n } else return\n\n return hostname.toLowerCase()\n}\n","export interface PathLocale {\n detectedLocale?: string\n pathname: string\n}\n\n/**\n * A cache of lowercased locales for each list of locales. This is stored as a\n * WeakMap so if the locales are garbage collected, the cache entry will be\n * removed as well.\n */\nconst cache = new WeakMap<readonly string[], readonly string[]>()\n\n/**\n * For a pathname that may include a locale from a list of locales, it\n * removes the locale from the pathname returning it alongside with the\n * detected locale.\n *\n * @param pathname A pathname that may include a locale.\n * @param locales A list of locales.\n * @returns The detected locale and pathname without locale\n */\nexport function normalizeLocalePath(\n pathname: string,\n locales?: readonly string[]\n): PathLocale {\n // If locales is undefined, return the pathname as is.\n if (!locales) return { pathname }\n\n // Get the cached lowercased locales or create a new cache entry.\n let lowercasedLocales = cache.get(locales)\n if (!lowercasedLocales) {\n lowercasedLocales = locales.map((locale) => locale.toLowerCase())\n cache.set(locales, lowercasedLocales)\n }\n\n let detectedLocale: string | undefined\n\n // The first segment will be empty, because it has a leading `/`. If\n // there is no further segment, there is no locale (or it's the default).\n const segments = pathname.split('/', 2)\n\n // If there's no second segment (ie, the pathname is just `/`), there's no\n // locale.\n if (!segments[1]) return { pathname }\n\n // The second segment will contain the locale part if any.\n const segment = segments[1].toLowerCase()\n\n // See if the segment matches one of the locales. If it doesn't, there is\n // no locale (or it's the default).\n const index = lowercasedLocales.indexOf(segment)\n if (index < 0) return { pathname }\n\n // Return the case-sensitive locale.\n detectedLocale = locales[index]\n\n // Remove the `/${locale}` part of the pathname.\n pathname = pathname.slice(detectedLocale.length + 1) || '/'\n\n return { pathname, detectedLocale }\n}\n","import { pathHasPrefix } from './path-has-prefix'\n\n/**\n * Given a path and a prefix it will remove the prefix when it exists in the\n * given path. It ensures it matches exactly without containing extra chars\n * and if the prefix is not there it will be noop.\n *\n * @param path The path to remove the prefix from.\n * @param prefix The prefix to be removed.\n */\nexport function removePathPrefix(path: string, prefix: string): string {\n // If the path doesn't start with the prefix we can return it as is. This\n // protects us from situations where the prefix is a substring of the path\n // prefix such as:\n //\n // For prefix: /blog\n //\n // /blog -> true\n // /blog/ -> true\n // /blog/1 -> true\n // /blogging -> false\n // /blogging/ -> false\n // /blogging/1 -> false\n if (!pathHasPrefix(path, prefix)) {\n return path\n }\n\n // Remove the prefix from the path via slicing.\n const withoutPrefix = path.slice(prefix.length)\n\n // If the path without the prefix starts with a `/` we can return it as is.\n if (withoutPrefix.startsWith('/')) {\n return withoutPrefix\n }\n\n // If the path without the prefix doesn't start with a `/` we need to add it\n // back to the path to make sure it's a valid path.\n return `/${withoutPrefix}`\n}\n","import { normalizeLocalePath } from '../../i18n/normalize-locale-path'\nimport { removePathPrefix } from './remove-path-prefix'\nimport { pathHasPrefix } from './path-has-prefix'\nimport type { I18NProvider } from '../../../../server/lib/i18n-provider'\n\nexport interface NextPathnameInfo {\n /**\n * The base path in case the pathname included it.\n */\n basePath?: string\n /**\n * The buildId for when the parsed URL is a data URL. Parsing it can be\n * disabled with the `parseData` option.\n */\n buildId?: string\n /**\n * If there was a locale in the pathname, this will hold its value.\n */\n locale?: string\n /**\n * The processed pathname without a base path, locale, or data URL elements\n * when parsing it is enabled.\n */\n pathname: string\n /**\n * A boolean telling if the pathname had a trailingSlash. This can be only\n * true if trailingSlash is enabled.\n */\n trailingSlash?: boolean\n}\n\ninterface Options {\n /**\n * When passed to true, this function will also parse Nextjs data URLs.\n */\n parseData?: boolean\n /**\n * A partial of the Next.js configuration to parse the URL.\n */\n nextConfig?: {\n basePath?: string\n i18n?: { locales?: readonly string[] } | null\n trailingSlash?: boolean\n }\n\n /**\n * If provided, this normalizer will be used to detect the locale instead of\n * the default locale detection.\n */\n i18nProvider?: I18NProvider\n}\n\nexport function getNextPathnameInfo(\n pathname: string,\n options: Options\n): NextPathnameInfo {\n const { basePath, i18n, trailingSlash } = options.nextConfig ?? {}\n const info: NextPathnameInfo = {\n pathname,\n trailingSlash: pathname !== '/' ? pathname.endsWith('/') : trailingSlash,\n }\n\n if (basePath && pathHasPrefix(info.pathname, basePath)) {\n info.pathname = removePathPrefix(info.pathname, basePath)\n info.basePath = basePath\n }\n let pathnameNoDataPrefix = info.pathname\n\n if (\n info.pathname.startsWith('/_next/data/') &&\n info.pathname.endsWith('.json')\n ) {\n const paths = info.pathname\n .replace(/^\\/_next\\/data\\//, '')\n .replace(/\\.json$/, '')\n .split('/')\n\n const buildId = paths[0]\n info.buildId = buildId\n pathnameNoDataPrefix =\n paths[1] !== 'index' ? `/${paths.slice(1).join('/')}` : '/'\n\n // update pathname with normalized if enabled although\n // we use normalized to populate locale info still\n if (options.parseData === true) {\n info.pathname = pathnameNoDataPrefix\n }\n }\n\n // If provided, use the locale route normalizer to detect the locale instead\n // of the function below.\n if (i18n) {\n let result = options.i18nProvider\n ? options.i18nProvider.analyze(info.pathname)\n : normalizeLocalePath(info.pathname, i18n.locales)\n\n info.locale = result.detectedLocale\n info.pathname = result.pathname ?? info.pathname\n\n if (!result.detectedLocale && info.buildId) {\n result = options.i18nProvider\n ? options.i18nProvider.analyze(pathnameNoDataPrefix)\n : normalizeLocalePath(pathnameNoDataPrefix, i18n.locales)\n\n if (result.detectedLocale) {\n info.locale = result.detectedLocale\n }\n }\n }\n return info\n}\n","import type { OutgoingHttpHeaders } from 'http'\nimport type { DomainLocale, I18NConfig } from '../config-shared'\nimport type { I18NProvider } from '../lib/i18n-provider'\n\nimport { detectDomainLocale } from '../../shared/lib/i18n/detect-domain-locale'\nimport { formatNextPathnameInfo } from '../../shared/lib/router/utils/format-next-pathname-info'\nimport { getHostname } from '../../shared/lib/get-hostname'\nimport { getNextPathnameInfo } from '../../shared/lib/router/utils/get-next-pathname-info'\n\ninterface Options {\n base?: string | URL\n headers?: OutgoingHttpHeaders\n forceLocale?: boolean\n nextConfig?: {\n basePath?: string\n i18n?: I18NConfig | null\n trailingSlash?: boolean\n }\n i18nProvider?: I18NProvider\n}\n\nconst REGEX_LOCALHOST_HOSTNAME =\n /^(?:127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}|\\[::1\\]|localhost)$/\n\nfunction parseURL(url: string | URL, base?: string | URL) {\n const parsed = new URL(String(url), base && String(base))\n if (REGEX_LOCALHOST_HOSTNAME.test(parsed.hostname)) {\n parsed.hostname = 'localhost'\n }\n return parsed\n}\n\nconst Internal = Symbol('NextURLInternal')\n\nexport class NextURL {\n private [Internal]: {\n basePath: string\n buildId?: string\n flightSearchParameters?: Record<string, string>\n defaultLocale?: string\n domainLocale?: DomainLocale\n locale?: string\n options: Options\n trailingSlash?: boolean\n url: URL\n }\n\n constructor(input: string | URL, base?: string | URL, opts?: Options)\n constructor(input: string | URL, opts?: Options)\n constructor(\n input: string | URL,\n baseOrOpts?: string | URL | Options,\n opts?: Options\n ) {\n let base: undefined | string | URL\n let options: Options\n\n if (\n (typeof baseOrOpts === 'object' && 'pathname' in baseOrOpts) ||\n typeof baseOrOpts === 'string'\n ) {\n base = baseOrOpts\n options = opts || {}\n } else {\n options = opts || baseOrOpts || {}\n }\n\n this[Internal] = {\n url: parseURL(input, base ?? options.base),\n options: options,\n basePath: '',\n }\n\n this.analyze()\n }\n\n private analyze() {\n const info = getNextPathnameInfo(this[Internal].url.pathname, {\n nextConfig: this[Internal].options.nextConfig,\n parseData: !process.env.__NEXT_NO_MIDDLEWARE_URL_NORMALIZE,\n i18nProvider: this[Internal].options.i18nProvider,\n })\n\n const hostname = getHostname(\n this[Internal].url,\n this[Internal].options.headers\n )\n this[Internal].domainLocale = this[Internal].options.i18nProvider\n ? this[Internal].options.i18nProvider.detectDomainLocale(hostname)\n : detectDomainLocale(\n this[Internal].options.nextConfig?.i18n?.domains,\n hostname\n )\n\n const defaultLocale =\n this[Internal].domainLocale?.defaultLocale ||\n this[Internal].options.nextConfig?.i18n?.defaultLocale\n\n this[Internal].url.pathname = info.pathname\n this[Internal].defaultLocale = defaultLocale\n this[Internal].basePath = info.basePath ?? ''\n this[Internal].buildId = info.buildId\n this[Internal].locale = info.locale ?? defaultLocale\n this[Internal].trailingSlash = info.trailingSlash\n }\n\n private formatPathname() {\n return formatNextPathnameInfo({\n basePath: this[Internal].basePath,\n buildId: this[Internal].buildId,\n defaultLocale: !this[Internal].options.forceLocale\n ? this[Internal].defaultLocale\n : undefined,\n locale: this[Internal].locale,\n pathname: this[Internal].url.pathname,\n trailingSlash: this[Internal].trailingSlash,\n })\n }\n\n private formatSearch() {\n return this[Internal].url.search\n }\n\n public get buildId() {\n return this[Internal].buildId\n }\n\n public set buildId(buildId: string | undefined) {\n this[Internal].buildId = buildId\n }\n\n public get locale() {\n return this[Internal].locale ?? ''\n }\n\n public set locale(locale: string) {\n if (\n !this[Internal].locale ||\n !this[Internal].options.nextConfig?.i18n?.locales.includes(locale)\n ) {\n throw new TypeError(\n `The NextURL configuration includes no locale \"${locale}\"`\n )\n }\n\n this[Internal].locale = locale\n }\n\n get defaultLocale() {\n return this[Internal].defaultLocale\n }\n\n get domainLocale() {\n return this[Internal].domainLocale\n }\n\n get searchParams() {\n return this[Internal].url.searchParams\n }\n\n get host() {\n return this[Internal].url.host\n }\n\n set host(value: string) {\n this[Internal].url.host = value\n }\n\n get hostname() {\n return this[Internal].url.hostname\n }\n\n set hostname(value: string) {\n this[Internal].url.hostname = value\n }\n\n get port() {\n return this[Internal].url.port\n }\n\n set port(value: string) {\n this[Internal].url.port = value\n }\n\n get protocol() {\n return this[Internal].url.protocol\n }\n\n set protocol(value: string) {\n this[Internal].url.protocol = value\n }\n\n get href() {\n const pathname = this.formatPathname()\n const search = this.formatSearch()\n return `${this.protocol}//${this.host}${pathname}${search}${this.hash}`\n }\n\n set href(url: string) {\n this[Internal].url = parseURL(url)\n this.analyze()\n }\n\n get origin() {\n return this[Internal].url.origin\n }\n\n get pathname() {\n return this[Internal].url.pathname\n }\n\n set pathname(value: string) {\n this[Internal].url.pathname = value\n }\n\n get hash() {\n return this[Internal].url.hash\n }\n\n set hash(value: string) {\n this[Internal].url.hash = value\n }\n\n get search() {\n return this[Internal].url.search\n }\n\n set search(value: string) {\n this[Internal].url.search = value\n }\n\n get password() {\n return this[Internal].url.password\n }\n\n set password(value: string) {\n this[Internal].url.password = value\n }\n\n get username() {\n return this[Internal].url.username\n }\n\n set username(value: string) {\n this[Internal].url.username = value\n }\n\n get basePath() {\n return this[Internal].basePath\n }\n\n set basePath(value: string) {\n this[Internal].basePath = value.startsWith('/') ? value : `/${value}`\n }\n\n toString() {\n return this.href\n }\n\n toJSON() {\n return this.href\n }\n\n [Symbol.for('edge-runtime.inspect.custom')]() {\n return {\n href: this.href,\n origin: this.origin,\n protocol: this.protocol,\n username: this.username,\n password: this.password,\n host: this.host,\n hostname: this.hostname,\n port: this.port,\n pathname: this.pathname,\n search: this.search,\n searchParams: this.searchParams,\n hash: this.hash,\n }\n }\n\n clone() {\n return new NextURL(String(this), this[Internal].options)\n }\n}\n","import type { ServerRuntime } from '../types'\n\nexport const TEXT_PLAIN_CONTENT_TYPE_HEADER = 'text/plain'\nexport const HTML_CONTENT_TYPE_HEADER = 'text/html; charset=utf-8'\nexport const JSON_CONTENT_TYPE_HEADER = 'application/json; charset=utf-8'\nexport const NEXT_QUERY_PARAM_PREFIX = 'nxtP'\nexport const NEXT_INTERCEPTION_MARKER_PREFIX = 'nxtI'\n\nexport const MATCHED_PATH_HEADER = 'x-matched-path'\nexport const PRERENDER_REVALIDATE_HEADER = 'x-prerender-revalidate'\nexport const PRERENDER_REVALIDATE_ONLY_GENERATED_HEADER =\n 'x-prerender-revalidate-if-generated'\n\nexport const RSC_SEGMENTS_DIR_SUFFIX = '.segments'\nexport const RSC_SEGMENT_SUFFIX = '.segment.rsc'\nexport const RSC_SUFFIX = '.rsc'\nexport const ACTION_SUFFIX = '.action'\nexport const NEXT_DATA_SUFFIX = '.json'\nexport const NEXT_META_SUFFIX = '.meta'\nexport const NEXT_BODY_SUFFIX = '.body'\n\nexport const NEXT_NAV_DEPLOYMENT_ID_HEADER = 'x-nextjs-deployment-id'\n\nexport const NEXT_CACHE_TAGS_HEADER = 'x-next-cache-tags'\nexport const NEXT_CACHE_REVALIDATED_TAGS_HEADER = 'x-next-revalidated-tags'\nexport const NEXT_CACHE_REVALIDATE_TAG_TOKEN_HEADER =\n 'x-next-revalidate-tag-token'\n\nexport const NEXT_RESUME_HEADER = 'next-resume'\nexport const NEXT_RESUME_STATE_LENGTH_HEADER = 'x-next-resume-state-length'\n\n// if these change make sure we update the related\n// documentation as well\nexport const NEXT_CACHE_TAG_MAX_ITEMS = 128\nexport const NEXT_CACHE_TAG_MAX_LENGTH = 256\nexport const NEXT_CACHE_SOFT_TAG_MAX_LENGTH = 1024\nexport const NEXT_CACHE_IMPLICIT_TAG_ID = '_N_T_'\nexport const NEXT_CACHE_ROOT_PARAM_TAG_ID = '_N_RP_'\n\n// in seconds\nexport const CACHE_ONE_YEAR_SECONDS = 31536000\n\n// in seconds, represents revalidate=false. I.e. never revaliate.\n// We use this value since it can be represented as a V8 SMI for optimal performance.\n// It can also be serialized as JSON if it ever leaks accidentally as an actual value.\nexport const INFINITE_CACHE = 0xfffffffe\n\n// Patterns to detect middleware files\nexport const MIDDLEWARE_FILENAME = 'middleware'\nexport const MIDDLEWARE_LOCATION_REGEXP = `(?:src/)?${MIDDLEWARE_FILENAME}`\n\n// Patterns to detect proxy files (replacement for middleware)\nexport const PROXY_FILENAME = 'proxy'\nexport const PROXY_LOCATION_REGEXP = `(?:src/)?${PROXY_FILENAME}`\n\n// Pattern to detect instrumentation hooks file\nexport const INSTRUMENTATION_HOOK_FILENAME = 'instrumentation'\n\n// Because on Windows absolute paths in the generated code can break because of numbers, eg 1 in the path,\n// we have to use a private alias\nexport const PAGES_DIR_ALIAS = 'private-next-pages'\nexport const DOT_NEXT_ALIAS = 'private-dot-next'\nexport const ROOT_DIR_ALIAS = 'private-next-root-dir'\nexport const APP_DIR_ALIAS = 'private-next-app-dir'\nexport const RSC_MOD_REF_PROXY_ALIAS = 'private-next-rsc-mod-ref-proxy'\nexport const RSC_ACTION_VALIDATE_ALIAS = 'private-next-rsc-action-validate'\nexport const RSC_ACTION_PROXY_ALIAS = 'private-next-rsc-server-reference'\nexport const RSC_CACHE_WRAPPER_ALIAS = 'private-next-rsc-cache-wrapper'\nexport const RSC_DYNAMIC_IMPORT_WRAPPER_ALIAS =\n 'private-next-rsc-track-dynamic-import'\nexport const RSC_ACTION_ENCRYPTION_ALIAS = 'private-next-rsc-action-encryption'\nexport const RSC_ACTION_CLIENT_WRAPPER_ALIAS =\n 'private-next-rsc-action-client-wrapper'\n\nexport const PUBLIC_DIR_MIDDLEWARE_CONFLICT = `You can not have a '_next' folder inside of your public folder. This conflicts with the internal '/_next' route. https://nextjs.org/docs/messages/public-next-folder-conflict`\n\nexport const SSG_GET_INITIAL_PROPS_CONFLICT = `You can not use getInitialProps with getStaticProps. To use SSG, please remove your getInitialProps`\n\nexport const SERVER_PROPS_GET_INIT_PROPS_CONFLICT = `You can not use getInitialProps with getServerSideProps. Please remove getInitialProps.`\n\nexport const SERVER_PROPS_SSG_CONFLICT = `You can not use getStaticProps or getStaticPaths with getServerSideProps. To use SSG, please remove getServerSideProps`\n\nexport const STATIC_STATUS_PAGE_GET_INITIAL_PROPS_ERROR = `can not have getInitialProps/getServerSideProps, https://nextjs.org/docs/messages/404-get-initial-props`\n\nexport const SERVER_PROPS_EXPORT_ERROR = `pages with \\`getServerSideProps\\` can not be exported. See more info here: https://nextjs.org/docs/messages/gssp-export`\n\nexport const GSP_NO_RETURNED_VALUE =\n 'Your `getStaticProps` function did not return an object. Did you forget to add a `return`?'\nexport const GSSP_NO_RETURNED_VALUE =\n 'Your `getServerSideProps` function did not return an object. Did you forget to add a `return`?'\n\nexport const UNSTABLE_REVALIDATE_RENAME_ERROR =\n 'The `unstable_revalidate` property is available for general use.\\n' +\n 'Please use `revalidate` instead.'\n\nexport const GSSP_COMPONENT_MEMBER_ERROR = `can not be attached to a page's component and must be exported from the page. See more info here: https://nextjs.org/docs/messages/gssp-component-member`\n\nexport const NON_STANDARD_NODE_ENV = `You are using a non-standard \"NODE_ENV\" value in your environment. This creates inconsistencies in the project and is strongly advised against. Read more: https://nextjs.org/docs/messages/non-standard-node-env`\n\nexport const SSG_FALLBACK_EXPORT_ERROR = `Pages with \\`fallback\\` enabled in \\`getStaticPaths\\` can not be exported. See more info here: https://nextjs.org/docs/messages/ssg-fallback-true-export`\n\nexport const ESLINT_DEFAULT_DIRS = ['app', 'pages', 'components', 'lib', 'src']\n\nexport const SERVER_RUNTIME: Record<string, ServerRuntime> = {\n edge: 'edge',\n experimentalEdge: 'experimental-edge',\n nodejs: 'nodejs',\n}\n\nexport const WEB_SOCKET_MAX_RECONNECTIONS = 12\n\n/**\n * The names of the webpack layers. These layers are the primitives for the\n * webpack chunks.\n */\nconst WEBPACK_LAYERS_NAMES = {\n /**\n * The layer for the shared code between the client and server bundles.\n */\n shared: 'shared',\n /**\n * The layer for server-only runtime and picking up `react-server` export conditions.\n * Including app router RSC pages and app router custom routes and metadata routes.\n */\n reactServerComponents: 'rsc',\n /**\n * Server Side Rendering layer for app (ssr).\n */\n serverSideRendering: 'ssr',\n /**\n * The browser client bundle layer for actions.\n */\n actionBrowser: 'action-browser',\n /**\n * The Node.js bundle layer for the API routes.\n */\n apiNode: 'api-node',\n /**\n * The Edge Lite bundle layer for the API routes.\n */\n apiEdge: 'api-edge',\n /**\n * The layer for the middleware code.\n */\n middleware: 'middleware',\n /**\n * The layer for the instrumentation hooks.\n */\n instrument: 'instrument',\n /**\n * The layer for assets on the edge.\n */\n edgeAsset: 'edge-asset',\n /**\n * The browser client bundle layer for App directory.\n */\n appPagesBrowser: 'app-pages-browser',\n /**\n * The browser client bundle layer for Pages directory.\n */\n pagesDirBrowser: 'pages-dir-browser',\n /**\n * The Edge Lite bundle layer for Pages directory.\n */\n pagesDirEdge: 'pages-dir-edge',\n /**\n * The Node.js bundle layer for Pages directory.\n */\n pagesDirNode: 'pages-dir-node',\n} as const\n\nexport type WebpackLayerName =\n (typeof WEBPACK_LAYERS_NAMES)[keyof typeof WEBPACK_LAYERS_NAMES]\n\nconst WEBPACK_LAYERS = {\n ...WEBPACK_LAYERS_NAMES,\n GROUP: {\n builtinReact: [\n WEBPACK_LAYERS_NAMES.reactServerComponents,\n WEBPACK_LAYERS_NAMES.actionBrowser,\n ],\n serverOnly: [\n WEBPACK_LAYERS_NAMES.reactServerComponents,\n WEBPACK_LAYERS_NAMES.actionBrowser,\n WEBPACK_LAYERS_NAMES.instrument,\n WEBPACK_LAYERS_NAMES.middleware,\n ],\n neutralTarget: [\n // pages api\n WEBPACK_LAYERS_NAMES.apiNode,\n WEBPACK_LAYERS_NAMES.apiEdge,\n ],\n clientOnly: [\n WEBPACK_LAYERS_NAMES.serverSideRendering,\n WEBPACK_LAYERS_NAMES.appPagesBrowser,\n ],\n bundled: [\n WEBPACK_LAYERS_NAMES.reactServerComponents,\n WEBPACK_LAYERS_NAMES.actionBrowser,\n WEBPACK_LAYERS_NAMES.serverSideRendering,\n WEBPACK_LAYERS_NAMES.appPagesBrowser,\n WEBPACK_LAYERS_NAMES.shared,\n WEBPACK_LAYERS_NAMES.instrument,\n WEBPACK_LAYERS_NAMES.middleware,\n ],\n appPages: [\n // app router pages and layouts\n WEBPACK_LAYERS_NAMES.reactServerComponents,\n WEBPACK_LAYERS_NAMES.serverSideRendering,\n WEBPACK_LAYERS_NAMES.appPagesBrowser,\n WEBPACK_LAYERS_NAMES.actionBrowser,\n ],\n },\n}\n\nconst WEBPACK_RESOURCE_QUERIES = {\n edgeSSREntry: '__next_edge_ssr_entry__',\n metadata: '__next_metadata__',\n metadataRoute: '__next_metadata_route__',\n metadataImageMeta: '__next_metadata_image_meta__',\n}\n\nexport { WEBPACK_LAYERS, WEBPACK_RESOURCE_QUERIES }\n","import type { OutgoingHttpHeaders } from 'http'\nimport {\n NEXT_INTERCEPTION_MARKER_PREFIX,\n NEXT_QUERY_PARAM_PREFIX,\n} from '../../lib/constants'\n\n/**\n * Converts a Node.js IncomingHttpHeaders object to a Headers object. Any\n * headers with multiple values will be joined with a comma and space. Any\n * headers that have an undefined value will be ignored and others will be\n * coerced to strings.\n *\n * @param nodeHeaders the headers object to convert\n * @returns the converted headers object\n */\nexport function fromNodeOutgoingHttpHeaders(\n nodeHeaders: OutgoingHttpHeaders\n): Headers {\n const headers = new Headers()\n for (let [key, value] of Object.entries(nodeHeaders)) {\n const values = Array.isArray(value) ? value : [value]\n for (let v of values) {\n if (typeof v === 'undefined') continue\n if (typeof v === 'number') {\n v = v.toString()\n }\n\n headers.append(key, v)\n }\n }\n return headers\n}\n\n/*\n Set-Cookie header field-values are sometimes comma joined in one string. This splits them without choking on commas\n that are within a single set-cookie field-value, such as in the Expires portion.\n This is uncommon, but explicitly allowed - see https://tools.ietf.org/html/rfc2616#section-4.2\n Node.js does this for every header *except* set-cookie - see https://github.com/nodejs/node/blob/d5e363b77ebaf1caf67cd7528224b651c86815c1/lib/_http_incoming.js#L128\n React Native's fetch does this for *every* header, including set-cookie.\n \n Based on: https://github.com/google/j2objc/commit/16820fdbc8f76ca0c33472810ce0cb03d20efe25\n Credits to: https://github.com/tomball for original and https://github.com/chrusart for JavaScript implementation\n*/\nexport function splitCookiesString(cookiesString: string) {\n var cookiesStrings = []\n var pos = 0\n var start\n var ch\n var lastComma\n var nextStart\n var cookiesSeparatorFound\n\n function skipWhitespace() {\n while (pos < cookiesString.length && /\\s/.test(cookiesString.charAt(pos))) {\n pos += 1\n }\n return pos < cookiesString.length\n }\n\n function notSpecialChar() {\n ch = cookiesString.charAt(pos)\n\n return ch !== '=' && ch !== ';' && ch !== ','\n }\n\n while (pos < cookiesString.length) {\n start = pos\n cookiesSeparatorFound = false\n\n while (skipWhitespace()) {\n ch = cookiesString.charAt(pos)\n if (ch === ',') {\n // ',' is a cookie separator if we have later first '=', not ';' or ','\n lastComma = pos\n pos += 1\n\n skipWhitespace()\n nextStart = pos\n\n while (pos < cookiesString.length && notSpecialChar()) {\n pos += 1\n }\n\n // currently special character\n if (pos < cookiesString.length && cookiesString.charAt(pos) === '=') {\n // we found cookies separator\n cookiesSeparatorFound = true\n // pos is inside the next cookie, so back up and return it.\n pos = nextStart\n cookiesStrings.push(cookiesString.substring(start, lastComma))\n start = pos\n } else {\n // in param ',' or param separator ';',\n // we continue from that comma\n pos = lastComma + 1\n }\n } else {\n pos += 1\n }\n }\n\n if (!cookiesSeparatorFound || pos >= cookiesString.length) {\n cookiesStrings.push(cookiesString.substring(start, cookiesString.length))\n }\n }\n\n return cookiesStrings\n}\n\n/**\n * Converts a Headers object to a Node.js OutgoingHttpHeaders object. This is\n * required to support the set-cookie header, which may have multiple values.\n *\n * @param headers the headers object to convert\n * @returns the converted headers object\n */\nexport function toNodeOutgoingHttpHeaders(\n headers: Headers\n): OutgoingHttpHeaders {\n const nodeHeaders: OutgoingHttpHeaders = {}\n const cookies: string[] = []\n if (headers) {\n for (const [key, value] of headers.entries()) {\n if (key.toLowerCase() === 'set-cookie') {\n // We may have gotten a comma joined string of cookies, or multiple\n // set-cookie headers. We need to merge them into one header array\n // to represent all the cookies.\n cookies.push(...splitCookiesString(value))\n nodeHeaders[key] = cookies.length === 1 ? cookies[0] : cookies\n } else {\n nodeHeaders[key] = value\n }\n }\n }\n return nodeHeaders\n}\n\n/**\n * Validate the correctness of a user-provided URL.\n */\nexport function validateURL(url: string | URL): string {\n try {\n return String(new URL(String(url)))\n } catch (error: any) {\n throw new Error(\n `URL is malformed \"${String(\n url\n )}\". Please use only absolute URLs - https://nextjs.org/docs/messages/middleware-relative-urls`,\n { cause: error }\n )\n }\n}\n\n/**\n * Normalizes `nxtP` and `nxtI` query param values to remove the prefix.\n * This function does not mutate the input key.\n */\nexport function normalizeNextQueryParam(key: string): null | string {\n const prefixes = [NEXT_QUERY_PARAM_PREFIX, NEXT_INTERCEPTION_MARKER_PREFIX]\n for (const prefix of prefixes) {\n if (key !== prefix && key.startsWith(prefix)) {\n return key.substring(prefix.length)\n }\n }\n return null\n}\n","export class PageSignatureError extends Error {\n constructor({ page }: { page: string }) {\n super(`The middleware \"${page}\" accepts an async API directly with the form:\n \n export function middleware(request, event) {\n return NextResponse.redirect('/new-location')\n }\n \n Read more: https://nextjs.org/docs/messages/middleware-new-signature\n `)\n }\n}\n\nexport class RemovedPageError extends Error {\n constructor() {\n super(`The request.page has been deprecated in favour of \\`URLPattern\\`.\n Read more: https://nextjs.org/docs/messages/middleware-request-page\n `)\n }\n}\n\nexport class RemovedUAError extends Error {\n constructor() {\n super(`The request.ua has been removed in favour of \\`userAgent\\` function.\n Read more: https://nextjs.org/docs/messages/middleware-parse-user-agent\n `)\n }\n}\n","/**\n * src/lib/core.ts\n * All file-system operations. Used by API routes, MCP handler, and SSR.\n * Runs server-side only.\n */\n\nimport fs from 'fs/promises'\nimport path from 'path'\nimport os from 'os'\nimport { glob } from 'glob'\nimport { execFile } from 'child_process'\nimport { promisify } from 'util'\nimport { applyEdits, type TextEdit } from './diff'\nimport { roadmapFromMarkdown, roadmapFromTasks, starterRoadmap, type RoadmapDraft, type RoadmapSource } from './roadmap-import'\nimport { pickNextTask, type QueueResult } from './work-queue'\nimport { selectPlan, validatePlan, type Plan } from './plan'\nimport { SESSION_GAP_MS, groupSessions, type Session } from './sessions'\nimport { parseManualTests, setManualTests, toggleManualTest } from './manual-tests'\nimport { appendReviewEntry, type ReviewOutcome } from './review'\nimport type { SavedView } from './board-views'\nimport { parseOwner } from './owner'\nimport { DEFAULT_SIZE_DAYS, datesOnMove, type SizeDays } from './auto-dates'\nimport { resolveStatus, statusDefs, statusLine, type StatusDef } from './statuses'\nimport { localToday } from './roadmap-health'\nimport { docPriority, parsePriority, setDocProperty, type Priority } from './doc-priority'\nimport { DEFAULT_SESSION_BUDGET, fitToBudget, formatEpisodeSection, formatRelated, indexHits, rankEntries, taskQuery, tokenize, type RecallHit } from './recall'\nimport { buildEpisode, hasWork, isHandoffWritten, lastEventTitle, mergeSources, parseEpisode, sessionsNeedingEpisode, type Episode } from './episodes'\nimport { buildGraph, extractRefs, fileNode, type GraphItem, type MemoryGraph } from './memory-graph'\nimport { buildDocGraph, docNode, extractLinks, type DocGraph, type DocItem } from './doc-links'\nimport { findContradictions, findDuplicates, findStale, formatHealthWarnings, markRecalled, pruneDismissed, sortedLog, type HealthFlag, type RecallLog } from './memory-health'\nimport { mergeMemory, parseMemory, passedKeys, SECTIONS, type MemoryParams } from './memory-sections'\nimport { entrySlug, formatEntry, nextEntryId, normalizeEntryId, parseEntry, replaceEntryRefs, validateEntryInput, type Entry, type EntryInput, type EntryType } from './entries'\nimport { renderEntriesBlock, upsertManagedBlock } from './entries-export'\nimport { CLAUDE_SOURCE_PREFIX, claudeProjectSlug, parseClaudeMemory, planImport, type ClaudeMemoryCandidate, type ImportPlan } from './claude-memory'\nimport { isDemo } from './demo'\n\n// ─── Types ────────────────────────────────────────────────────────────────────\n\nexport type TaskStatus = 'todo' | 'in-progress' | 'review' | 'blocked' | 'paused' | 'done' | 'cancelled'\n\nexport interface Task {\n id: string\n title: string\n status: TaskStatus\n size: string\n phase: string\n dependsOn: string\n /** A project status (R055) this task is in; `status` then holds its category. Unset for built-ins. */\n customStatus?: string\n /** `**Owner:**` \"human\" | \"ai:<agent>\", null when unset (R055) */\n owner: string | null\n /** `**Priority:** P0–P3`, null when unset */\n priority: Priority | null\n /** Optional `**Due:** YYYY-MM-DD` (local calendar date, compare as string). */\n due: string | null\n /** `**Started:**` / `**Done:**` dates, stamped on status moves (R055) */\n started: string | null\n finished: string | null\n /** The `## Manual tests` checklist (R043), counted; null when the task has none */\n manualTests: { total: number; done: number } | null\n file: string\n raw?: string\n}\n\nexport interface TaskBoard {\n todo: Task[]\n 'in-progress': Task[]\n /** Optional step (R043): waiting for a human to approve or send back. Nothing requires it. */\n review: Task[]\n blocked: Task[]\n /** Stopped on purpose (R055): not claimable, not a met dependency */\n paused: Task[]\n done: Task[]\n cancelled: Task[]\n}\n\nexport interface DocFile {\n path: string\n section: string\n name: string\n /** `priority:` in the doc's frontmatter, null when unset */\n priority?: Priority | null\n}\n\nexport interface DescriptionCache {\n [path: string]: {\n description: string\n source: 'extracted' | 'ai'\n updatedAt: string\n }\n}\n\nexport interface ExplorerFile {\n path: string\n name: string\n section: string\n description: string\n source: 'extracted' | 'ai'\n updatedAt: string\n mtime: string\n}\n\nexport interface SearchResult {\n file: string\n hits: { line: number; text: string }[]\n totalHits: number\n}\n\nexport interface ActivityEvent {\n id: string\n timestamp: string\n type: 'task_updated' | 'decision_logged' | 'memory_updated' | 'doc_read' | 'session_start' | 'doc_created' | 'doc_updated' | 'doc_deleted' | 'doc_renamed' | 'registry_rebuilt' | 'roadmap_updated'\n actor: 'ai' | 'human'\n title: string\n detail?: string\n taskId?: string\n taskStatus?: TaskStatus\n sessionId?: string\n}\n\nexport interface Project {\n id: string\n name: string\n root: string\n hasVibedoc: boolean\n}\n\n// ─── Constants ────────────────────────────────────────────────────────────────\n\n/** Loose status text (\"Ready\", \"🔨 In-progress\", \"on hold\") → built-in category. Custom ids need the project's defs (resolveStatus). */\nexport function normalizeStatus(raw: string): TaskStatus {\n return resolveStatus(raw).status\n}\n\n// ─── Project detection ────────────────────────────────────────────────────────\n\nexport async function findRoot(startDir = process.cwd()): Promise<string> {\n let dir = path.resolve(startDir)\n for (let i = 0; i < 12; i++) {\n for (const marker of ['CLAUDE.md', 'AGENTS.md', 'docs/architecture', '.vibedoc']) {\n try { await fs.access(path.join(dir, marker)); return dir } catch {}\n }\n const parent = path.dirname(dir)\n if (parent === dir) break\n dir = parent\n }\n return path.resolve(startDir)\n}\n\nexport function getConfiguredRoot(): string {\n return process.env.VIBEDOC_ROOT || process.cwd()\n}\n\n/** The project root for a request's `?root=` override. The read-only demo pins the configured root, so visitors can't read other host folders. */\nexport function rootFrom(override?: string | null): string {\n return (!isDemo() && override) || getConfiguredRoot()\n}\n\n// ─── Multi-project: scan parent directories ───────────────────────────────────\n\nexport async function discoverProjects(searchBase?: string): Promise<Project[]> {\n const base = searchBase || path.dirname(getConfiguredRoot())\n const projects: Project[] = []\n\n if (!isDemo()) try {\n const entries = await fs.readdir(base, { withFileTypes: true })\n for (const entry of entries) {\n if (!entry.isDirectory()) continue\n const dir = path.join(base, entry.name)\n let hasVibedoc = false\n for (const marker of ['CLAUDE.md', 'AGENTS.md', 'docs/architecture', '.vibedoc']) {\n try { await fs.access(path.join(dir, marker)); hasVibedoc = true; break } catch {}\n }\n if (hasVibedoc) {\n projects.push({ id: entry.name, name: entry.name, root: dir, hasVibedoc: true })\n }\n }\n } catch {}\n\n // Always ensure configured root is first\n const root = getConfiguredRoot()\n const name = path.basename(root)\n const existingIdx = projects.findIndex(p => p.root === root)\n if (existingIdx > 0) {\n const [existing] = projects.splice(existingIdx, 1)\n projects.unshift(existing)\n } else if (existingIdx === -1) {\n projects.unshift({ id: name, name, root, hasVibedoc: true })\n }\n\n return projects\n}\n\n// ─── Docs ─────────────────────────────────────────────────────────────────────\n\nexport async function listDocs(root: string): Promise<DocFile[]> {\n const files = await glob('**/*.md', {\n cwd: root,\n ignore: ['node_modules/**', '.git/**', '.next/**'],\n nodir: true,\n })\n\n // ponytail: reads every doc for its frontmatter; read only the head of each file if lists get slow\n return Promise.all(files.sort().map(async f => ({\n path: f,\n section: inferSection(f),\n name: path.basename(f, '.md'),\n priority: docPriority(await fs.readFile(path.join(root, f), 'utf8').catch(() => '')),\n })))\n}\n\n/** Sets (value) or removes (null) frontmatter properties of a doc; the rest of the file is untouched. */\nexport async function setDocProperties(docPath: string, props: Record<string, string | null>, root: string): Promise<void> {\n const fullPath = path.resolve(root, docPath)\n if (!fullPath.startsWith(path.resolve(root) + path.sep)) throw new Error('Path outside root')\n const content = await fs.readFile(fullPath, 'utf8')\n const next = Object.entries(props).reduce((c, [k, v]) => setDocProperty(c, k, v), content)\n if (next !== content) await fs.writeFile(fullPath, next, 'utf8')\n}\n\nfunction inferSection(f: string): string {\n if (!f.includes('/')) return 'root'\n if (f.startsWith('memory/')) return 'memory'\n if (f.startsWith('plans/')) return 'plans'\n if (f.includes('01-overview')) return 'overview'\n if (f.includes('02-high-level') || f.includes('high-level-design')) return 'high-level-design'\n if (f.includes('03-services') || f.includes('/services/')) return 'services'\n if (f.includes('04-data') || f.includes('/data/')) return 'data'\n if (f.includes('05-infra') || f.includes('/infrastructure/')) return 'infrastructure'\n if (f.includes('06-security') || f.includes('/security/')) return 'security'\n if (f.includes('07-observ') || f.includes('/observability/')) return 'observability'\n if (f.includes('08-resil') || f.includes('/resilience/')) return 'resilience'\n if (f.includes('decisions/') || f.includes('ADR')) return 'decisions'\n return 'other'\n}\n\nexport async function readDoc(query: string, root: string): Promise<{ path: string; content: string }> {\n const candidates = [\n path.join(root, query),\n path.join(root, `${query}.md`),\n path.join(root, 'docs', query),\n path.join(root, 'docs', `${query}.md`),\n path.join(root, 'docs', 'architecture', query),\n path.join(root, 'docs', 'architecture', `${query}.md`),\n path.join(root, 'memory', query),\n path.join(root, 'memory', `${query}.md`),\n path.join(root, 'plans', query),\n path.join(root, 'plans', `${query}.md`),\n ]\n\n for (const c of candidates) {\n try {\n const content = await fs.readFile(c, 'utf8')\n return { path: path.relative(root, c), content }\n } catch {}\n }\n\n // Glob fallback\n for (const pattern of [`**/${query}.md`, `**/${query}*.md`, `**/*${query}*.md`]) {\n const matches = await glob(pattern, {\n cwd: root,\n ignore: ['node_modules/**', '.git/**', '.next/**'],\n nodir: true,\n nocase: true,\n })\n if (matches.length > 0) {\n const content = await fs.readFile(path.join(root, matches[0]), 'utf8')\n return { path: matches[0], content }\n }\n }\n\n throw new Error(`Doc not found: \"${query}\"`)\n}\n\nexport async function writeDoc(docPath: string, content: string, root: string): Promise<void> {\n const resolvedRoot = path.resolve(root)\n const fullPath = path.resolve(root, docPath)\n if (!fullPath.startsWith(resolvedRoot + path.sep) && fullPath !== resolvedRoot) {\n throw new Error('Path outside root')\n }\n await fs.mkdir(path.dirname(fullPath), { recursive: true })\n await fs.writeFile(fullPath, content, 'utf8')\n}\n\n// Reads the doc at an exact path ('' if missing) and applies old_string→new_string edits.\n// dryRun validates without writing (used to check a proposal before the user sees it).\nexport async function editDoc(\n docPath: string,\n edits: TextEdit[],\n root: string,\n dryRun = false,\n): Promise<{ before: string; content: string }> {\n const resolvedRoot = path.resolve(root)\n const fullPath = path.resolve(root, docPath)\n if (!fullPath.startsWith(resolvedRoot + path.sep)) throw new Error('Path outside root')\n const before = await fs.readFile(fullPath, 'utf8').catch((e: NodeJS.ErrnoException) => {\n if (e.code === 'ENOENT') return ''\n throw e\n })\n const result = applyEdits(before, edits)\n if ('error' in result) throw new Error(result.error)\n if (!dryRun) {\n await fs.mkdir(path.dirname(fullPath), { recursive: true })\n await fs.writeFile(fullPath, result.content, 'utf8')\n }\n return { before, content: result.content }\n}\n\nexport async function getContext(paths: string[], root: string): Promise<string> {\n const parts: string[] = []\n for (const p of paths) {\n try {\n const { content } = await readDoc(p, root)\n parts.push(`--- FILE: ${p} ---\\n\\n${content.trim()}`)\n } catch {\n // skip missing or unreadable files\n }\n }\n return parts.join('\\n\\n---\\n\\n')\n}\n\nexport async function createDoc(docPath: string, content: string, root: string, actor: 'ai' | 'human' = 'human'): Promise<void> {\n const resolvedRoot = path.resolve(root)\n const fullPath = path.resolve(root, docPath)\n if (!fullPath.startsWith(resolvedRoot + path.sep) && fullPath !== resolvedRoot) {\n throw new Error('Path outside root')\n }\n try {\n await fs.access(fullPath)\n const err = new Error(`File already exists: ${docPath}`) as NodeJS.ErrnoException\n err.code = 'EEXIST'\n throw err\n } catch (e) {\n const nodeErr = e as NodeJS.ErrnoException\n if (nodeErr.code !== 'ENOENT') throw e\n }\n await fs.mkdir(path.dirname(fullPath), { recursive: true })\n await fs.writeFile(fullPath, content, 'utf8')\n await appendActivity(root, { type: 'doc_created', actor, title: `Created: ${docPath}`, detail: docPath })\n try { const { exists } = await readRegistry(root); if (exists) await rebuildRegistry(root, actor, false) } catch {}\n}\n\nexport async function searchDocs(query: string, root: string): Promise<SearchResult[]> {\n const files = await glob('**/*.md', {\n cwd: root,\n ignore: ['node_modules/**', '.git/**', '.next/**'],\n nodir: true,\n })\n const qLower = query.toLowerCase()\n const results: SearchResult[] = []\n\n for (const f of files) {\n try {\n const content = await fs.readFile(path.join(root, f), 'utf8')\n const lines = content.split('\\n')\n const hits = lines\n .map((line, i) => ({ line: i + 1, text: line.trim().slice(0, 120) }))\n .filter(h => h.text.toLowerCase().includes(qLower))\n if (hits.length > 0) results.push({ file: f, hits: hits.slice(0, 4), totalHits: hits.length })\n } catch {}\n }\n\n return results.sort((a, b) => b.totalHits - a.totalHits).slice(0, 20)\n}\n\n// ─── Tasks ────────────────────────────────────────────────────────────────────\n\nconst warnedStatuses = new Set<string>()\n\nfunction parseTaskFile(filePath: string, content: string, defs: StatusDef[]): Task {\n const lines = content.split('\\n')\n const filename = path.basename(filePath, '.md')\n const titleLine = lines.find(l => l.startsWith('# '))\n const title = (titleLine || '').replace(/^#+\\s*/, '').replace(/^T\\d+\\s*[:—–-]\\s*/i, '').trim() || filename\n\n // Only the head block under the H1 counts, so a `**Depends on:**` quoted in the body can't override it.\n const meta: Record<string, string> = {}\n for (const line of lines.slice(0, roadmapMetaEnd(lines))) {\n const m = line.match(/\\*\\*([^*]+):\\*\\*\\s*(.+)/)\n if (m) meta[m[1].toLowerCase().trim()] = m[2].trim()\n }\n\n const resolved = resolveStatus(meta['status'] || 'todo', defs)\n const warnKey = `${filePath}\\0${meta['status']}`\n if (resolved.unknown && !warnedStatuses.has(warnKey)) {\n // listTasks runs on every refresh: warn once per file + value per process\n warnedStatuses.add(warnKey)\n console.warn(`[vibedoc] ${filePath}: unknown status \"${meta['status']}\", shown as todo`)\n }\n const { status, customStatus } = resolved\n const idM = filename.match(/^(T\\d+)/i)\n const id = idM ? idM[1].toUpperCase() : filename.toUpperCase()\n\n const tests = parseManualTests(content)\n const manualTests = tests && { total: tests.total, done: tests.done }\n return { id, title, status, ...(customStatus && { customStatus }), size: meta['size'] || '', phase: meta['phase'] || '', dependsOn: meta['depends on'] || '', owner: parseOwner(meta['owner']), priority: parsePriority(meta['priority']), due: parseDue(meta['due'] || ''), started: parseDue(meta['started'] || ''), finished: parseDue(meta['done'] || ''), manualTests, file: filePath, raw: content }\n}\n\nexport async function listTasks(root: string): Promise<{ tasks: Task[]; board: TaskBoard }> {\n const { statuses } = await readProjectSettings(root)\n let files = await glob('plans/tasks/T*.md', { cwd: root, nodir: true })\n if (files.length === 0) files = await glob('plans/T*.md', { cwd: root, nodir: true })\n\n const tasks: Task[] = []\n for (const f of files.sort()) {\n try {\n const content = await fs.readFile(path.join(root, f), 'utf8')\n tasks.push(parseTaskFile(f, content, statuses))\n } catch {}\n }\n\n const board: TaskBoard = { todo: [], 'in-progress': [], review: [], blocked: [], paused: [], done: [], cancelled: [] }\n for (const t of tasks) {\n const col = (board[t.status] ? t.status : 'todo') as TaskStatus\n board[col].push(t)\n }\n return { tasks, board }\n}\n\nexport async function getTask(taskId: string, root: string): Promise<Task> {\n const { statuses } = await readProjectSettings(root)\n const id = taskId.toUpperCase().startsWith('T') ? taskId.toUpperCase() : `T${taskId}`\n for (const pattern of [`plans/tasks/${id}*.md`, `plans/${id}*.md`]) {\n const matches = await glob(pattern, { cwd: root, nodir: true })\n if (matches.length > 0) {\n const content = await fs.readFile(path.join(root, matches[0]), 'utf8')\n return parseTaskFile(matches[0], content, statuses)\n }\n }\n throw new Error(`Task not found: ${taskId}`)\n}\n\n/**\n * Owner that a status change assigns (R055): an agent that starts a task takes it over;\n * a human move only fills an empty owner. Approve / send back pass no mover and leave it alone.\n */\nfunction ownerAfterMove(current: string | null, status: TaskStatus, mover?: { actor: 'ai' | 'human'; agent?: string }): string | null {\n if (!mover) return current\n if (mover.actor === 'ai') return status === 'in-progress' ? parseOwner(`ai:${mover.agent || 'agent'}`) ?? 'ai:agent' : current\n return current ?? 'human'\n}\n\n/**\n * The task settings from .vibedoc/settings.json (R055): `tasks.sizeDays` over the defaults (automatic due dates)\n * and `statuses` (custom statuses; the built-ins when unset).\n */\nexport async function readProjectSettings(root: string): Promise<{ sizeDays: SizeDays; statuses: StatusDef[]; sessionBudgetTokens: number }> {\n let s: { tasks?: { sizeDays?: SizeDays }; statuses?: unknown; memory?: { sessionBudgetTokens?: unknown } } | null = null\n try { s = JSON.parse(await fs.readFile(path.join(root, '.vibedoc', 'settings.json'), 'utf8')) } catch {}\n const budget = Number(s?.memory?.sessionBudgetTokens)\n return {\n sizeDays: { ...DEFAULT_SIZE_DAYS, ...(s?.tasks?.sizeDays ?? {}) }, statuses: statusDefs(s?.statuses),\n // R048: token cap for what vibedoc_read_memory returns\n sessionBudgetTokens: budget > 0 ? budget : DEFAULT_SESSION_BUDGET,\n }\n}\n\n/** Replace-or-insert (or remove, for '' / null) one `**Label:**` line inside the head meta block. */\nfunction withMetaLine(content: string, label: string, value: string | null): string {\n const lines = content.split('\\n')\n const end = roadmapMetaEnd(lines)\n const at = lines.slice(0, end).findIndex(l => l.toLowerCase().startsWith(`**${label.toLowerCase()}:**`))\n if (!value) { if (at >= 0) lines.splice(at, 1) }\n else if (at >= 0) lines[at] = `**${label}:** ${value}`\n else lines.splice(end, 0, `**${label}:** ${value}`)\n return lines.join('\\n')\n}\n\nexport async function updateTaskStatus(\n /** A built-in status, an alias, or one of the project's custom status ids */\n taskId: string, statusKey: string, root: string, actor: 'ai' | 'human' = 'human',\n /** Set by a board move or an agent claim / update; drives the owner (see ownerAfterMove) */\n mover?: { actor: 'ai' | 'human'; agent?: string },\n): Promise<{ task: Task; previousStatus: TaskStatus }> {\n const task = await getTask(taskId, root)\n const previousStatus = task.status\n const { statuses, sizeDays } = await readProjectSettings(root)\n const resolved = resolveStatus(statusKey, statuses)\n if (resolved.unknown) throw new RoadmapError(`Unknown status \"${statusKey}\" (expected ${statuses.map(d => d.id).join(' | ')})`)\n const newStatus = resolved.status\n const line = statusLine(statusKey, statuses)\n\n let content = task.raw!\n const statusPattern = /(\\*\\*Status:\\*\\*\\s*).+/\n if (statusPattern.test(content)) {\n content = content.replace(statusPattern, `$1${line}`)\n } else {\n content = content.replace(/^(#[^\\n]+\\n)/, `$1**Status:** ${line}\\n`)\n }\n\n const owner = ownerAfterMove(task.owner, newStatus, mover)\n if (owner !== task.owner) content = withMetaLine(content, 'Owner', owner)\n\n const dates = datesOnMove(newStatus, { due: task.due, started: task.started, done: task.finished }, task.size, localToday(), sizeDays)\n if (dates.due !== task.due) content = withMetaLine(content, 'Due', dates.due)\n if (dates.started !== task.started) content = withMetaLine(content, 'Started', dates.started)\n if (dates.done !== task.finished) content = withMetaLine(content, 'Done', dates.done)\n\n await fs.writeFile(path.join(root, task.file), content, 'utf8')\n\n // A move to the status the task already has (re-claim, repeated update_task) isn't news\n const unchanged = task.status === newStatus && task.customStatus === resolved.customStatus\n if (!unchanged) await appendActivity(root, {\n type: 'task_updated', actor,\n title: `${task.id} moved to ${newStatus}`,\n detail: task.title,\n taskId: task.id,\n taskStatus: newStatus,\n })\n\n const { customStatus: _old, ...rest } = task\n return { task: { ...rest, status: newStatus, ...(resolved.customStatus && { customStatus: resolved.customStatus }), owner, due: dates.due, started: dates.started, finished: dates.done, raw: content }, previousStatus }\n}\n\n/** Write (or replace) the task's `## Manual tests` checklist. `report` is a markdown checklist; plain lines become items. */\nexport interface TaskMetaPatch {\n title?: string\n size?: string\n phase?: string\n dependsOn?: string\n /** YYYY-MM-DD, or null / '' to remove the line */\n due?: string | null\n /** \"human\" | \"ai:<agent>\", or null / '' to remove the line */\n owner?: string | null\n /** P0–P3, or null / '' to remove the line */\n priority?: string | null\n}\n\nconst TASK_META_LABELS: [keyof Omit<TaskMetaPatch, 'title'>, string][] = [\n ['phase', 'Phase'], ['size', 'Size'], ['dependsOn', 'Depends on'], ['due', 'Due'], ['owner', 'Owner'], ['priority', 'Priority'],\n]\n\n/** Rewrite the H1 and the head meta block only; the body (manual tests, review, spec) stays byte-for-byte. */\nexport async function updateTaskMeta(\n taskId: string, patch: TaskMetaPatch, root: string, actor: 'ai' | 'human' = 'human'\n): Promise<Task> {\n const task = await getTask(taskId, root)\n const oneLine = (v: string) => v.replace(/\\s+/g, ' ').trim()\n const lines = task.raw!.split('\\n')\n let end = roadmapMetaEnd(lines)\n\n if (patch.title !== undefined) {\n const title = oneLine(patch.title)\n if (!title) throw new RoadmapError('title must not be empty')\n const h1 = lines.findIndex(l => l.startsWith('# '))\n if (h1 >= 0) lines[h1] = `# ${task.id}: ${title}`\n else { lines.unshift(`# ${task.id}: ${title}`); end++ }\n }\n\n for (const [key, label] of TASK_META_LABELS) {\n const raw = patch[key]\n if (raw === undefined) continue\n let value = raw === null ? '' : oneLine(raw)\n if (key === 'due' && value) {\n const d = parseDue(value)\n if (!d) throw new RoadmapError(`due must be a date YYYY-MM-DD (got ${JSON.stringify(raw)})`)\n value = d\n }\n if (key === 'owner' && value) {\n const o = parseOwner(value)\n if (!o) throw new RoadmapError(`owner must be \"human\" or \"ai:<agent>\" (got ${JSON.stringify(raw)})`)\n value = o\n }\n if (key === 'priority' && value) {\n const p = parsePriority(value)\n if (!p) throw new RoadmapError(`priority must be P0, P1, P2 or P3 (got ${JSON.stringify(raw)})`)\n value = p\n }\n const at = lines.slice(0, end).findIndex(l => l.toLowerCase().startsWith(`**${label.toLowerCase()}:**`))\n if (!value && (key === 'due' || key === 'owner' || key === 'priority')) {\n if (at >= 0) { lines.splice(at, 1); end-- }\n continue\n }\n const line = `**${label}:** ${value || '—'}`\n if (at >= 0) lines[at] = line\n else { lines.splice(end, 0, line); end++ }\n }\n\n const content = lines.join('\\n')\n if (content === task.raw) return task\n await fs.writeFile(path.join(root, task.file), content, 'utf8')\n await appendActivity(root, { type: 'task_updated', actor, title: `${task.id} edited`, detail: task.title, taskId: task.id })\n return getTask(task.id, root)\n}\n\n/** Where a deleted task sat in an epic's **Tasks:** line, so Undo can put it back in place. */\nexport interface TaskLink { epic: string; index: number }\n\n/** Delete the task file and unlink it from every epic's **Tasks:** line. Returns the removed task (with raw) and its links. */\nexport function deleteTask(taskId: string, root: string, actor: 'ai' | 'human' = 'human'): Promise<{ task: Task; links: TaskLink[] }> {\n return withTaskClaimLock(async () => {\n const task = await getTask(taskId, root)\n await fs.unlink(path.join(root, task.file))\n // Task lock, then roadmap lock: same order as applyPlan.\n const { items } = await listRoadmap(root)\n const links: TaskLink[] = []\n for (const epic of items.filter(i => i.tasks.includes(task.id))) {\n links.push({ epic: epic.id, index: epic.tasks.indexOf(task.id) })\n await updateRoadmapItem(epic.id, { tasks: epic.tasks.filter(t => t !== task.id) }, root, actor, false)\n }\n await appendActivity(root, { type: 'task_updated', actor, title: `${task.id} deleted`, detail: task.title, taskId: task.id })\n return { task, links }\n })\n}\n\n/** Move a task to an epic (or out of every epic): the epics' **Tasks:** lines and the task's **Phase:** follow. */\nexport async function setTaskEpic(taskId: string, epicId: string | null, root: string, actor: 'ai' | 'human' = 'human'): Promise<Task> {\n const task = await getTask(taskId, root)\n const { items } = await listRoadmap(root)\n const target = epicId ? items.find(i => i.id === epicId.trim().toUpperCase() && i.parent !== null) : undefined\n if (epicId && !target) throw new RoadmapError(`Epic not found: ${epicId}`)\n for (const e of items.filter(i => i.tasks.includes(task.id) && i.id !== target?.id)) {\n await updateRoadmapItem(e.id, { tasks: e.tasks.filter(t => t !== task.id) }, root, actor, false)\n }\n if (target && !target.tasks.includes(task.id)) await updateRoadmapItem(target.id, { tasks: [...target.tasks, task.id] }, root, actor, false)\n return updateTaskMeta(task.id, { phase: target ? `${target.id} — ${target.title}` : '' }, root, actor)\n}\n\nexport type BulkTaskAction = { status: string } | { epic: string | null } | { delete: true }\n\n/** One action over many tasks. Stops at the first failure; tasks before it keep the change. */\nexport async function bulkTasks(\n ids: string[], action: BulkTaskAction, root: string, actor: 'ai' | 'human' = 'human'\n): Promise<{ deleted: { task: Task; links: TaskLink[] }[] }> {\n const deleted: { task: Task; links: TaskLink[] }[] = []\n for (const id of ids) {\n if ('status' in action) await updateTaskStatus(id, action.status, root, actor, { actor })\n else if ('epic' in action) await setTaskEpic(id, action.epic, root, actor)\n else if ('delete' in action) deleted.push(await deleteTask(id, root, actor))\n }\n return { deleted }\n}\n\n/** Only a plain `<dir>/<name>.md` path counts: no traversal, no subfolders. */\nfunction isFileIn(rel: unknown, dir: string, name: RegExp): rel is string {\n if (typeof rel !== 'string') return false\n const norm = path.posix.normalize(rel)\n return norm === rel && path.posix.dirname(norm) === dir && name.test(path.posix.basename(norm))\n}\n\n/** Undo for deleteTask: write the file back byte-for-byte (never over an existing one) and re-link it. */\nexport function restoreTask(file: unknown, raw: unknown, links: TaskLink[], root: string, actor: 'ai' | 'human' = 'human'): Promise<Task> {\n return withTaskClaimLock(async () => {\n if (!isFileIn(file, 'plans/tasks', /^T\\d+[^/]*\\.md$/) || typeof raw !== 'string') throw new RoadmapError('Invalid task to restore')\n const id = path.basename(file).match(/^(T\\d+)/i)![1].toUpperCase()\n if (await getTask(id, root).then(() => true, () => false)) throw new RoadmapError(`${id} already exists`)\n await fs.mkdir(path.join(root, 'plans/tasks'), { recursive: true })\n await fs.writeFile(path.join(root, file), raw, { flag: 'wx', encoding: 'utf8' })\n const { items } = await listRoadmap(root)\n for (const link of Array.isArray(links) ? links : []) {\n const epic = items.find(i => i.id === link?.epic)\n if (!epic || epic.tasks.includes(id)) continue\n const tasks = [...epic.tasks]\n tasks.splice(Math.max(0, Math.min(Number(link.index) || 0, tasks.length)), 0, id)\n await updateRoadmapItem(epic.id, { tasks }, root, actor, false)\n }\n await appendActivity(root, { type: 'task_updated', actor, title: `${id} restored`, taskId: id })\n return getTask(id, root)\n })\n}\n\nexport async function saveManualTests(taskId: string, report: string, root: string, actor: 'ai' | 'human' = 'ai'): Promise<Task> {\n const task = await getTask(taskId, root)\n const content = setManualTests(task.raw ?? '', report, actor, new Date().toISOString().slice(0, 10))\n await fs.writeFile(path.join(root, task.file), content, 'utf8')\n return getTask(task.id, root)\n}\n\n/** The task isn't in the state an action needs (e.g. approving a task that isn't in review). Routes map it to 409. */\nexport class TaskStateError extends Error {}\n\nasync function reviewTask(taskId: string, outcome: ReviewOutcome, note: string, next: TaskStatus, root: string) {\n const task = await getTask(taskId, root)\n if (task.status !== 'review') throw new TaskStateError(`${task.id} is ${task.status}, not in review`)\n const at = new Date().toISOString().replace(/\\.\\d{3}Z$/, 'Z')\n const content = appendReviewEntry(task.raw ?? '', outcome, note, at)\n await fs.writeFile(path.join(root, task.file), content, 'utf8')\n return updateTaskStatus(task.id, next, root, 'human')\n}\n\n/** Review → done, with an `approved` entry in the task's `## Review` section. */\nexport function approveTask(taskId: string, root: string, note = '') {\n return reviewTask(taskId, 'approved', note, 'done', root)\n}\n\n/** Review → todo (so vibedoc_next_task hands it out again), with the note as a `changes requested` entry. Note required. */\nexport function sendBackTask(taskId: string, note: string, root: string) {\n return reviewTask(taskId, 'changes requested', note, 'todo', root)\n}\n\n/** Tick or untick one manual test item (index in file order). Never changes the task status. Throws RangeError for a bad index. */\nexport async function setManualTestChecked(taskId: string, index: number, checked: boolean, root: string): Promise<Task> {\n const task = await getTask(taskId, root)\n const content = toggleManualTest(task.raw ?? '', index, checked)\n if (content !== task.raw) await fs.writeFile(path.join(root, task.file), content, 'utf8')\n return getTask(task.id, root)\n}\n\n// ponytail: in-process mutex so two agents never claim the same task; separate from the roadmap lock.\n// Doesn't cover a second VibeDoc process on the same root.\nlet taskClaimLock: Promise<unknown> = Promise.resolve()\nfunction withTaskClaimLock<T>(fn: () => Promise<T>): Promise<T> {\n const run = taskClaimLock.then(fn, fn)\n taskClaimLock = run.catch(() => {})\n return run\n}\n\n/** Atomically pick the next ready task of an epic and move it to in-progress. */\nexport function claimNextTask(\n epicId: string, root: string, agent?: string\n): Promise<{ result: QueueResult; task?: Task; previousStatus?: TaskStatus }> {\n return withTaskClaimLock(async () => {\n const epic = await getRoadmapItem(epicId, root)\n if (!epic.parent) throw new Error(`${epic.id} is a horizon; pass an epic id`)\n const { tasks } = await listTasks(root)\n const result = pickNextTask(epic, tasks)\n if (result.kind !== 'ready') return { result }\n const { task, previousStatus } = await updateTaskStatus(result.taskId, 'in-progress', root, 'ai', { actor: 'ai', agent })\n return { result, task, previousStatus }\n })\n}\n\nexport interface CreateTaskParams {\n title: string\n phase?: string\n size?: string\n description?: string\n dependsOn?: string\n due?: string\n body?: string // replaces the template sections below the meta block\n}\n\n/** Serialized with next_task claims and plan applies, so concurrent creates never pick the same id. */\nexport function createTask(params: CreateTaskParams, root: string, actor: 'ai' | 'human' = 'human'): Promise<Task> {\n return withTaskClaimLock(() => createTaskUnlocked(params, root, actor))\n}\n\n/** Caller must hold withTaskClaimLock (applyPlan does). */\nasync function createTaskUnlocked(params: CreateTaskParams, root: string, actor: 'ai' | 'human'): Promise<Task> {\n const { tasks } = await listTasks(root)\n // One line only: a newline in the title would inject **Key:** lines into the meta block\n const title = params.title.replace(/\\s+/g, ' ').trim()\n\n const ids = tasks\n .map(t => parseInt(t.id.replace(/^T/i, ''), 10))\n .filter(n => !isNaN(n))\n const nextNum = ids.length > 0 ? Math.max(...ids) + 1 : 1\n const id = `T${String(nextNum).padStart(3, '0')}`\n\n const slug = title\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, '-')\n .replace(/^-|-$/g, '')\n .slice(0, 40) || 'task'\n\n const filename = `${id}-${slug}.md`\n const tasksDir = path.join(root, 'plans', 'tasks')\n await fs.mkdir(tasksDir, { recursive: true })\n const filePath = path.join(tasksDir, filename)\n\n let due = params.due ? parseDue(params.due) : null\n if (params.due && !due) throw new RoadmapError(`due must be a date YYYY-MM-DD (got ${JSON.stringify(params.due)})`)\n // A new task in an epic with a deadline takes the epic's due (R055)\n const epicId = params.phase?.trim().match(/^(R\\d+)\\b/i)?.[1]\n if (!due && epicId) due = (await getRoadmapItem(epicId, root).catch(() => null))?.due ?? null\n\n const meta = `# ${id}: ${title}\n**Status:** 📋 Ready\n**Phase:** ${params.phase || '—'}\n**Size:** ${params.size || '—'}\n**Depends on:** ${params.dependsOn || '—'}\n${due ? `**Due:** ${due}\\n` : ''}`\n const content = params.body !== undefined ? `${meta}\\n${params.body.trim()}\\n` : `${meta}\n## What to build\n${params.description || '—'}\n\n## Scope\n- [ ]\n\n## Acceptance criteria\n- [ ]\n\n## Definition of done\n—\n`\n\n await fs.writeFile(filePath, content, { flag: 'wx', encoding: 'utf8' })\n // logged so the graph's Recent (touchedPaths) and the activity feed see new tasks\n await appendActivity(root, { type: 'task_updated', actor, title: `${id} created`, detail: title, taskId: id })\n return getTask(id, root)\n}\n\n/** Validate against the current files, then keep the selected keys. Throws RoadmapError on any problem. */\nfunction checkPlan(plan: unknown, selected: unknown, items: RoadmapItem[], taskIds: string[]): Plan {\n const errors = validatePlan(plan, { roadmap: items, taskIds })\n if (errors.length > 0) throw new RoadmapError(errors.join('\\n'))\n if (!Array.isArray(selected)) throw new RoadmapError('selected must be an array of plan keys')\n const { plan: sel, errors: selErrors } = selectPlan(plan as Plan, selected.map(String))\n if (selErrors.length > 0) throw new RoadmapError(selErrors.join('\\n'))\n return sel\n}\n\n/**\n * Write the selected items of a plan. Validates again against the current files.\n * breakdown: plan keys become real T ids in order (so `dependsOn` keys are written as those ids) and are\n * linked to the epic (an existing one, or `newEpic` created first; neither = loose tasks, no Phase); runs under the task-claim lock so ids can't collide with next_task or another apply.\n * roadmap: horizons first (keys → R ids), then epics under their resolved parent; order and status use\n * createRoadmapItem's defaults (after the last sibling, step 10; planned). Runs under the roadmap lock.\n * `epic` is the breakdown's epic, null for a roadmap plan or loose tasks.\n */\nexport function applyPlan(\n plan: unknown, selected: unknown, root: string, actor: 'ai' | 'human' = 'human'\n): Promise<{ created: { key: string; id: string; file: string }[]; epic: RoadmapItem | null }> {\n if ((plan as { kind?: unknown } | null)?.kind === 'roadmap') {\n return withRoadmapLock(async () => {\n const [items, { tasks }] = await Promise.all([readRoadmapFiles(root), listTasks(root)])\n const sel = checkPlan(plan, selected, items.map(f => f.item), tasks.map(t => t.id))\n if (sel.kind !== 'roadmap') throw new RoadmapError('expected a roadmap plan')\n const ids = new Map<string, string>()\n const created: { key: string; id: string; file: string }[] = []\n // ponytail: not atomic; a failure mid-way leaves the items written so far (each is a valid item).\n for (const h of sel.horizons) {\n const item = await createRoadmapItemUnlocked({ title: h.title.trim(), body: h.body }, root, actor)\n ids.set(h.key.trim(), item.id)\n created.push({ key: h.key, id: item.id, file: item.file })\n }\n for (const e of sel.epics) {\n const parent = ids.get(e.parent.trim()) ?? e.parent.trim().toUpperCase()\n const item = await createRoadmapItemUnlocked({ title: e.title.trim(), parent, status: e.status, body: e.body }, root, actor)\n created.push({ key: e.key, id: item.id, file: item.file })\n }\n return { created, epic: null }\n })\n }\n return withTaskClaimLock(async () => {\n const [{ items }, { tasks }] = await Promise.all([listRoadmap(root), listTasks(root)])\n const sel = checkPlan(plan, selected, items, tasks.map(t => t.id))\n if (sel.kind !== 'breakdown') throw new RoadmapError('expected a breakdown plan')\n\n // Roadmap lock inside the task lock: same order as updateRoadmapItem below.\n // ponytail: not atomic; a failure after the new epic is written leaves it with no tasks.\n const epic = sel.epic?.trim() ? await getRoadmapItem(sel.epic, root)\n : sel.newEpic ? await createRoadmapItem({\n title: sel.newEpic.title.trim(), parent: sel.newEpic.parent.trim().toUpperCase(), body: sel.newEpic.body,\n }, root, actor)\n : null\n const ids = new Map<string, string>()\n const created: { key: string; id: string; file: string }[] = []\n for (const t of sel.tasks) {\n const deps = (t.dependsOn ?? []).map(d => ids.get(d.trim()) ?? d.trim().toUpperCase())\n const task = await createTaskUnlocked({\n title: t.title.trim(),\n phase: epic ? `${epic.id} — ${epic.title}` : undefined,\n size: t.size,\n dependsOn: deps.join(', ') || undefined,\n due: t.due,\n body: t.body,\n }, root, actor)\n ids.set(t.key.trim(), task.id)\n created.push({ key: t.key, id: task.id, file: task.file })\n }\n\n if (!epic) return { created, epic: null }\n const fresh = await getRoadmapItem(epic.id, root)\n const updated = await updateRoadmapItem(epic.id, { tasks: [...fresh.tasks, ...created.map(c => c.id)] }, root, actor, false)\n return { created, epic: updated }\n })\n}\n\n\n// ─── Decisions (ADRs) ─────────────────────────────────────────────────────────\n\nexport interface ADRParams {\n title: string\n context: string\n decision: string\n rationale?: string\n alternatives?: { option: string; reason: string }[]\n consequences?: string\n}\n\nexport async function logDecision(params: ADRParams, root: string, actor: 'ai' | 'human' = 'human'): Promise<{ adrNumber: string; path: string }> {\n const { title, context, decision, rationale, alternatives = [], consequences } = params\n const existing = await glob('docs/architecture/decisions/ADR-*.md', { cwd: root, nodir: true })\n const nums = existing.map(f => parseInt(path.basename(f).match(/ADR-(\\d+)/)?.[1] || '0')).filter(n => !isNaN(n))\n const nextNum = nums.length > 0 ? Math.max(...nums) + 1 : 1\n const numStr = String(nextNum).padStart(3, '0')\n const slug = title.toLowerCase().replace(/[^a-z0-9\\s-]/g, '').replace(/\\s+/g, '-').slice(0, 50)\n const filename = `ADR-${numStr}-${slug}.md`\n const today = new Date().toISOString().split('T')[0]\n const altsTable = alternatives.length > 0\n ? alternatives.map(a => `| ${a.option} | ${a.reason} |`).join('\\n')\n : '| (none) | — |'\n\n const content = `# ADR-${numStr}: ${title}\\n\\n**Status:** ✅ Accepted\\n**Date:** ${today}\\n\\n## Context\\n${context}\\n\\n## Decision\\n${decision}\\n\\n## Rationale\\n${rationale || ''}\\n\\n## Alternatives considered\\n| Option | Why rejected |\\n|--------|-------------|\\n${altsTable}\\n\\n## Consequences\\n${consequences || ''}\\n`\n\n const filePath = path.join(root, 'docs/architecture/decisions', filename)\n await fs.mkdir(path.dirname(filePath), { recursive: true })\n await fs.writeFile(filePath, content, 'utf8')\n\n // Update index\n const indexPath = path.join(root, 'docs/architecture/decisions/_INDEX.md')\n try {\n let idx = await fs.readFile(indexPath, 'utf8')\n idx = idx.trimEnd() + `\\n| ADR-${numStr} | ${title} | ✅ Accepted | ${today} |\\n`\n await fs.writeFile(indexPath, idx, 'utf8')\n } catch {\n await fs.writeFile(indexPath, `# ADR Index\\n\\n| ADR | Title | Status | Date |\\n|-----|-------|--------|------|\\n| ADR-${numStr} | ${title} | ✅ Accepted | ${today} |\\n`, 'utf8')\n }\n\n await appendActivity(root, {\n type: 'decision_logged', actor,\n title: `ADR-${numStr}: ${title}`,\n detail: decision.slice(0, 100),\n })\n\n return { adrNumber: `ADR-${numStr}`, path: `docs/architecture/decisions/${filename}` }\n}\n\n// ─── Memory ───────────────────────────────────────────────────────────────────\n\nexport type { MemoryParams } from './memory-sections'\n\nexport async function readMemory(root: string): Promise<{ content: string; exists: boolean }> {\n try {\n const content = await fs.readFile(path.join(root, 'memory', 'MEMORY.md'), 'utf8')\n return { content, exists: true }\n } catch {\n return { content: '*(No MEMORY.md found — AI will create one at end of session)*', exists: false }\n }\n}\n\n/** Rewrites only the sections passed (R045); throws \"Nothing to update: …\" when no known field is given. */\nexport async function updateMemory(params: MemoryParams, root: string, actor: 'ai' | 'human' = 'human'): Promise<void> {\n const now = new Date()\n const stamp = `${now.toISOString().split('T')[0]} at ${now.toLocaleTimeString('en-US', { hour: '2-digit', minute: '2-digit' })}`\n const file = path.join(root, 'memory', 'MEMORY.md')\n const current = await fs.readFile(file, 'utf8').catch(() => '')\n const content = mergeMemory(current, params, stamp)\n\n await snapshotMemory(root, actor, 'update')\n await fs.mkdir(path.join(root, 'memory'), { recursive: true })\n await fs.writeFile(file, content, 'utf8')\n\n const keys = passedKeys(params)\n await appendActivity(root, {\n type: 'memory_updated', actor,\n title: 'Session memory updated',\n detail: params.handoff != null\n ? String(params.handoff).slice(0, 120)\n : `Updated: ${SECTIONS.filter(([k]) => keys.includes(k)).map(([, h]) => h).join(', ')}`,\n })\n}\n\n// ─── Memory history (R045) ────────────────────────────────────────────────────\n\nconst MEMORY_HISTORY_DIR = path.join('.vibedoc', 'memory-history')\nconst MEMORY_HISTORY_KEEP = 20\nconst SNAPSHOT_ID = /^\\d{8}T\\d{9}Z-[\\w:-]+$/\nconst SNAPSHOT_HEADER = /^<!-- vibedoc-snapshot actor=(\\S*) reason=(\\S*) -->\\r?\\n/\n\nexport type MemoryVersion = { id: string; at: string; actor: string; reason: string; bytes: number; excerpt: string }\n\n/** `20261003T154209123Z-ai` → `2026-10-03T15:42:09.123Z` */\nconst snapshotAt = (id: string) => id.replace(/^(\\d{4})(\\d\\d)(\\d\\d)T(\\d\\d)(\\d\\d)(\\d\\d)(\\d{3})Z.*$/, '$1-$2-$3T$4:$5:$6.$7Z')\n\n/**\n * Copies the current MEMORY.md (if any) to .vibedoc/memory-history/<stamp>-<actor>.md, keeping the 20 newest.\n * ponytail: no lock — two concurrent writes can both snapshot the same base; add withMemoryLock if that matters.\n */\nasync function snapshotMemory(root: string, actor: 'ai' | 'human', reason: 'update' | 'restore'): Promise<string | null> {\n const current = await fs.readFile(path.join(root, 'memory', 'MEMORY.md'), 'utf8').catch(() => null)\n if (current === null) return null\n const dir = path.join(root, MEMORY_HISTORY_DIR)\n await fs.mkdir(dir, { recursive: true })\n const who = actor === 'ai' ? 'ai' : 'human'\n const body = `<!-- vibedoc-snapshot actor=${who} reason=${reason} -->\\n${current}`\n // same-millisecond writes: step the stamp forward instead of overwriting a snapshot\n let id = ''\n for (let t = Date.now(); ; t++) {\n id = `${new Date(t).toISOString().replace(/[-:.]/g, '')}-${who}`\n try {\n await fs.writeFile(path.join(dir, `${id}.md`), body, { encoding: 'utf8', flag: 'wx' })\n break\n } catch (e) {\n if ((e as NodeJS.ErrnoException).code !== 'EEXIST') throw e\n }\n }\n const ids = await snapshotIds(root)\n await Promise.all(ids.slice(MEMORY_HISTORY_KEEP).map(old => fs.rm(path.join(dir, `${old}.md`), { force: true })))\n return id\n}\n\n/** Snapshot ids, newest first (the stamp prefix sorts by time). */\nasync function snapshotIds(root: string): Promise<string[]> {\n const names = await fs.readdir(path.join(root, MEMORY_HISTORY_DIR)).catch(() => [] as string[])\n return names.filter(n => n.endsWith('.md')).map(n => n.slice(0, -3)).filter(id => SNAPSHOT_ID.test(id)).sort().reverse()\n}\n\nasync function readSnapshot(id: string, root: string): Promise<{ actor: string; reason: string; content: string } | null> {\n if (!SNAPSHOT_ID.test(id)) throw new RoadmapError('Invalid version id')\n const raw = await fs.readFile(path.join(root, MEMORY_HISTORY_DIR, `${id}.md`), 'utf8').catch(() => null)\n if (raw === null) return null\n const h = SNAPSHOT_HEADER.exec(raw)\n return { actor: h?.[1] ?? '', reason: h?.[2] ?? '', content: h ? raw.slice(h[0].length) : raw }\n}\n\n/** Saved MEMORY.md versions, newest first; `excerpt` = first non-empty line of that version's handoff. */\nexport async function listMemoryVersions(root: string): Promise<MemoryVersion[]> {\n const out: MemoryVersion[] = []\n for (const id of await snapshotIds(root)) {\n const snap = await readSnapshot(id, root)\n if (!snap) continue\n const handoff = parseMemory(snap.content).sections.find(s => s.heading.trim().toLowerCase() === 'handoff for next session')\n const excerpt = handoff?.body.split(/\\r?\\n/).map(l => l.trim()).find(Boolean) ?? ''\n out.push({ id, at: snapshotAt(id), actor: snap.actor, reason: snap.reason, bytes: Buffer.byteLength(snap.content), excerpt })\n }\n return out\n}\n\n/** A saved version's content (without the snapshot header); null when missing; RoadmapError on a malformed id. */\nexport async function getMemoryVersion(id: string, root: string): Promise<string | null> {\n return (await readSnapshot(id, root))?.content ?? null\n}\n\n/** Writes a saved version back to MEMORY.md, snapshotting the current file first (reason=restore) so it can be undone. */\nexport async function restoreMemoryVersion(id: string, root: string, actor: 'ai' | 'human' = 'human'): Promise<{ restoredFrom: string; newId: string | null }> {\n const content = await getMemoryVersion(id, root)\n if (content === null) throw new RoadmapError(`Version ${id} not found`, 404)\n const newId = await snapshotMemory(root, actor, 'restore')\n await fs.mkdir(path.join(root, 'memory'), { recursive: true })\n await fs.writeFile(path.join(root, 'memory', 'MEMORY.md'), content, 'utf8')\n const at = snapshotAt(id)\n await appendActivity(root, { type: 'memory_updated', actor, title: `Restored MEMORY.md from ${at}` })\n return { restoredFrom: at, newId }\n}\n\n// ─── Knowledge entries (R046) ─────────────────────────────────────────────────\n\nconst ENTRIES_DIR = path.join('memory', 'entries')\n\n// ponytail: in-process mutex so two agents never get the same new id; doesn't cover a second VibeDoc process on the same root.\nlet entryLock: Promise<unknown> = Promise.resolve()\nfunction withEntryLock<T>(fn: () => Promise<T>): Promise<T> {\n const run = entryLock.then(fn, fn)\n entryLock = run.catch(() => {})\n return run\n}\n\n/** Every parseable `memory/entries/*.md`, sorted by id. Missing folder → []. */\nexport async function listEntries(root: string): Promise<Entry[]> {\n let names: string[]\n try {\n names = await fs.readdir(path.join(root, ENTRIES_DIR))\n } catch {\n return []\n }\n const entries = await Promise.all(names.filter(n => n.endsWith('.md')).map(async n => {\n const file = path.join(ENTRIES_DIR, n)\n return parseEntry(await fs.readFile(path.join(root, file), 'utf8'), file)\n }))\n return entries.filter((e): e is Entry => !!e).sort((a, b) => a.id.localeCompare(b.id, 'en', { numeric: true }))\n}\n\nexport async function getEntry(id: string, root: string): Promise<Entry | null> {\n const norm = normalizeEntryId(id)\n return (await listEntries(root)).find(e => e.id === norm) ?? null\n}\n\n/**\n * Create (no id) or update (id) one entry. Throws with the validation message on bad input or an unknown id.\n * Stamps `**By:**`: \"human\", or \"ai:<agent>\" for an agent save (R047). An update without `source` keeps the old one (R052).\n * `log: false` skips the per-entry activity event (a batch import logs one event itself).\n */\nexport function saveEntry(input: EntryInput, root: string, actor: 'ai' | 'human' = 'human', agent?: string, log = true): Promise<Entry> {\n const error = validateEntryInput(input)\n if (error) return Promise.reject(new Error(error))\n return withEntryLock(async () => {\n const entries = await listEntries(root)\n let id: string\n let previous: Entry | undefined\n if (input.id !== undefined) {\n id = normalizeEntryId(String(input.id)) as string\n previous = entries.find(e => e.id === id)\n if (!previous) throw new Error(`Entry ${id} not found`)\n } else {\n id = nextEntryId(entries.map(e => e.id))\n }\n const summary = input.summary.trim()\n const entry: Entry = {\n id, type: input.type as EntryType, summary, body: (input.body ?? '').trim(),\n updatedAt: localToday(), by: actor === 'human' ? 'human' : parseOwner(`ai:${agent || 'agent'}`) ?? 'ai:agent',\n source: (typeof input.source === 'string' && input.source.trim()) || previous?.source,\n file: path.join(ENTRIES_DIR, `${id}-${entrySlug(summary)}.md`),\n }\n await fs.mkdir(path.join(root, ENTRIES_DIR), { recursive: true })\n await fs.writeFile(path.join(root, entry.file), formatEntry(entry), 'utf8')\n // Summary changed → new slug; the id stays\n if (previous && previous.file !== entry.file) await fs.rm(path.join(root, previous.file), { force: true })\n if (log) await appendActivity(root, { type: 'memory_updated', actor, title: `Entry ${id} saved`, detail: summary })\n return entry\n })\n}\n\n/**\n * `<config>/projects/<slug>/memory`, config = $CLAUDE_CONFIG_DIR or ~/.claude. Fixed: callers can't pass a path (R052).\n * The slug comes from the real path, like Claude Code's (macOS /tmp → /private/tmp, symlinked folders).\n */\nexport async function claudeMemoryDir(root: string): Promise<string> {\n const config = process.env.CLAUDE_CONFIG_DIR || path.join(os.homedir(), '.claude')\n const real = await fs.realpath(root).catch(() => path.resolve(root))\n return path.join(config, 'projects', claudeProjectSlug(real), 'memory')\n}\n\n/** The project's Claude Code memories as entry candidates, read-only. Skips MEMORY.md (the index) and unparsable files; missing folder → []. */\nexport async function readClaudeMemory(root: string): Promise<ClaudeMemoryCandidate[]> {\n const dir = await claudeMemoryDir(root)\n let names: string[]\n try {\n names = await fs.readdir(dir)\n } catch {\n return []\n }\n const files = names.filter(n => n.endsWith('.md') && n !== 'MEMORY.md').sort()\n const parsed = await Promise.all(files.map(async n => parseClaudeMemory(await fs.readFile(path.join(dir, n), 'utf8').catch(() => ''), n)))\n return parsed.filter((c): c is ClaudeMemoryCandidate => !!c)\n}\n\n/**\n * Plan the import of the project's Claude Code memory (dedupe by `**Source:**`); with `apply`, write the new and\n * changed entries through saveEntry() (ids from its lock) and log one activity event. `dir` uses `~` for the home path.\n */\nexport async function importClaudeMemory(\n root: string, actor: 'ai' | 'human', apply: boolean, agent?: string,\n): Promise<{ dir: string; found: number; plan: ImportPlan; written: number }> {\n const abs = await claudeMemoryDir(root)\n const home = os.homedir()\n const dir = abs === home || abs.startsWith(home + path.sep) ? '~' + abs.slice(home.length) : abs\n const candidates = await readClaudeMemory(root)\n const plan = planImport(candidates, await listEntries(root))\n let written = 0\n if (apply) {\n // ponytail: planned outside the entry lock, so a save racing the import can still slip in a duplicate source\n const toInput = (c: ClaudeMemoryCandidate, id?: string): EntryInput =>\n ({ id, type: c.type, summary: c.summary, body: c.body, source: CLAUDE_SOURCE_PREFIX + c.name })\n for (const c of plan.create) { await saveEntry(toInput(c), root, actor, agent, false); written++ }\n for (const u of plan.update) { await saveEntry(toInput(u.candidate, u.entry.id), root, actor, agent, false); written++ }\n if (written) await appendActivity(root, { type: 'memory_updated', actor, title: `Imported ${written} entries from Claude Code` })\n }\n return { dir, found: candidates.length, plan, written }\n}\n\n/**\n * Write the entries into the managed block of AGENTS.md (created when missing) and CLAUDE.md (only when it exists),\n * so agents that read those files see the same conventions (R052). A file is written only when its text changed.\n * Both files are checked before either is written, so a broken block (one marker) leaves both untouched.\n */\nexport async function exportEntries(root: string, actor: 'ai' | 'human'): Promise<{ count: number; files: { file: string; changed: boolean }[] }> {\n const entries = await listEntries(root)\n const block = renderEntriesBlock(entries)\n const plans: { file: string; before: string; after: string }[] = []\n for (const file of ['AGENTS.md', 'CLAUDE.md']) {\n const before = await fs.readFile(path.join(root, file), 'utf8').catch(() => null)\n if (before === null && file === 'CLAUDE.md') continue // creating CLAUDE.md changes how Claude Code treats the project\n const res = upsertManagedBlock(before ?? '', block)\n if ('error' in res) throw new RoadmapError(`${file}: ${res.error}`)\n plans.push({ file, before: before ?? '', after: res.text })\n }\n for (const p of plans) {\n if (p.after === p.before) continue\n await fs.writeFile(path.join(root, p.file), p.after, 'utf8')\n await appendActivity(root, { type: 'doc_updated', actor, title: `Exported memory to ${p.file}`, detail: p.file })\n }\n return { count: entries.length, files: plans.map(p => ({ file: p.file, changed: p.after !== p.before })) }\n}\n\n/** Entries in the order of `ids` (any case / padding), plus the ids that matched nothing. */\nexport async function getEntriesByIds(ids: string[], root: string): Promise<{ found: Entry[]; missing: string[] }> {\n const byId = new Map((await listEntries(root)).map(e => [e.id, e]))\n const found: Entry[] = []\n const missing: string[] = []\n for (const raw of ids) {\n const entry = byId.get(normalizeEntryId(String(raw)) ?? '')\n if (entry) found.push(entry)\n else missing.push(String(raw))\n }\n return { found, missing }\n}\n\nconst RECALL_LOG_FILE = path.join('memory', '.recall-log.json')\n\n/** `memory/.recall-log.json` (entry id → YYYY-MM-DD last fetched by vibedoc_get_entries); missing or invalid → {}. */\nexport async function readRecallLog(root: string): Promise<RecallLog> {\n try {\n const d = JSON.parse(await fs.readFile(path.join(root, RECALL_LOG_FILE), 'utf-8')) as unknown\n if (d && typeof d === 'object' && !Array.isArray(d)) {\n return Object.fromEntries(Object.entries(d).filter((kv): kv is [string, string] => typeof kv[1] === 'string'))\n }\n } catch { /* missing or unreadable → never recalled */ }\n return {}\n}\n\nconst writeRecallLog = async (root: string, log: RecallLog) => {\n const file = path.join(root, RECALL_LOG_FILE)\n await fs.mkdir(path.dirname(file), { recursive: true })\n await fs.writeFile(file, JSON.stringify(log, null, 2) + '\\n', 'utf-8')\n}\n\n/** Drop deleted ids from the recall log so it doesn't fill up with dead ids; restore/undo don't re-add them. Call inside withEntryLock. */\nconst dropFromRecallLog = async (root: string, ids: string[]) => {\n const log = await readRecallLog(root)\n if (!ids.some(id => id in log)) return\n for (const id of ids) delete log[id]\n await writeRecallLog(root, sortedLog(log))\n}\n\n/** Stamp today on each id (R051). Writes only when a date changes, so at most once per id per day. Returns whether it wrote. */\nexport function markEntriesRecalled(ids: string[], root: string): Promise<boolean> {\n if (!ids.length || isDemo()) return Promise.resolve(false)\n return withEntryLock(async () => {\n const next = markRecalled(await readRecallLog(root), ids, localToday())\n if (next) await writeRecallLog(root, next)\n return !!next\n })\n}\n\n/**\n * What an agent reads at session start: MEMORY.md + the newest episode newer than it (R050) + the entry index,\n * capped at `memory.sessionBudgetTokens` (R048).\n */\nexport async function sessionStartMemory(root: string): Promise<string> {\n const [memory, entries, { sessionBudgetTokens }, fresh] = await Promise.all([\n readMemory(root), listEntries(root), readProjectSettings(root), episodesSinceHandoff(root),\n ])\n const episode = fresh.length ? formatEpisodeSection(fresh[0], fresh.length - 1) : ''\n // R051: warnings sit directly under the handoff, so the budget never cuts them\n const warnings = memory.exists ? formatHealthWarnings(await getMemoryHealth(root)) : ''\n const handoff = warnings ? `${memory.content.trimEnd()}\\n\\n${warnings}\\n` : memory.content\n return fitToBudget(handoff, indexHits(entries), sessionBudgetTokens, episode).text\n}\n\n/** The \"## Related memory\" block for a task (up to `limit` strong keyword matches), or '' (R048). */\nexport async function relatedEntries(task: Pick<Task, 'title' | 'phase' | 'raw'>, root: string, limit = 3): Promise<string> {\n // rank everything so the score filter in formatRelated sees all candidates before the limit\n const entries = await listEntries(root)\n return formatRelated(rankEntries(entries, taskQuery(task), { limit: entries.length }), limit)\n}\n\n// ─── Memory health ────────────────────────────────────────────────────────────\n\n/** A flag as the Cleanup panel sees it: `dismissed` is the YYYY-MM-DD it was dismissed on. */\nexport type CleanupFlag = HealthFlag & { dismissed?: string }\n\n/**\n * Handoff/board contradictions, dangling ids in MEMORY.md and the entries, duplicate entries and entries not recalled lately (R051). Pure rules in src/lib/memory-health.ts.\n * Dismissed flags are left out unless `includeDismissed` (the panel's \"Show dismissed\").\n */\nexport async function getMemoryHealth(root: string, opts: { includeDismissed?: boolean } = {}): Promise<CleanupFlag[]> {\n const [memory, entries, { tasks }, { items }, { dismissed }, recallLog] = await Promise.all([\n readMemory(root), listEntries(root), listTasks(root), listRoadmap(root), readCleanupState(root), readRecallLog(root),\n ])\n const board = [...tasks, ...items].map(({ id, status }) => ({ id, status }))\n // files that may still name a merged or deleted entry; MEMORY.md is checked as the handoff\n const others = entries.length\n ? (await memoryGraphFiles(root)).filter(f => f.path !== 'memory/MEMORY.md').map(f => ({ id: f.id, text: f.text }))\n : []\n const flags = [\n ...findContradictions(memory.exists ? memory.content : '', entries, board, t => extractRefs(t).ids, others),\n ...findDuplicates(entries, tokenize),\n ...findStale(entries, recallLog, localToday()),\n ]\n return opts.includeDismissed\n ? flags.map(f => (dismissed[f.id] ? { ...f, dismissed: dismissed[f.id] } : f))\n : flags.filter(f => !dismissed[f.id])\n}\n\nconst CLEANUP_FILE = path.join('memory', '.cleanup.json')\n\n/** `memory/.cleanup.json`; a missing or invalid file is an empty state. */\nexport async function readCleanupState(root: string): Promise<{ dismissed: Record<string, string> }> {\n try {\n const d = (JSON.parse(await fs.readFile(path.join(root, CLEANUP_FILE), 'utf-8')) as { dismissed?: unknown })?.dismissed\n if (d && typeof d === 'object' && !Array.isArray(d)) {\n return { dismissed: Object.fromEntries(Object.entries(d).filter((kv): kv is [string, string] => typeof kv[1] === 'string')) }\n }\n } catch { /* missing or unreadable → nothing dismissed */ }\n return { dismissed: {} }\n}\n\n// ponytail: in-process mutex like withEntryLock, so parallel dismisses don't drop ids; doesn't cover a second VibeDoc process.\nlet cleanupLock: Promise<unknown> = Promise.resolve()\nfunction withCleanupLock<T>(fn: () => Promise<T>): Promise<T> {\n const run = cleanupLock.then(fn, fn)\n cleanupLock = run.catch(() => {})\n return run\n}\n\nconst writeCleanupState = async (root: string, dismissed: Record<string, string>) => {\n const sorted = Object.fromEntries(Object.entries(dismissed).sort(([a], [b]) => a.localeCompare(b)))\n const file = path.join(root, CLEANUP_FILE)\n await fs.mkdir(path.dirname(file), { recursive: true })\n await fs.writeFile(file, JSON.stringify({ dismissed: sorted }, null, 2) + '\\n', 'utf-8')\n}\n\n/** Drop dismissals that name deleted ids, so an entry that later reuses the id starts with its own flags visible. */\nconst dropFromCleanupState = (root: string, ids: string[]) => withCleanupLock(async () => {\n const next = pruneDismissed((await readCleanupState(root)).dismissed, ids)\n if (next) await writeCleanupState(root, next)\n})\n\n/** Hide a health flag for as long as its id stays the same. Throws when no current flag has that id. */\nexport async function dismissHealthFlag(flagId: string, root: string, actor: 'human' | 'ai' = 'human'): Promise<CleanupFlag> {\n const flag = (await getMemoryHealth(root, { includeDismissed: true })).find(f => f.id === flagId)\n if (!flag) throw new RoadmapError(`Flag \"${flagId}\" not found`, 404)\n const date = await withCleanupLock(async () => {\n const { dismissed } = await readCleanupState(root)\n dismissed[flagId] = localToday()\n await writeCleanupState(root, dismissed)\n return dismissed[flagId]\n })\n await appendActivity(root, { type: 'memory_updated', actor, title: 'Cleanup flag dismissed', detail: flag.message })\n return { ...flag, dismissed: date }\n}\n\n// ─── File history from git (R053) ─────────────────────────────────────────────\n\nconst execFileP = promisify(execFile)\nconst GIT_SHA_RE = /^[0-9a-f]{7,40}$/\nconst HISTORY_MAX = 50\n\n/** One commit that touched a file; `path` is its repo-relative path after that commit ('' if the commit only deleted it). */\nexport type FileCommit = { sha: string; author: string; date: string; subject: string; path: string }\n/** `reason: 'no-git'` when the project isn't a git repo or git is missing. */\nexport type FileHistory = { history: FileCommit[]; uncommitted: boolean; reason?: 'no-git' }\n\n/** git with an argument array (never a shell string), run in the project root. */\nasync function git(args: string[], root: string): Promise<string> {\n const { stdout } = await execFileP('git', args, { cwd: root, maxBuffer: 4 * 1024 * 1024 })\n return stdout\n}\n\nfunction relInsideRoot(relPath: string, root: string): string {\n const full = path.resolve(root, relPath)\n if (!full.startsWith(path.resolve(root) + path.sep)) throw new RoadmapError('Path outside root')\n return path.relative(root, full).split(path.sep).join('/')\n}\n\n/**\n * Commits that touched `relPath`, newest first, plus whether it has uncommitted changes.\n * An entry file (`E001-<slug>.md`) is matched by its id, not its name: a new summary renames the file, and small\n * files often fall under git's rename detection, so `--follow` would lose the history before the rename.\n */\nexport async function getFileHistory(relPath: string, root: string, limit = 20): Promise<FileHistory> {\n const rel = relInsideRoot(relPath, root)\n const id = /^(E\\d+)-[^/]*\\.md$/.exec(path.posix.basename(rel))?.[1]\n // ponytail: a deleted id that gets reused later shares this history; fine while ids are rarely reused\n const spec = id ? [`:(glob)${path.posix.dirname(rel)}/${id}-*.md`] : ['--follow', rel]\n try {\n const out = await git(['log', '--name-status', '--format=%x1e%H%x1f%an%x1f%aI%x1f%s', '-n', String(Math.min(limit, HISTORY_MAX)), ...(id ? ['--', ...spec] : [spec[0], '--', spec[1]])], root)\n const history = out.split('\\x1e').filter(r => r.trim()).map((record): FileCommit => {\n const [head, ...rest] = record.split('\\n')\n const [sha, author, date, subject] = head.split('\\x1f')\n // \"M\\tpath\", \"A\\tpath\", \"R087\\told\\tnew\", \"D\\tpath\": the path that exists after this commit (none if only deleted)\n const kept = rest.map(l => l.split('\\t')).filter(f => f.length > 1 && f[0] !== 'D').map(f => f[f.length - 1])\n return { sha, author, date, subject, path: kept[0] ?? '' }\n })\n const status = await git(['status', '--porcelain', '--', id ? spec[0] : rel], root)\n return { history, uncommitted: status.trim().length > 0 }\n } catch (e) {\n console.warn(`git history unavailable for ${rel}`, e instanceof Error ? e.message : e)\n return { history: [], uncommitted: false, reason: 'no-git' }\n }\n}\n\n/** The file's text at `sha`, using the path it had in that commit. Throws 400 on a bad sha, 404 if `sha` isn't in its history. */\nexport async function getFileAtCommit(relPath: string, sha: string, root: string): Promise<string> {\n if (!GIT_SHA_RE.test(sha)) throw new RoadmapError(`Invalid commit \"${sha}\"`)\n const { history } = await getFileHistory(relPath, root, HISTORY_MAX)\n const commit = history.find(c => c.sha.startsWith(sha))\n if (!commit) throw new RoadmapError(`Commit ${sha} did not touch ${relPath}`, 404)\n if (!commit.path) throw new RoadmapError(`The file was deleted in ${commit.sha.slice(0, 7)}`, 404)\n // commit.path is relative to the repo top level, which may be above root\n const top = (await git(['rev-parse', '--show-toplevel'], root)).trim()\n return git(['show', `${commit.sha}:${commit.path}`], top)\n}\n\n/** Keyword recall over the entries: compact hits, no bodies (R048). */\nexport async function recallEntries(query: string, opts: { type?: string; limit?: number }, root: string): Promise<RecallHit[]> {\n return rankEntries(await listEntries(root), query, opts)\n}\n\n/** Removes the file for good; git keeps its history. Throws on an unknown id. */\n/** Returns the deleted entry plus its file text, so a UI can undo (restoreEntry). */\nexport function deleteEntry(id: string, root: string, actor: 'ai' | 'human' = 'human'): Promise<Entry & { raw: string }> {\n const norm = normalizeEntryId(String(id ?? ''))\n if (!norm) return Promise.reject(new Error(`Invalid id \"${id}\": expected E followed by a number, e.g. E001`))\n // ponytail: ids come from files on disk, so deleting the highest entry lets the next save reuse its id; git history is per path and the slug differs\n return withEntryLock(async () => {\n const entry = (await listEntries(root)).find(e => e.id === norm)\n if (!entry) throw new Error(`Entry ${norm} not found`)\n const raw = await fs.readFile(path.join(root, entry.file), 'utf8')\n await fs.rm(path.join(root, entry.file))\n await dropFromRecallLog(root, [norm])\n await dropFromCleanupState(root, [norm])\n await appendActivity(root, { type: 'memory_updated', actor, title: `Entry ${norm} deleted`, detail: entry.summary })\n return { ...entry, raw }\n })\n}\n\n/** Undo for deleteEntry: write the file back byte-for-byte, only as a plain memory/entries/E<n>-*.md and only if that id is free. */\nexport function restoreEntry(file: unknown, raw: unknown, root: string, actor: 'ai' | 'human' = 'human'): Promise<Entry> {\n return withEntryLock(async () => {\n if (!isFileIn(file, 'memory/entries', /^E\\d+[^/]*\\.md$/) || typeof raw !== 'string') throw new RoadmapError('Invalid entry to restore')\n const entry = parseEntry(raw, file)\n const id = normalizeEntryId(path.basename(file).match(/^(E\\d+)/i)?.[1] ?? '')\n if (!entry || entry.id !== id) throw new RoadmapError('Invalid entry to restore')\n // the next save can reuse the highest id, so the id may be taken by now\n if ((await listEntries(root)).some(e => e.id === id)) throw new RoadmapError(`${id} already exists`)\n await fs.mkdir(path.join(root, ENTRIES_DIR), { recursive: true })\n await fs.writeFile(path.join(root, file), raw, { flag: 'wx', encoding: 'utf8' })\n await appendActivity(root, { type: 'memory_updated', actor, title: `Entry ${id} restored`, detail: entry.summary })\n return entry\n })\n}\n\n/** A file as it was before a merge; `dropped` = the merge deleted it (undo re-creates it, never over a taken id). */\nexport type MergeBefore = { file: string; raw: string; dropped?: boolean }\n\n/**\n * Approve a duplicate merge (R051): rewrite the kept entry, delete the dropped ones, and point other entries'\n * mentions of a dropped id at the kept id. Validates everything before the first write. `before` feeds undoMerge.\n */\nexport function mergeEntries(\n input: { keepId: unknown; dropIds: unknown; type: unknown; summary: unknown; body?: unknown },\n root: string, actor: 'ai' | 'human' = 'human',\n): Promise<{ entry: Entry; before: MergeBefore[] }> {\n const keepId = normalizeEntryId(String(input.keepId ?? ''))\n if (!keepId) return Promise.reject(new RoadmapError(`Invalid keepId \"${input.keepId}\"`))\n if (!Array.isArray(input.dropIds) || !input.dropIds.length) return Promise.reject(new RoadmapError('dropIds must be a non-empty list'))\n const dropIds = input.dropIds.map(d => normalizeEntryId(String(d)))\n if (dropIds.some(d => !d)) return Promise.reject(new RoadmapError(`Invalid dropIds: ${input.dropIds.join(', ')}`))\n if (new Set(dropIds).size !== dropIds.length || dropIds.includes(keepId)) return Promise.reject(new RoadmapError('dropIds must be distinct and not include keepId'))\n const fields = { id: keepId, type: String(input.type ?? ''), summary: String(input.summary ?? ''), body: input.body as string | undefined }\n const error = validateEntryInput(fields)\n if (error) return Promise.reject(new RoadmapError(error))\n const drops = dropIds as string[]\n return withEntryLock(async () => {\n const entries = await listEntries(root)\n const byId = new Map(entries.map(e => [e.id, e]))\n const missing = [keepId, ...drops].filter(id => !byId.has(id))\n if (missing.length) throw new RoadmapError(`Entry ${missing.join(', ')} not found`)\n const read = (e: Entry) => fs.readFile(path.join(root, e.file), 'utf8')\n const old = byId.get(keepId) as Entry\n const summary = fields.summary.trim()\n // the merged text shouldn't point at an id that is about to disappear either\n const entry: Entry = {\n id: keepId, type: fields.type as EntryType, summary, body: replaceEntryRefs((fields.body ?? '').trim(), drops, keepId),\n updatedAt: localToday(), by: actor === 'human' ? 'human' : 'ai:agent', source: old.source,\n file: path.join(ENTRIES_DIR, `${keepId}-${entrySlug(summary)}.md`),\n }\n const before: MergeBefore[] = [{ file: old.file, raw: await read(old) }]\n for (const id of drops) { const e = byId.get(id) as Entry; before.push({ file: e.file, raw: await read(e), dropped: true }) }\n const rewrites: { file: string; raw: string }[] = []\n for (const e of entries) {\n if (e.id === keepId || drops.includes(e.id)) continue\n const raw = await read(e)\n const next = replaceEntryRefs(raw, drops, keepId)\n if (next !== raw) { before.push({ file: e.file, raw }); rewrites.push({ file: e.file, raw: next }) }\n }\n // all checks passed: write\n await fs.writeFile(path.join(root, entry.file), formatEntry(entry), 'utf8')\n if (old.file !== entry.file) await fs.rm(path.join(root, old.file), { force: true })\n for (const b of before) if (b.dropped) await fs.rm(path.join(root, b.file), { force: true })\n for (const r of rewrites) await fs.writeFile(path.join(root, r.file), r.raw, 'utf8')\n await dropFromRecallLog(root, drops)\n await dropFromCleanupState(root, drops)\n await appendActivity(root, { type: 'memory_updated', actor, title: `Entries merged into ${keepId}`, detail: `${drops.join(', ')} merged` })\n return { entry, before }\n })\n}\n\n/**\n * Undo for mergeEntries: write every `before` file back byte-for-byte (the kept entry under its old name).\n * Same path guard as restoreEntry; refuses (400) when a dropped id has been re-created since.\n */\nexport function undoMerge(before: unknown, root: string, actor: 'ai' | 'human' = 'human'): Promise<Entry[]> {\n return withEntryLock(async () => {\n if (!Array.isArray(before) || !before.length) throw new RoadmapError('Invalid merge to undo')\n const items = before.map((b: Partial<MergeBefore>) => {\n const { file, raw } = b ?? {}\n if (!isFileIn(file, 'memory/entries', /^E\\d+[^/]*\\.md$/) || typeof raw !== 'string') throw new RoadmapError('Invalid merge to undo')\n const entry = parseEntry(raw, file)\n if (!entry || entry.id !== normalizeEntryId(path.basename(file).match(/^(E\\d+)/i)?.[1] ?? '')) throw new RoadmapError('Invalid merge to undo')\n return { file, raw, entry, dropped: b.dropped === true }\n })\n const current = new Map((await listEntries(root)).map(e => [e.id, e]))\n const taken = items.filter(i => i.dropped && current.has(i.entry.id)).map(i => i.entry.id)\n if (taken.length) throw new RoadmapError(`${taken.join(', ')} already exists`)\n await fs.mkdir(path.join(root, ENTRIES_DIR), { recursive: true })\n for (const i of items) {\n const now = current.get(i.entry.id)\n await fs.writeFile(path.join(root, i.file), i.raw, { flag: i.dropped ? 'wx' : 'w', encoding: 'utf8' })\n if (now && now.file !== i.file) await fs.rm(path.join(root, now.file), { force: true })\n }\n const keep = items.find(i => !i.dropped)?.entry.id ?? ''\n await appendActivity(root, { type: 'memory_updated', actor, title: `Merge into ${keep} undone`, detail: `${items.filter(i => i.dropped).map(i => i.entry.id).join(', ')} restored` })\n return items.map(i => i.entry)\n })\n}\n\n// ─── Activity log ─────────────────────────────────────────────────────────────\n\nconst ACTIVITY_FILE = '.vibedoc-activity.json'\nconst ACTIVITY_CAP = 2000\n\n// ─── Description cache ────────────────────────────────────────────────────────\n\nconst DESCRIPTIONS_FILE = '.vibedoc-descriptions.json'\n\nexport async function readDescriptions(root: string): Promise<DescriptionCache> {\n try {\n const raw = await fs.readFile(path.join(root, DESCRIPTIONS_FILE), 'utf8')\n return JSON.parse(raw) as DescriptionCache\n } catch {\n return {}\n }\n}\n\nexport async function writeDescriptions(root: string, cache: DescriptionCache): Promise<void> {\n const filePath = path.join(root, DESCRIPTIONS_FILE)\n await fs.mkdir(path.dirname(filePath), { recursive: true })\n await fs.writeFile(filePath, JSON.stringify(cache, null, 2), 'utf8')\n}\n\nexport async function writeDescriptionEntry(\n root: string,\n filePath: string,\n entry: DescriptionCache[string]\n): Promise<void> {\n const normalizedKey = path.normalize(filePath).replace(/\\\\/g, '/')\n const cache = await readDescriptions(root)\n cache[normalizedKey] = entry\n await writeDescriptions(root, cache)\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nlet _anthropic: any = null\n\nasync function getAnthropicClient(): Promise<any> {\n if (!_anthropic) {\n const { default: Anthropic } = await import('@anthropic-ai/sdk')\n _anthropic = new Anthropic({ apiKey: process.env.ANTHROPIC_API_KEY })\n }\n return _anthropic\n}\n\nexport function extractDescription(content: string): string {\n const lines = content.split('\\n')\n let heading = ''\n\n for (const line of lines) {\n const m = line.match(/^#{1,3}\\s+(.+)/)\n if (m && !heading) {\n heading = m[1].trim().slice(0, 120)\n continue\n }\n const t = line.trim()\n if (\n t &&\n !t.startsWith('#') &&\n !t.startsWith('```') &&\n !t.startsWith('|') &&\n !t.startsWith('-') &&\n !t.startsWith('*') &&\n t.length > 20\n ) {\n return t.slice(0, 120)\n }\n }\n return heading\n}\n\nexport async function enrichDescription(filePath: string, root: string): Promise<string> {\n const resolvedRoot = path.resolve(root)\n const fullPath = path.resolve(root, filePath)\n if (!fullPath.startsWith(resolvedRoot + path.sep) && fullPath !== resolvedRoot) {\n throw new Error('Path outside root')\n }\n\n const client = await getAnthropicClient()\n const content = await fs.readFile(fullPath, 'utf8')\n\n const message = await client.messages.create({\n model: 'claude-haiku-4-5-20251001',\n max_tokens: 100,\n messages: [{\n role: 'user',\n content: `Write a single sentence (max 120 characters) describing what this file is about. Output ONLY the sentence, nothing else.\\n\\n${content.slice(0, 2000)}`,\n }],\n })\n\n const textBlock = message.content.find((b: { type: string }) => b.type === 'text') as { type: 'text'; text: string } | undefined\n if (!textBlock) throw new Error('No text block in Anthropic response')\n const description = textBlock.text.trim().slice(0, 120)\n\n await writeDescriptionEntry(root, filePath, { description, source: 'ai', updatedAt: new Date().toISOString() })\n\n return description\n}\n\nexport async function listExplorerFiles(root: string): Promise<ExplorerFile[]> {\n const docs = await listDocs(root)\n const cache = await readDescriptions(root)\n\n return Promise.all(docs.map(async (doc) => {\n const cached = cache[doc.path]\n let description = cached?.description ?? ''\n const source: 'extracted' | 'ai' = cached?.source ?? 'extracted'\n\n // Get mtime first so we can use it as updatedAt fallback\n let mtime = new Date().toISOString()\n try {\n const stat = await fs.stat(path.join(root, doc.path))\n mtime = stat.mtime.toISOString()\n } catch { /* ignore */ }\n\n const updatedAt = cached?.updatedAt ?? mtime\n\n if (!cached) {\n try {\n const content = await fs.readFile(path.join(root, doc.path), 'utf8')\n description = extractDescription(content)\n } catch { /* ignore */ }\n }\n\n return { path: doc.path, name: doc.name, section: doc.section, description, source, updatedAt, mtime }\n }))\n}\n\n// ponytail: current session per root+actor lives in memory (on globalThis so dev HMR keeps it); a server restart starts a new session.\nconst globalForSessions = globalThis as unknown as { vibedocSessions?: Map<string, { id: string; lastAt: number }> }\nconst currentSessions = globalForSessions.vibedocSessions ?? (globalForSessions.vibedocSessions = new Map())\n\nfunction stampSession(root: string, event: Omit<ActivityEvent, 'id' | 'timestamp'>, now: number): string {\n const key = `${root}\\0${event.actor}`\n let cur = currentSessions.get(key)\n if (!cur || event.type === 'session_start' || now - cur.lastAt > SESSION_GAP_MS) {\n cur = { id: `ses_${now}_${Math.random().toString(36).slice(2, 7)}`, lastAt: now }\n currentSessions.set(key, cur)\n }\n cur.lastAt = now\n return cur.id\n}\n\n/** The actor's running session id (T046 stamping), or null when there is none or it went idle. */\nexport function currentSessionId(root: string, actor: ActivityEvent['actor'] = 'ai'): string | null {\n const cur = currentSessions.get(`${root}\\0${actor}`)\n return cur && Date.now() - cur.lastAt <= SESSION_GAP_MS ? cur.id : null\n}\n\nasync function appendActivity(root: string, event: Omit<ActivityEvent, 'id' | 'timestamp'>): Promise<void> {\n if (isDemo()) return // read-only demo (R042): a read (session start) never writes the log\n const now = Date.now()\n const full: ActivityEvent = {\n id: `evt_${now}_${Math.random().toString(36).slice(2, 7)}`,\n timestamp: new Date(now).toISOString(),\n ...event,\n sessionId: stampSession(root, event, now),\n }\n\n const file = path.join(root, ACTIVITY_FILE)\n let events: ActivityEvent[] = []\n try {\n const raw = await fs.readFile(file, 'utf8')\n events = JSON.parse(raw)\n } catch {}\n\n events.unshift(full)\n if (events.length > ACTIVITY_CAP) events = events.slice(0, ACTIVITY_CAP)\n await fs.writeFile(file, JSON.stringify(events, null, 2), 'utf8')\n}\n\nconst DOC_EDIT_COALESCE_MS = 10 * 60_000\nconst DOC_EDIT_LOOKBACK = 50\n\n/**\n * Record who last saved a doc (R055 doc owner). Autosave fires every few seconds, so a save by the same\n * actor within 10 minutes of the newest event for that doc just moves that event's time forward.\n */\nexport async function noteDocEdit(root: string, docPath: string, actor: 'ai' | 'human'): Promise<void> {\n if (isDemo()) return\n const file = path.join(root, ACTIVITY_FILE)\n let events: ActivityEvent[] = []\n try { events = JSON.parse(await fs.readFile(file, 'utf8')) } catch {}\n // Other events (an agent moving tasks) land in between, so look back a little, not just at the top\n const i = events.slice(0, DOC_EDIT_LOOKBACK).findIndex(e => e.type === 'doc_updated' && e.detail === docPath)\n const prev = i >= 0 ? events[i] : undefined\n if (prev && prev.actor === actor && Date.now() - Date.parse(prev.timestamp) < DOC_EDIT_COALESCE_MS) {\n // move it to the top with the new time, so the log stays newest-first\n events.splice(i, 1)\n events.unshift({ ...prev, timestamp: new Date().toISOString() })\n await fs.writeFile(file, JSON.stringify(events, null, 2), 'utf8')\n return\n }\n await appendActivity(root, { type: 'doc_updated', actor, title: `Edited ${docPath}`, detail: docPath })\n}\n\n/** Who last created or saved the doc, from the activity log; null when the log has nothing on it. */\nexport async function docLastEdit(root: string, docPath: string): Promise<{ actor: 'ai' | 'human'; at: string } | null> {\n const e = (await readActivity(root, ACTIVITY_CAP)).find(\n (x) => (x.type === 'doc_updated' || x.type === 'doc_created') && x.detail === docPath,\n )\n return e ? { actor: e.actor, at: e.timestamp } : null\n}\n\nexport async function readActivity(root: string, limit = 50): Promise<ActivityEvent[]> {\n try {\n const raw = await fs.readFile(path.join(root, ACTIVITY_FILE), 'utf8')\n const events: ActivityEvent[] = JSON.parse(raw)\n return events.slice(0, limit)\n } catch {\n return []\n }\n}\n\nexport async function logSessionStart(root: string, actor: 'ai' | 'human' = 'ai'): Promise<void> {\n // An agent re-reading memory mid-session isn't a new connection\n if (currentSessionId(root, actor)) return\n await appendActivity(root, { type: 'session_start', actor, title: 'Session started', detail: 'Agent connected' })\n}\n\n// ─── Status summary ───────────────────────────────────────────────────────────\n\n// ─── Doc operations (append, rename, delete) ──────────────────────────────────\n\nexport async function appendDoc(docPath: string, content: string, root: string): Promise<void> {\n const resolvedRoot = path.resolve(root)\n const fullPath = path.resolve(root, docPath)\n if (!fullPath.startsWith(resolvedRoot + path.sep) && fullPath !== resolvedRoot) {\n throw new Error('Path outside root')\n }\n let existing: string\n try {\n existing = await fs.readFile(fullPath, 'utf8')\n } catch {\n throw new Error(`Doc not found: ${docPath}`)\n }\n await fs.writeFile(fullPath, existing.trimEnd() + '\\n\\n' + content, 'utf8')\n}\n\nexport async function renameDoc(oldPath: string, newPath: string, root: string, actor: 'ai' | 'human' = 'human'): Promise<void> {\n const resolvedRoot = path.resolve(root)\n const fullOld = path.resolve(root, oldPath)\n const fullNew = path.resolve(root, newPath)\n if (!fullOld.startsWith(resolvedRoot + path.sep) && fullOld !== resolvedRoot) {\n throw new Error('Path outside root')\n }\n if (!fullNew.startsWith(resolvedRoot + path.sep) && fullNew !== resolvedRoot) {\n throw new Error('Path outside root')\n }\n // fs.rename silently replaces an existing file\n if (fullNew !== fullOld && await fs.access(fullNew).then(() => true, () => false)) {\n throw new Error(`A file already exists at ${newPath}`)\n }\n await fs.mkdir(path.dirname(fullNew), { recursive: true })\n try {\n await fs.rename(fullOld, fullNew)\n } catch (e) {\n if ((e as NodeJS.ErrnoException).code === 'EXDEV') {\n await fs.copyFile(fullOld, fullNew)\n await fs.unlink(fullOld)\n } else throw e\n }\n await appendActivity(root, { type: 'doc_renamed', actor, title: `Renamed ${oldPath} → ${newPath}` })\n try { const { exists } = await readRegistry(root); if (exists) await rebuildRegistry(root, actor, false) } catch {}\n}\n\n/** Returns the removed content, so the client can offer Undo (re-create via createDoc). */\nexport async function deleteDoc(docPath: string, root: string, actor: 'ai' | 'human' = 'human'): Promise<string> {\n const resolvedRoot = path.resolve(root)\n const fullPath = path.resolve(root, docPath)\n if (!fullPath.startsWith(resolvedRoot + path.sep) && fullPath !== resolvedRoot) {\n throw new Error('Path outside root')\n }\n const content = await fs.readFile(fullPath, 'utf8')\n await fs.unlink(fullPath)\n await appendActivity(root, { type: 'doc_deleted', actor, title: `Deleted ${docPath}` })\n try { const { exists } = await readRegistry(root); if (exists) await rebuildRegistry(root, actor, false) } catch {}\n return content\n}\n\n// ─── Document Registry ────────────────────────────────────────────────────────\n\nconst REGISTRY_PATH = 'docs/REGISTRY.md'\nconst ANNOTATIONS_START = '<!-- REGISTRY_ANNOTATIONS_START -->'\nconst ANNOTATIONS_END = '<!-- REGISTRY_ANNOTATIONS_END -->'\n\nfunction buildDocTree(files: string[]): string {\n // Build a map of directories and files\n const tree: Map<string, string[]> = new Map()\n for (const f of files) {\n const dir = path.dirname(f)\n if (!tree.has(dir)) tree.set(dir, [])\n tree.get(dir)!.push(path.basename(f))\n }\n\n const lines: string[] = []\n const dirs = Array.from(tree.keys()).sort()\n\n // Build indented tree\n const rendered = new Set<string>()\n function renderDir(dir: string, indent: number) {\n if (rendered.has(dir)) return\n rendered.add(dir)\n const prefix = ' '.repeat(indent)\n if (dir !== '.') {\n const parts = dir.split('/')\n lines.push(`${prefix}${parts[parts.length - 1]}/`)\n }\n const childIndent = dir === '.' ? 0 : indent + 1\n const childPrefix = ' '.repeat(childIndent)\n // Files directly in this dir\n const dirFiles = tree.get(dir) || []\n for (const f of dirFiles.sort()) {\n lines.push(`${childPrefix}${f}`)\n }\n // Subdirs\n for (const d of dirs) {\n if (d !== dir && path.dirname(d) === dir) {\n renderDir(d, childIndent)\n }\n }\n }\n\n renderDir('.', 0)\n return lines.join('\\n')\n}\n\nfunction parseAnnotations(content: string): Map<string, { description: string; keywords: string }> {\n const map = new Map<string, { description: string; keywords: string }>()\n const start = content.indexOf(ANNOTATIONS_START)\n const end = content.indexOf(ANNOTATIONS_END)\n if (start === -1 || end === -1) return map\n\n const section = content.slice(start + ANNOTATIONS_START.length, end)\n const rows = section.split('\\n').filter(l => l.startsWith('|') && !l.includes('---') && !l.includes('Path'))\n for (const row of rows) {\n const cols = row.split('|').map(c => c.trim()).filter(Boolean)\n if (cols.length >= 3) {\n map.set(cols[0], { description: cols[1], keywords: cols[2] })\n }\n }\n return map\n}\n\nexport async function readRegistry(root: string): Promise<{ content: string; exists: boolean }> {\n try {\n const content = await fs.readFile(path.join(root, REGISTRY_PATH), 'utf8')\n return { content, exists: true }\n } catch {\n return { content: '*(No REGISTRY.md found — call vibedoc_rebuild_registry to generate it)*', exists: false }\n }\n}\n\nexport async function rebuildRegistry(root: string, actor: 'ai' | 'human' = 'human', log = true): Promise<{ path: string; totalFiles: number }> {\n const docs = await listDocs(root)\n const files = docs.map(d => d.path)\n\n // Parse existing annotations\n let existing = ''\n try {\n existing = await fs.readFile(path.join(root, REGISTRY_PATH), 'utf8')\n } catch {}\n const savedAnnotations = parseAnnotations(existing)\n\n // Build tree\n const tree = buildDocTree(files)\n\n // Build annotations table — preserve existing, stub new files\n const rows: string[] = []\n for (const f of files) {\n const saved = savedAnnotations.get(f)\n rows.push(`| ${f} | ${saved?.description ?? ''} | ${saved?.keywords ?? ''} |`)\n }\n\n const now = new Date().toISOString()\n const content = [\n `# Document Registry`,\n `**Generated:** ${now} **Total:** ${files.length} files`,\n ``,\n `> Edit the Annotations table — it survives rebuilds.`,\n `> Run \\`vibedoc_rebuild_registry\\` after adding/removing docs.`,\n ``,\n `## File Tree`,\n `\\`\\`\\``,\n tree,\n `\\`\\`\\``,\n ``,\n `## Annotations`,\n ``,\n ANNOTATIONS_START,\n `| Path | Description | Keywords |`,\n `|------|-------------|----------|`,\n ...rows,\n ANNOTATIONS_END,\n ``,\n ].join('\\n')\n\n await writeDoc(REGISTRY_PATH, content, root)\n // Automatic rebuilds after a doc create/rename/delete aren't logged: the doc row already says what changed\n if (log) await appendActivity(root, {\n type: 'registry_rebuilt',\n actor,\n title: 'Document registry rebuilt',\n detail: `${files.length} files indexed`,\n })\n\n return { path: REGISTRY_PATH, totalFiles: files.length }\n}\n\nexport async function updateRegistryAnnotation(\n docPath: string, description: string, keywords: string, root: string\n): Promise<void> {\n const { content, exists } = await readRegistry(root)\n if (!exists) throw new Error('Registry not found — call vibedoc_rebuild_registry first')\n\n const annotations = parseAnnotations(content)\n annotations.set(docPath, { description, keywords })\n\n // Rebuild the annotations block with updated data\n const start = content.indexOf(ANNOTATIONS_START)\n const end = content.indexOf(ANNOTATIONS_END)\n if (start === -1 || end === -1) throw new Error('Registry format invalid — rebuild first')\n\n const rows = Array.from(annotations.entries())\n .map(([p, a]) => `| ${p} | ${a.description} | ${a.keywords} |`)\n\n const newAnnotationsBlock = [\n ANNOTATIONS_START,\n `| Path | Description | Keywords |`,\n `|------|-------------|----------|`,\n ...rows,\n ANNOTATIONS_END,\n ].join('\\n')\n\n const newContent = content.slice(0, start) + newAnnotationsBlock + content.slice(end + ANNOTATIONS_END.length)\n await writeDoc(REGISTRY_PATH, newContent, root)\n}\n\n/**\n * The memory link graph (R053), built on request from the files: every entry, plus the tasks, roadmap items,\n * ADRs and docs an entry mentions or that mention an entry id. Pure resolution in src/lib/memory-graph.ts.\n */\nexport async function getMemoryGraph(root: string): Promise<MemoryGraph> {\n const [entries, others] = await Promise.all([listEntries(root), memoryGraphFiles(root)])\n return buildGraph(\n entries.map(e => ({ id: e.id, kind: 'entry', label: e.summary, path: e.file.replace(/\\\\/g, '/'), text: `${e.summary}\\n${e.body}` })),\n others,\n )\n}\n\n/** Every non-entry .md the memory graph scans (tasks, roadmap, ADRs, docs, MEMORY.md), with its text. */\nasync function memoryGraphFiles(root: string): Promise<GraphItem[]> {\n // ponytail: reads every .md on each call; cache by mtime (as getDocGraph does) if big repos make it slow\n const files = await glob('**/*.md', { cwd: root, ignore: ['node_modules/**', '.git/**', '.next/**', 'memory/entries/**'], nodir: true })\n const others = await Promise.all(files.map(async (f): Promise<GraphItem | null> => {\n try {\n const raw = await fs.readFile(path.join(root, f), 'utf8')\n return { ...fileNode(f, raw), text: raw }\n } catch (e) {\n console.warn(`memory graph: skipped ${f}`, e)\n return null\n }\n }))\n return others.filter((o): o is GraphItem => !!o)\n}\n\n// ponytail: in-process cache only; a second VibeDoc process keeps its own. On globalThis so dev HMR keeps it.\n// Entries are keyed by mtime only, so bump DOC_GRAPH_CACHE_VERSION whenever docNode / extractLinks change what they\n// return: an HMR'd dev server would otherwise keep serving nodes built by the old code.\nconst DOC_GRAPH_CACHE_VERSION = 3\nconst docGraphCache: Map<string, { mtimeMs: number; item: DocItem }> = (() => {\n const g = globalThis as { __vibedocDocGraphCache?: { v: number; map: Map<string, { mtimeMs: number; item: DocItem }> } }\n if (g.__vibedocDocGraphCache?.v !== DOC_GRAPH_CACHE_VERSION) g.__vibedocDocGraphCache = { v: DOC_GRAPH_CACHE_VERSION, map: new Map() }\n return g.__vibedocDocGraphCache.map\n})()\n\n/** Resolved links between every .md file (R056). Only files whose mtime changed since the last call are re-read. */\nexport async function getDocGraph(root: string): Promise<DocGraph> {\n const files = (await glob('**/*.md', { cwd: root, ignore: ['node_modules/**', '.git/**', '.next/**'], nodir: true }))\n .map(f => f.replace(/\\\\/g, '/')).sort()\n const keyOf = (f: string) => `${root}\\u0000${f}`\n let reread = 0\n const items = await Promise.all(files.map(async (f): Promise<DocItem | null> => {\n const key = keyOf(f)\n try {\n const { mtimeMs } = await fs.stat(path.join(root, f))\n const hit = docGraphCache.get(key)\n if (hit && hit.mtimeMs === mtimeMs) return hit.item\n const raw = await fs.readFile(path.join(root, f), 'utf8')\n reread++\n const item = { node: docNode(f, raw), links: extractLinks(raw, f) }\n docGraphCache.set(key, { mtimeMs, item })\n return item\n } catch (e) {\n docGraphCache.delete(key)\n console.warn(`doc graph: skipped ${f}`, e)\n return null\n }\n }))\n const live = new Set(files.map(keyOf))\n for (const key of docGraphCache.keys()) if (key.startsWith(`${root}\\u0000`) && !live.has(key)) docGraphCache.delete(key)\n if (reread) console.log(`doc graph: read ${reread} of ${files.length} files`)\n // .md files in dot folders (.claude/skills, .impeccable): not graph nodes, but a mention of one isn't stale\n const hidden = (await glob('.*/**/*.md', { cwd: root, dot: true, ignore: ['.git/**', '.next/**', '**/node_modules/**'], nodir: true }))\n .map(f => f.replace(/\\\\/g, '/'))\n return buildDocGraph(items.filter((i): i is DocItem => !!i), hidden)\n}\n\n// ─── Status summary ───────────────────────────────────────────────────────────\n\nexport async function getProjectSummary(root: string) {\n const [{ tasks, board }, docs, memory, activity] = await Promise.all([\n listTasks(root),\n listDocs(root),\n readMemory(root),\n readActivity(root, 10),\n ])\n\n return {\n root,\n name: path.basename(root),\n tasks: {\n total: tasks.length,\n board: { todo: board.todo.length, 'in-progress': board['in-progress'].length, review: board.review.length, blocked: board.blocked.length, done: board.done.length, cancelled: board.cancelled.length },\n active: board['in-progress'],\n blocked: board.blocked,\n },\n docs: { total: docs.length },\n memory,\n activity,\n }\n}\n\n\n// ─── Roadmap ──────────────────────────────────────────────────────────────────\n// Items: plans/roadmap/R*.md (content + Parent/Status/Order/Tasks).\n// Positions: plans/roadmap/layout.json (presentation only, never in R*.md).\n\nexport type RoadmapStatus = 'planned' | 'in-progress' | 'paused' | 'done'\n\nexport interface RoadmapItem {\n id: string // \"R004\"\n title: string\n parent: string | null // null = horizon on the spine\n status: RoadmapStatus\n order: number\n tasks: string[] // [\"T001\", \"T012\"]\n due: string | null // \"2026-10-15\" — a calendar date, not an instant; compare as strings\n owner: string | null // \"human\" | \"ai:<agent>\" (R055)\n priority: Priority | null // **Priority:** P0–P3\n body: string // markdown after the metadata block\n file: string // path relative to root\n}\n\nexport type RoadmapLayout = Record<string, { x: number; y: number }>\n\nexport interface CreateRoadmapItemParams {\n title: string\n parent?: string | null\n status?: RoadmapStatus\n order?: number\n tasks?: string[]\n due?: string | null\n owner?: string | null\n priority?: string | null\n body?: string\n}\n\nexport type UpdateRoadmapItemPatch = Partial<Omit<CreateRoadmapItemParams, 'title'> & { title: string }>\n\n\n/** Validation / not-found error from the roadmap API. `status` maps straight to an HTTP code. */\nexport class RoadmapError extends Error {\n constructor(message: string, public status: 400 | 404 = 400) {\n super(message)\n this.name = 'RoadmapError'\n }\n}\n\nconst ROADMAP_DIR = path.join('plans', 'roadmap')\nconst ROADMAP_LAYOUT = path.join(ROADMAP_DIR, 'layout.json')\nconst ROADMAP_STATUSES: RoadmapStatus[] = ['planned', 'in-progress', 'paused', 'done']\nconst META_LINE = /^\\*\\*([^*]+):\\*\\*/\n\nfunction normalizeRoadmapId(id: unknown): string {\n const s = String(id ?? '').trim().toUpperCase()\n if (!/^R\\d+$/.test(s)) throw new RoadmapError(`Invalid roadmap id: ${String(id)}`)\n return s\n}\n\nfunction roadmapIdOf(file: string): string | null {\n const m = path.basename(file).match(/^(R\\d+)(?:-|\\.md$)/i)\n return m ? m[1].toUpperCase() : null\n}\n\nfunction parseRoadmapStatus(raw: unknown): RoadmapStatus {\n const t = String(raw ?? '').toLowerCase().trim().replace(/\\s+/g, '-')\n const s = t === 'on-hold' ? 'paused' : t\n if (!ROADMAP_STATUSES.includes(s as RoadmapStatus)) {\n throw new RoadmapError(`Invalid status \"${String(raw)}\" (expected ${ROADMAP_STATUSES.join(' | ')})`)\n }\n return s as RoadmapStatus\n}\n\nfunction parseTaskIds(tasks: unknown): string[] {\n if (!Array.isArray(tasks)) throw new RoadmapError('tasks must be an array of task ids')\n return tasks.map(t => {\n const s = String(t).trim().toUpperCase()\n if (!/^T\\d+$/.test(s)) throw new RoadmapError(`Invalid task id: ${String(t)}`)\n return s\n })\n}\n\nfunction cleanTitle(title: unknown): string {\n const t = String(title ?? '').replace(/\\s+/g, ' ').trim()\n if (!t) throw new RoadmapError('Title is required')\n return t\n}\n\n/** A real calendar date \"YYYY-MM-DD\" (rejects 2026-02-30), else null. */\nfunction parseDue(raw: string): string | null {\n const m = raw.match(/^(\\d{4})-(\\d{2})-(\\d{2})$/)\n if (!m) return null\n const d = new Date(Date.UTC(+m[1], +m[2] - 1, +m[3]))\n return d.toISOString().slice(0, 10) === raw ? raw : null\n}\n\nfunction cleanDue(due: unknown): string | null {\n if (due === null || due === '') return null\n const d = typeof due === 'string' ? parseDue(due.trim()) : null\n if (!d) throw new RoadmapError(`due must be a date YYYY-MM-DD (got ${JSON.stringify(due)})`)\n return d\n}\n\nfunction cleanOrder(order: unknown): number {\n const n = Number(order)\n if (typeof order !== 'number' || !Number.isFinite(n)) throw new RoadmapError('order must be a finite number')\n return n\n}\n\n/** Index of the first line after the H1 + contiguous `**Key:** Value` block. */\nfunction roadmapMetaEnd(lines: string[]): number {\n let i = lines.findIndex(l => l.startsWith('# '))\n i = i < 0 ? 0 : i + 1\n // Tolerate blank lines between the H1 and the meta block (common in hand-written files).\n let j = i\n while (j < lines.length && lines[j].trim() === '') j++\n if (j < lines.length && META_LINE.test(lines[j])) i = j\n while (i < lines.length && META_LINE.test(lines[i])) i++\n return i\n}\n\nfunction parseRoadmapFile(file: string, content: string): RoadmapItem {\n const lines = content.split('\\n')\n const titleLine = lines.find(l => l.startsWith('# '))\n const id = roadmapIdOf(file) ?? path.basename(file, '.md').toUpperCase()\n const title = (titleLine || '').replace(/^#+\\s*/, '').replace(/^R\\d+:\\s*/i, '').trim() || id\n\n // Only the head block counts, so a `**Status:**` inside the body can't override the item's meta.\n const metaEnd = roadmapMetaEnd(lines)\n const meta: Record<string, string> = {}\n for (const line of lines.slice(0, Math.min(metaEnd, 30))) {\n const m = line.match(/\\*\\*([^*]+):\\*\\*\\s*(.+)/)\n if (m) meta[m[1].toLowerCase().trim()] = m[2].trim()\n }\n\n const rawParent = (meta['parent'] || '').toUpperCase()\n let status: RoadmapStatus = 'planned'\n try { status = parseRoadmapStatus((meta['status'] || '').replace(/[^a-z\\s-]/gi, '')) } catch {}\n const order = parseFloat(meta['order'] || '')\n\n return {\n id,\n title,\n parent: /^R\\d+$/.test(rawParent) ? rawParent : null,\n status,\n order: Number.isFinite(order) ? order : 0,\n tasks: (meta['tasks'] || '').split(/[,\\s]+/).map(t => t.toUpperCase()).filter(t => /^T\\d+$/.test(t)),\n due: parseDue(meta['due'] || ''),\n owner: parseOwner(meta['owner']),\n priority: parsePriority(meta['priority']),\n body: lines.slice(metaEnd).join('\\n').trim(),\n file,\n }\n}\n\nasync function readRoadmapFiles(root: string): Promise<{ item: RoadmapItem; raw: string }[]> {\n const files = await glob('plans/roadmap/R*.md', { cwd: root, nodir: true })\n const out: { item: RoadmapItem; raw: string }[] = []\n for (const f of files) {\n if (!roadmapIdOf(f)) continue\n try {\n const raw = await fs.readFile(path.join(root, f), 'utf8')\n out.push({ item: parseRoadmapFile(f, raw), raw })\n } catch {}\n }\n return out\n}\n\nasync function findRoadmapFile(id: string, root: string): Promise<{ item: RoadmapItem; raw: string }> {\n const rid = normalizeRoadmapId(id)\n const matches = (await glob(`plans/roadmap/${rid}*.md`, { cwd: root, nodir: true }))\n .filter(f => roadmapIdOf(f) === rid)\n .sort()\n if (matches.length === 0) throw new RoadmapError(`Roadmap item not found: ${rid}`, 404)\n const raw = await fs.readFile(path.join(root, matches[0]), 'utf8')\n return { item: parseRoadmapFile(matches[0], raw), raw }\n}\n\nfunction sortRoadmap(items: RoadmapItem[]): RoadmapItem[] {\n const num = (id: string) => parseInt(id.slice(1), 10)\n return items.sort((a, b) => a.order - b.order || num(a.id) - num(b.id))\n}\n\n/** A parent must be an existing horizon (parent null) and not the item itself. */\nfunction validateParent(parent: string, selfId: string | null, items: RoadmapItem[]): void {\n if (parent === selfId) throw new RoadmapError('An item cannot be its own parent')\n const p = items.find(i => i.id === parent)\n if (!p) throw new RoadmapError(`Parent not found: ${parent}`)\n if (p.parent !== null) throw new RoadmapError(`Parent ${parent} is not a horizon (max depth is 2)`)\n}\n\nfunction cleanBody(body: unknown): string {\n if (typeof body !== 'string') throw new RoadmapError('body must be a string')\n return body.trim()\n}\n\n// ponytail: in-process mutex serialising all roadmap writes (id allocation, layout merge).\n// Doesn't cover a second VibeDoc process on the same root; add a lockfile if that ever matters.\nlet roadmapLock: Promise<unknown> = Promise.resolve()\nfunction withRoadmapLock<T>(fn: () => Promise<T>): Promise<T> {\n const run = roadmapLock.then(fn, fn)\n roadmapLock = run.catch(() => {})\n return run\n}\n\nfunction formatTasks(tasks: string[]): string {\n return tasks.length > 0 ? tasks.join(', ') : '—'\n}\n\nexport async function listRoadmap(root: string): Promise<{ items: RoadmapItem[]; layout: RoadmapLayout }> {\n const [files, layout] = await Promise.all([readRoadmapFiles(root), readRoadmapLayout(root)])\n return { items: sortRoadmap(files.map(f => f.item)), layout }\n}\n\nexport async function getRoadmapItem(id: string, root: string): Promise<RoadmapItem> {\n return (await findRoadmapFile(id, root)).item\n}\n\nexport function createRoadmapItem(\n params: CreateRoadmapItemParams, root: string, actor: 'ai' | 'human' = 'human'\n): Promise<RoadmapItem> {\n return withRoadmapLock(() => createRoadmapItemUnlocked(params ?? ({} as CreateRoadmapItemParams), root, actor))\n}\n\nconst roadmapId = (n: number) => `R${String(n).padStart(3, '0')}`\n\n/** Write a new R*.md (flag 'wx': never overwrites). Callers validate fields and mkdir first. */\nasync function writeRoadmapFile(root: string, f: Omit<RoadmapItem, 'file' | 'owner' | 'priority'>): Promise<void> {\n const slug = f.title.toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/^-|-$/g, '').slice(0, 40)\n const filename = slug ? `${f.id}-${slug}.md` : `${f.id}.md`\n const lines = [\n `# ${f.id}: ${f.title}`,\n ...(f.parent ? [`**Parent:** ${f.parent}`] : []),\n `**Status:** ${f.status}`,\n `**Order:** ${f.order}`,\n `**Tasks:** ${formatTasks(f.tasks)}`,\n ...(f.due ? [`**Due:** ${f.due}`] : []),\n '',\n ]\n const content = lines.join('\\n') + (f.body ? `\\n${f.body}\\n` : '')\n await fs.writeFile(path.join(root, ROADMAP_DIR, filename), content, { flag: 'wx', encoding: 'utf8' })\n}\n\n/** Where \"Generate roadmap\" would take its content from: ROADMAP.md, then tasks, then a starter. */\nexport async function detectRoadmapSource(root: string): Promise<RoadmapSource> {\n return (await roadmapDrafts(root)).source\n}\n\nasync function roadmapDrafts(root: string): Promise<{ source: RoadmapSource; drafts: RoadmapDraft[] }> {\n try {\n const drafts = roadmapFromMarkdown(await fs.readFile(path.join(root, 'ROADMAP.md'), 'utf8'))\n if (drafts.length > 0) return { source: 'roadmap-md', drafts }\n } catch {\n // no ROADMAP.md — fall through\n }\n const { tasks } = await listTasks(root)\n const fromTasks = roadmapFromTasks(tasks)\n if (fromTasks.length > 0) return { source: 'tasks', drafts: fromTasks }\n return { source: 'starter', drafts: starterRoadmap() }\n}\n\n/**\n * Build plans/roadmap/ for a project that has none. Never touches ROADMAP.md or tasks.\n * Refuses when any R*.md exists. One activity entry for the whole generation.\n */\nexport function generateRoadmap(\n root: string, actor: 'ai' | 'human' = 'human'\n): Promise<{ items: RoadmapItem[]; source: RoadmapSource }> {\n return withRoadmapLock(async () => {\n if ((await readRoadmapFiles(root)).length > 0) throw new RoadmapError('Roadmap already exists')\n const { source, drafts } = await roadmapDrafts(root)\n\n const ids = new Map(drafts.map((d, i) => [d.key, roadmapId(i + 1)]))\n const siblingCount = new Map<string | null, number>()\n await fs.mkdir(path.join(root, ROADMAP_DIR), { recursive: true })\n for (const d of drafts) {\n const n = (siblingCount.get(d.parent) ?? 0) + 1\n siblingCount.set(d.parent, n)\n await writeRoadmapFile(root, {\n id: ids.get(d.key) as string,\n title: d.title,\n parent: d.parent === null ? null : (ids.get(d.parent) ?? null),\n status: d.status,\n order: n * 10,\n tasks: d.tasks,\n due: null,\n body: d.body,\n })\n }\n\n await appendActivity(root, {\n type: 'roadmap_updated', actor,\n title: `Roadmap generated (${drafts.length} items)`,\n detail: `from ${source}`,\n })\n const { items } = await listRoadmap(root)\n return { items, source }\n })\n}\n\nasync function createRoadmapItemUnlocked(\n params: CreateRoadmapItemParams, root: string, actor: 'ai' | 'human'\n): Promise<RoadmapItem> {\n const title = cleanTitle(params.title)\n const status = params.status === undefined ? 'planned' : parseRoadmapStatus(params.status)\n const tasks = params.tasks === undefined ? [] : parseTaskIds(params.tasks)\n const body = params.body === undefined ? '' : cleanBody(params.body)\n const due = params.due === undefined ? null : cleanDue(params.due)\n const items = (await readRoadmapFiles(root)).map(f => f.item)\n\n const parent = params.parent == null || params.parent === '' ? null : normalizeRoadmapId(params.parent)\n if (parent) validateParent(parent, null, items)\n\n const siblingOrders = items.filter(i => i.parent === parent).map(i => i.order)\n const order = params.order === undefined\n ? (siblingOrders.length > 0 ? Math.max(...siblingOrders) : 0) + 10\n : cleanOrder(params.order)\n\n const nums = items.map(i => parseInt(i.id.slice(1), 10)).filter(n => !isNaN(n))\n const id = roadmapId(nums.length > 0 ? Math.max(...nums) + 1 : 1)\n\n await fs.mkdir(path.join(root, ROADMAP_DIR), { recursive: true })\n await writeRoadmapFile(root, { id, title, parent, status, order, tasks, due, body })\n\n await appendActivity(root, { type: 'roadmap_updated', actor, title: `${id} created`, detail: title })\n return getRoadmapItem(id, root)\n}\n\nexport function updateRoadmapItem(\n id: string, patch: UpdateRoadmapItemPatch, root: string, actor: 'ai' | 'human' = 'human',\n /** false when the edit is a side effect of a task change (its **Tasks:** line); the task row already says it */\n log = true,\n): Promise<RoadmapItem> {\n return withRoadmapLock(() => updateRoadmapItemUnlocked(id, patch, root, actor, log))\n}\n\nasync function updateRoadmapItemUnlocked(\n id: string, patch: UpdateRoadmapItemPatch, root: string, actor: 'ai' | 'human', log: boolean,\n): Promise<RoadmapItem> {\n const { item, raw } = await findRoadmapFile(id, root)\n const p = patch ?? {}\n\n // Validate everything before touching the file.\n const title = p.title === undefined ? undefined : cleanTitle(p.title)\n const status = p.status === undefined ? undefined : parseRoadmapStatus(p.status)\n const order = p.order === undefined ? undefined : cleanOrder(p.order)\n const tasks = p.tasks === undefined ? undefined : parseTaskIds(p.tasks)\n const body = p.body === undefined ? undefined : cleanBody(p.body)\n const due = p.due === undefined ? undefined : cleanDue(p.due)\n let owner: string | null | undefined\n if (p.owner !== undefined) {\n owner = p.owner === null || p.owner === '' ? null : parseOwner(p.owner)\n if (p.owner && !owner) throw new RoadmapError(`owner must be \"human\" or \"ai:<agent>\" (got ${JSON.stringify(p.owner)})`)\n }\n let priority: string | null | undefined\n if (p.priority !== undefined) {\n priority = p.priority === null || p.priority === '' ? null : parsePriority(p.priority)\n if (p.priority && !priority) throw new RoadmapError(`priority must be P0, P1, P2 or P3 (got ${JSON.stringify(p.priority)})`)\n }\n let parent: string | null | undefined\n if (p.parent !== undefined) {\n parent = p.parent === null || p.parent === '' ? null : normalizeRoadmapId(p.parent)\n if (parent !== null) {\n const items = (await readRoadmapFiles(root)).map(f => f.item)\n validateParent(parent, item.id, items)\n if (items.some(i => i.parent === item.id)) {\n throw new RoadmapError(`${item.id} has children and cannot be given a parent`)\n }\n }\n }\n\n const lines = raw.split('\\n')\n if (title !== undefined) {\n const h1 = lines.findIndex(l => l.startsWith('# '))\n if (h1 >= 0) lines[h1] = `# ${item.id}: ${title}`\n else lines.unshift(`# ${item.id}: ${title}`)\n }\n\n const end = roadmapMetaEnd(lines)\n const head = lines.slice(0, end)\n let rest = lines.slice(end)\n\n // Replace-or-insert (or remove, for value null) a meta line inside the head block only.\n const setMeta = (key: string, value: string | null) => {\n const idx = head.findIndex(l => l.match(META_LINE)?.[1].trim().toLowerCase() === key.toLowerCase())\n if (value === null) { if (idx >= 0) head.splice(idx, 1); return }\n const line = `**${key}:** ${value}`\n if (idx >= 0) head[idx] = line\n else head.push(line)\n }\n\n if (parent !== undefined) setMeta('Parent', parent)\n if (status !== undefined) setMeta('Status', status)\n if (order !== undefined) setMeta('Order', String(order))\n if (tasks !== undefined) setMeta('Tasks', formatTasks(tasks))\n if (due !== undefined) setMeta('Due', due)\n if (owner !== undefined) setMeta('Owner', owner)\n if (priority !== undefined) setMeta('Priority', priority)\n if (body !== undefined) {\n rest = body ? ['', body, ''] : ['']\n }\n\n await fs.writeFile(path.join(root, item.file), [...head, ...rest].join('\\n'), 'utf8')\n const updated = await getRoadmapItem(item.id, root)\n if (log) await appendActivity(root, { type: 'roadmap_updated', actor, title: `${item.id} updated`, detail: updated.title })\n return updated\n}\n\nexport interface DeletedRoadmapItem { item: RoadmapItem; raw: string; position: { x: number; y: number } | null }\n\nexport function deleteRoadmapItem(id: string, root: string, actor: 'ai' | 'human' = 'human'): Promise<DeletedRoadmapItem> {\n return withRoadmapLock(() => deleteRoadmapItemUnlocked(id, root, actor))\n}\n\nasync function deleteRoadmapItemUnlocked(id: string, root: string, actor: 'ai' | 'human'): Promise<DeletedRoadmapItem> {\n const { item, raw } = await findRoadmapFile(id, root)\n const position = (await readRoadmapLayout(root))[item.id] ?? null\n const items = (await readRoadmapFiles(root)).map(f => f.item)\n const children = items.filter(i => i.parent === item.id).map(i => i.id)\n if (children.length > 0) {\n throw new RoadmapError(`${item.id} still has children (${children.join(', ')}); move or delete them first`)\n }\n await fs.unlink(path.join(root, item.file))\n // Prune now so a later create reusing this id doesn't inherit the old position.\n await writeRoadmapLayoutUnlocked({}, root)\n await appendActivity(root, { type: 'roadmap_updated', actor, title: `${item.id} deleted`, detail: item.title })\n return { item, raw, position }\n}\n\n/** Undo for deleteRoadmapItem: write the file back byte-for-byte (never over an existing id) and its position. */\nexport function restoreRoadmapItem(\n file: unknown, raw: unknown, position: unknown, root: string, actor: 'ai' | 'human' = 'human'\n): Promise<RoadmapItem> {\n return withRoadmapLock(async () => {\n if (!isFileIn(file, ROADMAP_DIR, /^R\\d+[^/]*\\.md$/) || typeof raw !== 'string') throw new RoadmapError('Invalid roadmap item to restore')\n const id = roadmapIdOf(file)\n if (!id) throw new RoadmapError('Invalid roadmap item to restore')\n if (await findRoadmapFile(id, root).then(() => true, () => false)) throw new RoadmapError(`${id} already exists`)\n await fs.mkdir(path.join(root, ROADMAP_DIR), { recursive: true })\n await fs.writeFile(path.join(root, file), raw, { flag: 'wx', encoding: 'utf8' })\n if (position) await writeRoadmapLayoutUnlocked({ [id]: position as { x: number; y: number } }, root)\n await appendActivity(root, { type: 'roadmap_updated', actor, title: `${id} restored` })\n return (await findRoadmapFile(id, root)).item\n })\n}\n\nexport async function readRoadmapLayout(root: string): Promise<RoadmapLayout> {\n try {\n const parsed = JSON.parse(await fs.readFile(path.join(root, ROADMAP_LAYOUT), 'utf8'))\n if (!parsed || typeof parsed !== 'object' || Array.isArray(parsed)) return {}\n const out: RoadmapLayout = {}\n for (const [k, v] of Object.entries(parsed as Record<string, { x?: unknown; y?: unknown }>)) {\n if (v && Number.isFinite(v.x) && Number.isFinite(v.y)) out[k] = { x: v.x as number, y: v.y as number }\n }\n return out\n } catch {\n return {}\n }\n}\n\n/** Merge `positions` into layout.json and drop ids with no matching R*.md. Returns the saved layout. */\nexport function writeRoadmapLayout(positions: RoadmapLayout, root: string): Promise<RoadmapLayout> {\n return withRoadmapLock(() => writeRoadmapLayoutUnlocked(positions, root))\n}\n\nasync function writeRoadmapLayoutUnlocked(positions: RoadmapLayout, root: string): Promise<RoadmapLayout> {\n const clean: RoadmapLayout = {}\n for (const [k, v] of Object.entries(positions ?? {})) {\n const key = k.trim().toUpperCase()\n const ok = /^R\\d+$/.test(key) && v && typeof v === 'object'\n && typeof v.x === 'number' && typeof v.y === 'number' && Number.isFinite(v.x) && Number.isFinite(v.y)\n if (!ok) throw new RoadmapError(`Invalid position for ${k}`)\n clean[key] = { x: v.x, y: v.y }\n }\n const merged = { ...(await readRoadmapLayout(root)), ...clean }\n\n const existing = new Set((await readRoadmapFiles(root)).map(f => f.item.id))\n const layout: RoadmapLayout = {}\n for (const key of Object.keys(merged).sort()) {\n if (existing.has(key)) layout[key] = merged[key]\n }\n\n await fs.mkdir(path.join(root, ROADMAP_DIR), { recursive: true })\n await fs.writeFile(path.join(root, ROADMAP_LAYOUT), JSON.stringify(layout, null, 2) + '\\n', 'utf8')\n return layout\n}\n\n// ─── Planning skills ──────────────────────────────────────────────────────────\n\nconst PLANNING_SKILLS = { roadmap: 'roadmap-planner', breakdown: 'epic-breakdown' } as const\nexport type PlanningKind = keyof typeof PLANNING_SKILLS\n\n/** Bundled skill body (frontmatter stripped). Read from the VibeDoc package (cwd), not the target project. */\nexport async function readPlanningSkill(kind: PlanningKind): Promise<string> {\n if (!Object.hasOwn(PLANNING_SKILLS, kind)) throw new Error(`Unknown planning kind \"${kind}\" (expected: ${Object.keys(PLANNING_SKILLS).join(', ')})`)\n const text = await fs.readFile(path.join(process.cwd(), 'skills', PLANNING_SKILLS[kind], 'SKILL.md'), 'utf-8')\n return text.replace(/^---\\r?\\n[\\s\\S]*?\\r?\\n---\\r?\\n/, '').trimStart()\n}\n\n/** VibeDoc's own getting-started guide (R042), read from the package (cwd) like the skills, never the target project. */\nexport async function readGettingStarted(): Promise<string> {\n return fs.readFile(path.join(process.cwd(), 'docs', 'getting-started.md'), 'utf-8')\n}\n\n// ─── Agent chats (.vibedoc/chats/<id>.json) ───────────────────────────────────\n// The browser owns the chat shape (src/lib/chats.ts); core only stores it by id.\n\nconst CHATS_DIR = path.join('.vibedoc', 'chats')\nconst CHAT_ID = /^[a-z0-9-]{1,64}$/\n\nfunction chatFile(id: string, root: string): string {\n if (!CHAT_ID.test(id)) throw new Error(`Invalid chat id \"${id}\"`)\n return path.join(root, CHATS_DIR, `${id}.json`)\n}\n\n/** Every saved chat, unparsed beyond JSON. Unreadable files are skipped (logged). */\nexport async function listChats(root: string): Promise<unknown[]> {\n const dir = path.join(root, CHATS_DIR)\n const files = await fs.readdir(dir).catch(() => [] as string[])\n // ponytail: reads every chat file on load; add a limit/index if projects collect hundreds of chats\n const chats = await Promise.all(files.filter(f => f.endsWith('.json')).map(async f => {\n try {\n return JSON.parse(await fs.readFile(path.join(dir, f), 'utf-8')) as unknown\n } catch (e) {\n console.warn(`[vibedoc] skipping unreadable chat ${f}: ${(e as Error).message}`)\n return null\n }\n }))\n return chats.filter(c => c !== null)\n}\n\nexport async function saveChat(chat: unknown, root: string): Promise<void> {\n const id = (chat as { id?: unknown } | null)?.id\n if (typeof id !== 'string') throw new Error('chat.id is required')\n const file = chatFile(id, root)\n await fs.mkdir(path.dirname(file), { recursive: true })\n // Write-then-rename so a crash mid-write never leaves half a JSON file\n const tmp = `${file}.tmp`\n await fs.writeFile(tmp, JSON.stringify(chat), 'utf-8')\n await fs.rename(tmp, file)\n}\n\nexport async function deleteChat(id: string, root: string): Promise<void> {\n await fs.rm(chatFile(id, root), { force: true })\n}\n\n// ─── Episodes ─────────────────────────────────────────────────────────────────\n// `.vibedoc/episodes/<sessionId>.md` (R050): auto summary + handoff for a session with no MEMORY.md write.\n\nexport const EPISODES_DIR = path.join('.vibedoc', 'episodes')\nconst EPISODE_ID = /^[A-Za-z0-9_-]{1,80}$/\n\n/** Overwrites the session's own file (idempotent per session). Returns the project-relative path. */\nexport async function writeEpisode(ep: { sessionId: string; markdown: string }, root: string): Promise<string> {\n if (!EPISODE_ID.test(ep.sessionId)) throw new Error(`Invalid session id \"${ep.sessionId}\"`)\n const rel = path.join(EPISODES_DIR, `${ep.sessionId}.md`)\n const file = path.join(root, rel)\n await fs.mkdir(path.dirname(file), { recursive: true })\n const tmp = `${file}.tmp`\n await fs.writeFile(tmp, ep.markdown, 'utf8')\n await fs.rename(tmp, file)\n return rel\n}\n\n/** Every episode, newest `end` first; a missing folder is []. */\nexport async function listEpisodes(root: string): Promise<Episode[]> {\n const files = await fs.readdir(path.join(root, EPISODES_DIR)).catch(() => [] as string[])\n const eps = await Promise.all(files.filter(f => f.endsWith('.md')).map(async f => {\n const rel = path.join(EPISODES_DIR, f)\n try {\n return parseEpisode(await fs.readFile(path.join(root, rel), 'utf8'), rel)\n } catch (e) {\n console.warn(`[vibedoc] skipping unreadable episode ${f}: ${(e as Error).message}`)\n return null\n }\n }))\n return eps.filter((e): e is Episode => !!e).sort((a, b) => b.end.localeCompare(a.end))\n}\n\nexport async function getLatestEpisode(root: string): Promise<Episode | null> {\n return (await listEpisodes(root))[0] ?? null\n}\n\n/** Episodes that ended after MEMORY.md was last written (by vibedoc_update_memory or by hand), newest first. */\nexport async function episodesSinceHandoff(root: string): Promise<Episode[]> {\n const [eps, stat] = await Promise.all([\n listEpisodes(root),\n fs.stat(path.join(root, 'memory', 'MEMORY.md')).catch(() => null),\n ])\n const since = stat?.mtimeMs ?? -Infinity\n return eps.filter(e => Date.parse(e.end) > since)\n}\n\nfunction sessionEpisode(s: Session, events: ActivityEvent[], tasks: Task[], source: string, agent?: string): string {\n const openTasks = s.tasks\n .filter(t => t.lastStatus !== 'done' && t.lastStatus !== 'cancelled')\n .map(t => ({ id: t.id, title: tasks.find(x => x.id === t.id)?.title ?? '', status: t.lastStatus }))\n // No transcript outside the chat: \"Where it stopped\" is the last event's title\n return buildEpisode(s, { source, agent, openTasks, lastMessage: lastEventTitle(s, events) })\n}\n\n/**\n * R050 lazy backfill (at vibedoc_read_memory): an `inferred` episode for each ended agent session since the last\n * MEMORY.md write that has no handoff and no episode file, newest first. Never rewrites an existing episode.\n */\nexport async function backfillEpisodes(\n root: string, { excludeSessionId = null, limit = 5 }: { excludeSessionId?: string | null; limit?: number } = {},\n): Promise<{ sessionId: string; file: string }[]> {\n if (isDemo()) return []\n const [events, files, memStat] = await Promise.all([\n readActivity(root, ACTIVITY_CAP),\n fs.readdir(path.join(root, EPISODES_DIR)).catch(() => [] as string[]),\n fs.stat(path.join(root, 'memory', 'MEMORY.md')).catch(() => null),\n ])\n const existing = new Set(files.filter(f => f.endsWith('.md')).map(f => f.slice(0, -3)))\n const picks = sessionsNeedingEpisode(groupSessions(events), events, existing, excludeSessionId, {\n now: Date.now(), gapMs: SESSION_GAP_MS, since: memStat?.mtimeMs, limit,\n })\n if (!picks.length) return []\n const { tasks } = await listTasks(root)\n const written: { sessionId: string; file: string }[] = []\n for (const s of picks) {\n const markdown = sessionEpisode(s, events, tasks, 'inferred')\n if (markdown) written.push({ sessionId: s.id, file: await writeEpisode({ sessionId: s.id, markdown }, root) })\n }\n return written\n}\n\n/**\n * R050: episode for the caller's current agent session when an epic run ends (vibedoc_next_task has nothing ready).\n * null when there is no running session, it wrote a handoff, or it changed nothing. Rewrites keep earlier sources.\n */\nexport async function writeRunEpisode(root: string, source: string, agent?: string): Promise<{ sessionId: string; file: string } | null> {\n if (isDemo()) return null\n const id = currentSessionId(root)\n if (!id) return null\n const events = await readActivity(root, ACTIVITY_CAP)\n const s = groupSessions(events).find(x => x.id === id)\n if (!s || !hasWork(s, events) || isHandoffWritten(s, events)) return null\n const rel = path.join(EPISODES_DIR, `${id}.md`)\n const prev = await fs.readFile(path.join(root, rel), 'utf8').then(raw => parseEpisode(raw, rel)).catch(() => null)\n const { tasks } = await listTasks(root)\n const markdown = sessionEpisode(s, events, tasks, mergeSources(prev?.source, source), agent)\n return markdown ? { sessionId: id, file: await writeEpisode({ sessionId: id, markdown }, root) } : null\n}\n\n// ─── Saved board views (.vibedoc/views.json) ─────────────────────────────────\n\nconst VIEWS_FILE = path.join('.vibedoc', 'views.json')\n\n/** null when the file is missing or unreadable (caller falls back to the built-ins). */\nexport async function readViews(root: string): Promise<SavedView[] | null> {\n let raw: string\n try {\n raw = await fs.readFile(path.join(root, VIEWS_FILE), 'utf-8')\n } catch {\n return null\n }\n try {\n const views = (JSON.parse(raw) as { views?: unknown })?.views\n if (!Array.isArray(views)) throw new Error('\"views\" is not an array')\n return views as SavedView[]\n } catch (e) {\n console.warn(`[vibedoc] ignoring unreadable ${VIEWS_FILE}: ${(e as Error).message}`)\n return null\n }\n}\n\nexport async function saveViews(views: SavedView[], root: string): Promise<void> {\n const file = path.join(root, VIEWS_FILE)\n await fs.mkdir(path.dirname(file), { recursive: true })\n // Write-then-rename so a crash mid-write never leaves half a JSON file\n const tmp = `${file}.tmp`\n await fs.writeFile(tmp, JSON.stringify({ views }, null, 2) + '\\n', 'utf-8')\n await fs.rename(tmp, file)\n}\n","// Pure export of knowledge entries into a managed block of AGENTS.md / CLAUDE.md (R052, no fs).\n// Self-check: node src/lib/entries-export.check.mts\nimport type { Entry, EntryType } from './entries'\n\nexport const BLOCK_START = '<!-- vibedoc:entries:start -->'\nexport const BLOCK_END = '<!-- vibedoc:entries:end -->'\nconst LINE_BODY_MAX = 200\n// Markers count only as whole lines, so a marker quoted in prose, a code span or an entry line (always `- …`) is plain text\nconst lineRe = (marker: string) => new RegExp(`^${marker}\\\\r?$`, 'gm')\n\n// Same order as ENTRY_TYPES in entries.ts (a value import would break `node *.check.mts`; the check asserts they match)\nexport const TYPE_HEADINGS: Record<EntryType, string> = {\n convention: 'Conventions',\n gotcha: 'Gotchas',\n decision: 'Decisions',\n preference: 'Preferences',\n}\n\n/** `summary: first body line (≤200 chars) (E001)`. */\nfunction entryLine(e: Entry): string {\n const first = e.body.split(/\\r?\\n/).map(l => l.trim()).find(Boolean)\n return `- ${e.summary}${first ? `: ${first.slice(0, LINE_BODY_MAX).trim()}` : ''} (${e.id})`\n}\n\n/** The block, markers included, with `\\n` line endings and no date, so an unchanged set renders byte-identical. */\nexport function renderEntriesBlock(entries: Entry[]): string {\n const out = [BLOCK_START, '## Project memory', '_Generated from memory/entries/ by VibeDoc. Edit the entries, not this block._']\n const byId = (a: Entry, b: Entry) => a.id.localeCompare(b.id, 'en', { numeric: true })\n for (const [type, heading] of Object.entries(TYPE_HEADINGS)) {\n const group = entries.filter(e => e.type === type).sort(byId)\n if (group.length) out.push('', `### ${heading}`, ...group.map(entryLine))\n }\n if (!entries.length) out.push('', '_No entries yet._')\n out.push(BLOCK_END)\n return out.join('\\n')\n}\n\n/**\n * Replace the text between the markers (inclusive) with `block`, or append it after one blank line when neither marker\n * is there. Everything outside the markers stays byte-for-byte; the block takes the file's line endings.\n * One marker alone (or end before start) → error, so a hand-broken block is never guessed at.\n * Markers match only as whole lines; the first end line after the first start line closes the block.\n */\nexport function upsertManagedBlock(fileText: string, block: string): { text: string } | { error: string } {\n const eol = fileText.includes('\\r\\n') ? '\\r\\n' : '\\n'\n const b = block.replace(/\\r?\\n/g, eol)\n const find = (marker: string, from = 0) => {\n const re = lineRe(marker)\n re.lastIndex = from\n return re.exec(fileText)?.index ?? -1\n }\n const start = find(BLOCK_START)\n const endAfter = start >= 0 ? find(BLOCK_END, start) : -1\n if (endAfter >= 0) return { text: fileText.slice(0, start) + b + fileText.slice(endAfter + BLOCK_END.length) }\n const end = find(BLOCK_END)\n if (start >= 0 || end >= 0) return { error: `found ${start >= 0 && end >= 0 ? `${BLOCK_END} before ${BLOCK_START}` : `only ${start >= 0 ? BLOCK_START : BLOCK_END}`}; fix or remove the markers by hand` }\n if (!fileText) return { text: b + eol }\n let base = fileText\n if (!base.endsWith(eol)) base += eol\n if (!base.endsWith(eol + eol)) base += eol\n return { text: base + b + eol }\n}\n","// Pure Claude Code memory parsing (R052, no fs). Self-check: node src/lib/claude-memory.check.mts\n// Claude Code keeps one fact per <config>/projects/<slug>/memory/<name>.md, with a frontmatter of name/description/type.\nimport type { Entry, EntryType } from './entries'\n\nexport type ClaudeMemoryCandidate = { name: string; type: EntryType; summary: string; body: string; file: string }\n\n// Same as SUMMARY_MAX in entries.ts; a value import would break `node *.check.mts` (pure libs import types only)\nconst SUMMARY_MAX = 120\n\n/** \"/Users/x/work/vibedoc\" → \"-Users-x-work-vibedoc\": every non-alphanumeric character becomes \"-\". */\nexport function claudeProjectSlug(absRoot: string): string {\n return absRoot.replace(/[^a-zA-Z0-9]/g, '-')\n}\n\n/** feedback / user → preference, project → decision, reference and anything else → convention. */\nexport function mapClaudeType(t: string | undefined): EntryType {\n switch ((t ?? '').trim().toLowerCase()) {\n case 'feedback':\n case 'user': return 'preference'\n case 'project': return 'decision'\n default: return 'convention'\n }\n}\n\nconst KEYS = ['name', 'description', 'type']\nconst unquote = (v: string) => v.trim().replace(/^(['\"])(.*)\\1$/, '$2')\n\n/**\n * One memory file → an entry candidate; null without frontmatter, `name` or `description`.\n * Line-based reader for `name`, `description` and `type` (top level or under `metadata:`), not a YAML parser.\n */\nexport function parseClaudeMemory(raw: string, file: string): ClaudeMemoryCandidate | null {\n const lines = raw.replace(/\\r\\n/g, '\\n').split('\\n')\n if (lines[0]?.trim() !== '---') return null\n const end = lines.indexOf('---', 1)\n if (end < 0) return null\n const fm: Record<string, string> = {}\n let last = ''\n for (const line of lines.slice(1, end)) {\n const m = /^\\s*([\\w-]+):(?:\\s+(.*))?$/.exec(line)\n if (m) {\n last = m[1]\n if (KEYS.includes(last) && !(last in fm)) fm[last] = unquote((m[2] ?? '').replace(/^[|>][-+]?$/, ''))\n } else if (last === 'description' && line.trim()) {\n fm.description = `${fm.description} ${line.trim()}` // wrapped or `|` / `>` block value\n }\n }\n const name = fm.name ?? ''\n const summary = (fm.description ?? '').replace(/\\s+/g, ' ').trim().slice(0, SUMMARY_MAX).trim()\n if (!name || !summary) return null\n return { name, type: mapClaudeType(fm.type), summary, body: lines.slice(end + 1).join('\\n').trim(), file }\n}\n\nexport const CLAUDE_SOURCE_PREFIX = 'claude-code:'\n\nexport type ImportPlan = {\n create: ClaudeMemoryCandidate[]\n update: { entry: Entry; candidate: ClaudeMemoryCandidate }[]\n unchanged: { entry: Entry; candidate: ClaudeMemoryCandidate }[]\n /** Entries imported earlier whose Claude Code memory is gone; listed, never deleted. */\n onlyInVibedoc: Entry[]\n}\n\n/**\n * Dedupe by `**Source:** claude-code:<name>` only: a match is an update when type, summary or body differ, else unchanged;\n * everything else is new. Entries without a source never match. A repeated candidate name counts once (first wins).\n */\nexport function planImport(candidates: ClaudeMemoryCandidate[], entries: Entry[]): ImportPlan {\n const bySource = new Map<string, Entry>()\n for (const e of entries) if (e.source && !bySource.has(e.source)) bySource.set(e.source, e)\n const plan: ImportPlan = { create: [], update: [], unchanged: [], onlyInVibedoc: [] }\n const seen = new Set<string>()\n for (const c of candidates) {\n const source = CLAUDE_SOURCE_PREFIX + c.name\n if (seen.has(source)) continue\n seen.add(source)\n const entry = bySource.get(source)\n if (!entry) plan.create.push(c)\n else if (entry.type !== c.type || entry.summary !== c.summary || entry.body !== c.body) plan.update.push({ entry, candidate: c })\n else plan.unchanged.push({ entry, candidate: c })\n }\n plan.onlyInVibedoc = [...bySource.values()].filter(e => e.source?.startsWith(CLAUDE_SOURCE_PREFIX) && !seen.has(e.source))\n return plan\n}\n","import { NextResponse } from 'next/server'\n\n/** `VIBEDOC_DEMO=1`: the hosted read-only demo (R042). Server-only: the browser learns it from `/api/summary`. */\nexport function isDemo(): boolean {\n return process.env.VIBEDOC_DEMO === '1'\n}\n\n/** The answer every mutating route gives in demo mode. */\nexport function demoForbidden() {\n return NextResponse.json({ error: 'Read-only demo' }, { status: 403 })\n}\n","// Pure knowledge-entry parsing and formatting (R046, no fs). Self-check: node src/lib/entries.check.mts\n// One long-lived fact per file: memory/entries/E001-<slug>.md\n\nexport const ENTRY_TYPES = ['convention', 'gotcha', 'decision', 'preference'] as const\nexport type EntryType = typeof ENTRY_TYPES[number]\n\n/**\n * updatedAt = the `**Updated:**` date (YYYY-MM-DD); by = `**By:**` who saved it last (\"human\" | \"ai:<agent>\",\n * null in files from before R047); source = `**Source:**` where it came from (\"claude-code:<name>\", R052), omitted when\n * native; file = path relative to root.\n */\nexport type Entry = { id: string; type: EntryType; summary: string; body: string; updatedAt: string; by: string | null; source?: string; file: string }\nexport type EntryInput = { id?: string; type: string; summary: string; body?: string; source?: string }\n\nexport const SUMMARY_MAX = 120\n\nconst isEntryType = (s: string): s is EntryType => (ENTRY_TYPES as readonly string[]).includes(s)\n\n/** \"e1\" / \"E01\" / \"E001\" → \"E001\"; anything else → null. */\nexport function normalizeEntryId(s: string): string | null {\n const m = /^e(\\d+)$/i.exec(s.trim())\n if (!m) return null\n const n = Number(m[1])\n return n > 0 ? `E${String(n).padStart(3, '0')}` : null\n}\n\n/** One past the highest id: [] → \"E001\"; [\"E001\",\"E007\"] → \"E008\". */\nexport function nextEntryId(ids: string[]): string {\n const max = Math.max(0, ...ids.map(id => Number(normalizeEntryId(id)?.slice(1) ?? 0)))\n return `E${String(max + 1).padStart(3, '0')}`\n}\n\nexport function entrySlug(summary: string): string {\n return summary.toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/^-|-$/g, '').slice(0, 40).replace(/-$/, '')\n}\n\n/** null when the `# E001: summary` H1 or a known `**Type:**` is missing. */\nexport function parseEntry(raw: string, file: string): Entry | null {\n const lines = raw.replace(/\\r\\n/g, '\\n').split('\\n')\n const h1 = /^#\\s+(E\\d+):\\s*(.+?)\\s*$/i.exec(lines[0] ?? '')\n const id = h1 && normalizeEntryId(h1[1])\n if (!h1 || !id) return null\n // Contiguous **Key:** Value block under the H1, like task files\n const meta: Record<string, string> = {}\n let i = 1\n for (; i < lines.length; i++) {\n const m = /^\\*\\*(\\w+):\\*\\*\\s*(.*)$/.exec(lines[i])\n if (!m) break\n meta[m[1].toLowerCase()] = m[2].trim()\n }\n const type = meta.type ?? ''\n if (!isEntryType(type)) return null\n return { id, type, summary: h1[2], body: lines.slice(i).join('\\n').trim(), updatedAt: meta.updated ?? '', by: meta.by || null, ...(meta.source ? { source: meta.source } : {}), file }\n}\n\nexport function formatEntry(e: Omit<Entry, 'file'>): string {\n const head = `# ${e.id}: ${e.summary}\\n**Type:** ${e.type}\\n**Updated:** ${e.updatedAt}\\n${e.source ? `**Source:** ${e.source}\\n` : ''}${e.by ? `**By:** ${e.by}\\n` : ''}`\n return e.body.trim() ? `${head}\\n${e.body.trim()}\\n` : head\n}\n\n/** Error message, or null when valid. Does not check whether an id exists. */\nexport function validateEntryInput(i: EntryInput): string | null {\n if (i.id !== undefined && !normalizeEntryId(String(i.id))) return `Invalid id \"${i.id}\": expected E followed by a number, e.g. E001`\n if (!isEntryType(String(i.type ?? ''))) return `Invalid type \"${i.type ?? ''}\": use one of ${ENTRY_TYPES.join(', ')}`\n const summary = String(i.summary ?? '').trim()\n if (!summary) return 'summary is required'\n if (/\\n/.test(summary)) return 'summary must be one line'\n if (summary.length > SUMMARY_MAX) return `summary is ${summary.length} characters; keep it to ${SUMMARY_MAX}`\n if (i.body !== undefined && typeof i.body !== 'string') return 'body must be a string'\n return null\n}\n\n/**\n * Replace whole-token mentions of `fromIds` (any padding: E11, E011) with `toId`, for a merge (R051).\n * Same token boundaries as the memory graph's ID_RE, so \"XE011\" and \"E011a\" stay.\n */\nexport function replaceEntryRefs(text: string, fromIds: string[], toId: string): string {\n const from = new Set(fromIds.map(id => normalizeEntryId(id)))\n return text.replace(/(?<![A-Za-z0-9_-])E\\d+(?![A-Za-z0-9_])/g, m => (from.has(normalizeEntryId(m)) ? toId : m))\n}\n","/**\n * src/lib/episodes.ts\n * Pure session episodes (R050): a deterministic summary + handoff for a session that ended without\n * `vibedoc_update_memory`, built from its activity (groupSessions) and the chat's last reply. No fs.\n * Stored by core.ts as `.vibedoc/episodes/<sessionId>.md`.\n */\nimport type { ActivityEvent } from './core'\nimport type { Session } from './sessions'\n\nexport type Episode = { sessionId: string; actor: string; start: string; end: string; source: string; headline: string; body: string; file: string }\n\nexport interface EpisodeOpts {\n source: string\n lastMessage?: string\n openTasks?: { id: string; title: string; status: string }[]\n /** Agent name for the actor line (`ai:<agent>`); defaults to the session's actor */\n agent?: string\n}\n\n/** ≈400 tokens: the body is read at session start (T114) */\nexport const EPISODE_BODY_CAP = 1600\nconst MIN_MESSAGE = 200\nconst LIST_CAPS = [Infinity, 10, 5, 3, 1, 0]\n\n// Events that only read or announce; a turn with nothing else is pure Q&A and leaves no episode.\nconst READ_ONLY: ActivityEvent['type'][] = ['doc_read', 'session_start']\n\nconst clip = (s: string, n: number) => (s.length <= n ? s : `${s.slice(0, Math.max(0, n - 1)).trimEnd()}…`)\n\nfunction tail<T>(items: T[], cap: number, fmt: (x: T) => string): string[] {\n if (items.length <= cap) return items.map(fmt)\n return [...items.slice(0, cap).map(fmt), `+${items.length - cap} more`]\n}\n\nfunction renderBody(s: Session, opts: EpisodeOpts, cap: number, msgMax: number): string {\n const happened = [\n ...tail(s.tasks, cap, t => `- ${t.id} → ${t.lastStatus}`),\n ...(s.docs.length ? [`- Docs changed: ${tail(s.docs, cap, d => d).join(', ')}`] : []),\n ...(s.decisions.length ? [`- Decisions: ${tail(s.decisions, cap, d => d).join(', ')}`] : []),\n ].map(l => (l.startsWith('+') ? `- ${l}` : l))\n const msg = (opts.lastMessage ?? '').trim()\n const open = opts.openTasks ?? []\n const parts = [`## What happened\\n${happened.join('\\n') || `- ${s.headline}`}`]\n if (msg) parts.push(`## Where it stopped\\n${clip(msg, msgMax).split('\\n').map(l => `> ${l}`).join('\\n')}`)\n if (open.length) parts.push(`## Open\\n${tail(open, cap, t => `- ${t.id} ${t.title} (${t.status})`).map(l => (l.startsWith('+') ? `- ${l}` : l)).join('\\n')}`)\n return parts.join('\\n\\n')\n}\n\n/**\n * Markdown for `.vibedoc/episodes/<id>.md`; '' for a session with no events. Body ≤ EPISODE_BODY_CAP.\n * Only for sessions whose work isn't covered by a handoff (isHandoffWritten false); the headline's \"memory updated\" reads as entries saved.\n */\nexport function buildEpisode(s: Session, opts: EpisodeOpts): string {\n if (!s.eventCount) return ''\n const actor = opts.agent ? `ai:${opts.agent}` : s.actor\n const headline = s.headline.replace('memory updated', 'entries saved')\n const head = `# Episode ${s.id}: ${headline}\\n**Session:** ${s.id}\\n**Actor:** ${actor}\\n**Start:** ${s.start}\\n**End:** ${s.end}\\n**Source:** ${opts.source}\\n\\n`\n const msgLen = (opts.lastMessage ?? '').trim().length\n let body = ''\n // Trim the last message first, then shorten the lists\n for (const cap of LIST_CAPS) {\n const fixed = renderBody(s, { ...opts, lastMessage: '' }, cap, 0).length\n const room = EPISODE_BODY_CAP - fixed - 30 // heading + quote marks\n body = renderBody(s, opts, cap, Math.max(MIN_MESSAGE, Math.min(msgLen, room)))\n if (body.length <= EPISODE_BODY_CAP) break\n }\n return head + clip(body, EPISODE_BODY_CAP) + '\\n'\n}\n\nexport function parseEpisode(raw: string, file: string): Episode | null {\n const h1 = raw.match(/^# Episode ([^:\\n]+): (.*)$/m)\n if (!h1) return null\n const meta = (key: string) => raw.match(new RegExp(`^\\\\*\\\\*${key}:\\\\*\\\\* (.*)$`, 'm'))?.[1].trim() ?? ''\n const sessionId = meta('Session') || h1[1].trim()\n const start = meta('Start')\n const end = meta('End')\n if (!start || !end) return null\n const bodyAt = raw.search(/^## /m)\n return {\n sessionId, actor: meta('Actor'), start, end, source: meta('Source'),\n headline: h1[2].trim(), body: bodyAt < 0 ? '' : raw.slice(bodyAt).trim(), file,\n }\n}\n\n/** Source line for a rewrite of a session's episode: every chat that wrote into the session, in order. */\nexport function mergeSources(prev: string | undefined, next: string): string {\n const all = (prev ?? '').split(', ').filter(Boolean)\n return all.includes(next) ? all.join(', ') : [...all, next].join(', ')\n}\n\n/**\n * The session's last MEMORY.md write covers all its work: no non-read event came after it.\n * Entry saves reuse `memory_updated` (\"Entry E001 saved\") and count as work, not as a handoff.\n * Work after a handoff (the session is shared by every 'ai' client) still needs an episode.\n */\nexport function isHandoffWritten(s: Session, events: ActivityEvent[]): boolean {\n const ids = new Set(s.eventIds)\n const mine = events.filter(e => ids.has(e.id) && !READ_ONLY.includes(e.type))\n const isHandoff = (e: ActivityEvent) => e.type === 'memory_updated' && !e.title.startsWith('Entry ')\n const at = mine.filter(isHandoff).reduce<string | null>((m, e) => (m === null || e.timestamp > m ? e.timestamp : m), null)\n return at !== null && !mine.some(e => e.timestamp > at)\n}\n\n/** Sessions by `actor` with a non-read event at or after `since` (ISO): the ones a chat turn touched. */\nexport function turnSessions(sessions: Session[], events: ActivityEvent[], since: string, actor: ActivityEvent['actor'] = 'ai'): Session[] {\n const touched = new Set(events.filter(e => e.timestamp >= since && !READ_ONLY.includes(e.type)).map(e => e.id))\n return sessions.filter(s => s.actor === actor && s.eventIds.some(id => touched.has(id)))\n}\n\n/** The session changed something (not only session_start / doc_read): only then is an episode worth writing. */\nexport function hasWork(s: Session, events: ActivityEvent[]): boolean {\n const ids = new Set(s.eventIds)\n return events.some(e => ids.has(e.id) && !READ_ONLY.includes(e.type))\n}\n\n/** \"Where it stopped\" for a session with no transcript (external agents): the title of its last non-read event. */\nexport function lastEventTitle(s: Session, events: ActivityEvent[]): string | undefined {\n const ids = new Set(s.eventIds)\n return events\n .filter(e => ids.has(e.id) && !READ_ONLY.includes(e.type))\n .sort((a, b) => b.timestamp.localeCompare(a.timestamp))[0]?.title\n}\n\nexport interface BackfillOpts {\n now: number\n /** Idle gap that ends a session; pass SESSION_GAP_MS (sessions.ts) */\n gapMs: number\n /** Epoch ms of the last MEMORY.md write: sessions that ended before it are covered by that handoff */\n since?: number\n limit?: number\n}\n\n/**\n * R050 backfill: ended agent sessions with work, no handoff and no episode file yet, newest first, at most `limit` (5).\n * Ended = idle longer than `gapMs`, or a later session with work by the same actor exists. A later read-only session\n * (another client's vibedoc_read_memory opens one) doesn't end it: the agent may still be working. `sessions` come newest first.\n */\nexport function sessionsNeedingEpisode(\n sessions: Session[], events: ActivityEvent[], existingIds: Set<string>, currentSessionId: string | null, opts: BackfillOpts,\n): Session[] {\n const since = opts.since ?? -Infinity\n return sessions\n .filter(s => {\n if (s.actor !== 'ai' || s.id === currentSessionId || existingIds.has(s.id)) return false\n const end = Date.parse(s.end)\n const ended = opts.now - end > opts.gapMs || sessions.some(o => o.actor === s.actor && o.start > s.start && hasWork(o, events))\n return ended && end > since && hasWork(s, events) && !isHandoffWritten(s, events)\n })\n .slice(0, opts.limit ?? 5)\n}\n","// Pure memory link graph (R053, no fs): links are inferred from text, never stored. Self-check: node src/lib/memory-graph.check.mts\n// Outgoing edges come from entry text; incoming edges from task, roadmap and doc files that mention an entry id.\n\nexport type NodeKind = 'entry' | 'task' | 'epic' | 'adr' | 'doc'\nexport type GraphNode = { id: string; kind: NodeKind; label: string; path: string }\nexport type GraphEdge = { from: string; to: string } // from mentions to\nexport type MemoryGraph = { nodes: GraphNode[]; edges: GraphEdge[] }\n/** A node plus the text scanned for its refs. */\nexport type GraphItem = GraphNode & { text: string }\n\n// Upper case only, whole tokens: \"XT0651\", \"e2e\" and \"T0651a\" don't match\nconst ID_RE = /(?<![A-Za-z0-9_-])(E\\d+|T\\d{3,}|R\\d{3,}|ADR-\\d+)(?![A-Za-z0-9_])/g\nconst BACKTICK_MD_RE = /`([^`\\s]+\\.md)`/g\nconst LINK_MD_RE = /\\]\\(\\s*<?([^)\\s>#]+\\.md)(?:#[^)\\s]*)?>?\\s*\\)/g\n\nconst pad3 = (n: string) => String(Number(n)).padStart(3, '0')\n\n/** \"E1\" → \"E001\", \"ADR-4\" → \"ADR-004\"; task and roadmap ids are already padded. */\nfunction normalizeId(id: string): string {\n if (id.startsWith('ADR-')) return `ADR-${pad3(id.slice(4))}`\n if (id.startsWith('E')) return `E${pad3(id.slice(1))}`\n return id\n}\n\nconst normalizePath = (p: string) => p.replace(/\\\\/g, '/').replace(/^\\.?\\//, '')\n\n/** Item ids (E/T/R/ADR) and `*.md` paths (in backticks or as link targets) mentioned in `text`, deduplicated. */\nexport function extractRefs(text: string): { ids: string[]; paths: string[] } {\n const ids = new Set<string>()\n for (const m of text.matchAll(ID_RE)) {\n if (/^E0+$/.test(m[1])) continue // E0 is not an entry id\n ids.add(normalizeId(m[1]))\n }\n const paths = new Set<string>()\n for (const re of [BACKTICK_MD_RE, LINK_MD_RE]) {\n for (const m of text.matchAll(re)) {\n if (/^[a-z]+:\\/\\//i.test(m[1])) continue // external URL\n paths.add(normalizePath(m[1]))\n }\n }\n return { ids: [...ids], paths: [...paths] }\n}\n\n/** Classify a non-entry markdown file by path. Label = its H1 without the \"ID: \" prefix, else the file name. */\nexport function fileNode(relPath: string, raw: string): GraphNode {\n const p = normalizePath(relPath)\n const name = p.split('/').pop() ?? p\n const h1 = /^#\\s+(.+?)\\s*$/m.exec(raw)?.[1] ?? ''\n const label = (id: string) => h1.replace(new RegExp(`^${id}\\\\s*[:—–-]\\\\s*`), '') || name.replace(/\\.md$/, '')\n let m: RegExpExecArray | null\n if ((m = /^plans\\/tasks\\/(T\\d{3,})[^/]*\\.md$/.exec(p))) return { id: m[1], kind: 'task', label: label(m[1]), path: p }\n if ((m = /^plans\\/roadmap\\/(R\\d{3,})[^/]*\\.md$/.exec(p))) return { id: m[1], kind: 'epic', label: label(m[1]), path: p }\n if ((m = /(?:^|\\/)(ADR-\\d+)[^/]*\\.md$/.exec(p))) {\n const id = normalizeId(m[1])\n return { id, kind: 'adr', label: label(m[1]), path: p }\n }\n return { id: p, kind: 'doc', label: h1 || name.replace(/\\.md$/, ''), path: p }\n}\n\n/**\n * Resolve refs into a graph. Unresolved refs, self-links and duplicate edges are dropped.\n * Nodes = every entry + every other item that touches an entry.\n */\nexport function buildGraph(entries: GraphItem[], others: GraphItem[]): MemoryGraph {\n const all = [...entries, ...others]\n const byId = new Map(all.map(n => [n.id, n]))\n const byPath = new Map(all.map(n => [n.path, n]))\n const entryIds = new Set(entries.map(e => e.id))\n const edges = new Map<string, GraphEdge>()\n const add = (from: string, to: string) => { if (from !== to) edges.set(`${from}\\u0000${to}`, { from, to }) }\n\n for (const e of entries) {\n const { ids, paths } = extractRefs(e.text)\n for (const id of ids) if (byId.has(id)) add(e.id, id)\n for (const p of paths) { const n = byPath.get(p); if (n) add(e.id, n.id) }\n }\n // incoming: other files that mention an entry id (not the whole doc-to-doc graph)\n for (const o of others) {\n for (const id of extractRefs(o.text).ids) if (entryIds.has(id)) add(o.id, id)\n }\n\n const touched = new Set(entryIds)\n for (const e of edges.values()) { touched.add(e.from); touched.add(e.to) }\n const nodes = all.filter(n => touched.has(n.id)).map(({ text: _, ...n }) => n)\n return { nodes, edges: [...edges.values()] }\n}\n\n/** One entry, its direct neighbours and the edges between it and them. Unknown id → empty graph. */\nexport function neighbourhood(graph: MemoryGraph, id: string): MemoryGraph {\n if (!graph.nodes.some(n => n.id === id)) return { nodes: [], edges: [] }\n const edges = graph.edges.filter(e => e.from === id || e.to === id)\n const keep = new Set([id, ...edges.flatMap(e => [e.from, e.to])])\n return { nodes: graph.nodes.filter(n => keep.has(n.id)), edges }\n}\n\n/**\n * \"Links: …\" / \"Linked from: …\" lines for one entry (vibedoc_get_entries). A line with nothing is left out;\n * each is capped at `cap` items plus \"+N more\", so a hub entry stays short.\n */\nexport function formatEntryLinks(graph: MemoryGraph, id: string, cap = 10): string[] {\n const line = (label: string, ids: string[]) => {\n if (!ids.length) return []\n const more = ids.length > cap ? `, +${ids.length - cap} more` : ''\n return [`${label}: ${ids.slice(0, cap).join(', ')}${more}`]\n }\n return [\n ...line('Links', graph.edges.filter(e => e.from === id).map(e => e.to)),\n ...line('Linked from', graph.edges.filter(e => e.to === id).map(e => e.from)),\n ]\n}\n\nexport const GRAPH_COL_W = 240\nexport const GRAPH_ROW_H = 48\n/** Column per kind: epics and tasks left of the entries, ADRs and docs right of them. */\nconst GRAPH_COL: Record<NodeKind, number> = { epic: -2, task: -1, entry: 0, adr: 1, doc: 2 }\n\n/**\n * Deterministic positions for the graph view (no layout library, no saved positions): entries stacked in the\n * centre column (sorted by type, then id), every other node in its kind's column at the average y of the\n * entries it links with, pushed down to keep one row of space. Same graph → same positions on every load.\n */\nexport function graphLayout(graph: MemoryGraph, entryType: Record<string, string> = {}): Record<string, { x: number; y: number }> {\n const pos: Record<string, { x: number; y: number }> = {}\n const num = (id: string) => Number(id.replace(/\\D/g, '')) || 0\n const entries = graph.nodes.filter(n => n.kind === 'entry')\n .sort((a, b) => (entryType[a.id] ?? '').localeCompare(entryType[b.id] ?? '') || num(a.id) - num(b.id))\n entries.forEach((e, i) => { pos[e.id] = { x: 0, y: i * GRAPH_ROW_H } })\n\n const neighbourYs = new Map<string, number[]>()\n for (const { from, to } of graph.edges) {\n for (const [other, entry] of [[from, to], [to, from]]) {\n if (pos[entry] && !pos[other]) neighbourYs.set(other, [...(neighbourYs.get(other) ?? []), pos[entry].y])\n }\n }\n for (const kind of ['epic', 'task', 'adr', 'doc'] as const) {\n const col = graph.nodes.filter(n => n.kind === kind).map(n => {\n const ys = neighbourYs.get(n.id) ?? [0]\n return { id: n.id, want: ys.reduce((a, b) => a + b, 0) / ys.length }\n }).sort((a, b) => a.want - b.want || a.id.localeCompare(b.id, 'en', { numeric: true }))\n let next = -Infinity\n for (const { id, want } of col) {\n const y = Math.max(want, next)\n pos[id] = { x: GRAPH_COL[kind] * GRAPH_COL_W, y }\n next = y + GRAPH_ROW_H\n }\n }\n return pos\n}\n","// Pure doc link graph (R056, no fs): resolved links between every .md file, derived from text, never stored.\n// Self-check: node src/lib/doc-links.check.mts. Regexes and labels are copied from memory-graph.ts (pure libs\n// never import values from each other), but here relative `./` and `../` targets are resolved.\n\nexport type DocNodeKind = 'doc' | 'adr' | 'task' | 'epic' | 'entry'\n/** `status` / `owner` are set on task and epic nodes by GET /api/docs/graph, never by docNode(). */\nexport type DocNode = { id: string; kind: DocNodeKind; label: string; path: string; status?: string; owner?: string | null }\nexport type LinkKind = 'md' | 'wiki' | 'code' | 'id'\n/** `context`: the sentence around the link (or the heading above it), set only when the link text is just the target. */\nexport type DocLink = { target: string; kind: LinkKind; line: number; text: string; context?: string }\n/** One file as the graph needs it: its node and its raw (unresolved) links. core.ts caches this per file. */\nexport type DocItem = { node: DocNode; links: DocLink[] }\nexport type DocEdge = { from: string; to: string; line: number; text: string; context?: string }\nexport type BrokenLink = { from: string; target: string; line: number; text: string; kind: LinkKind }\n/** Raw link target as written in a file → the file it resolves to (self-links included). Keyed by source path. */\nexport type ResolvedTargets = Record<string, Record<string, string>>\n/** `broken`: md / wiki links that point nowhere. `stale`: backticked paths (`code`) to a file that doesn't exist. */\nexport type DocGraph = { nodes: DocNode[]; edges: DocEdge[]; broken: BrokenLink[]; stale: BrokenLink[]; targets: ResolvedTargets }\n/** `status`: a linked task's or epic's status, set by GET /api/docs/links (as on graph nodes), never by docLinks(). */\nexport type LinkRow = { path: string; kind: string; label: string; line: number; text: string; context?: string; status?: string }\n\n// Upper case only, whole tokens: \"XT0651\", \"e2e\" and \"T0651a\" don't match\nconst ID_RE = /(?<![A-Za-z0-9_-])(E\\d+|T\\d{3,}|R\\d{3,}|ADR-\\d+)(?![A-Za-z0-9_])/g\nconst ID_ONLY_RE = /^(E\\d+|T\\d{3,}|R\\d{3,}|ADR-\\d+)$/\nconst BACKTICK_MD_RE = /`([^`\\s]+\\.md)`/g\nconst LINK_MD_RE = /\\[([^\\]]*)\\]\\(\\s*<?([^)\\s>#]+\\.md)(?:#[^)\\s]*)?>?(?:\\s+\"[^\"]*\"|\\s+'[^']*')?\\s*\\)/g\nconst FENCE_RE = /^\\s*(`{3,}|~{3,})/\nconst INLINE_CODE_RE = /(`+)[^`]*?\\1/g\n\n/** Targets are keyed decoded (`my%20doc.md` → `my doc.md`), as the client looks them up after marked encodes. */\nconst decode = (t: string) => { try { return decodeURI(t) } catch { return t } }\n/** A source line as plain prose: list / heading / checkbox markers, link syntax, code ticks and emphasis removed. */\nconst plainLine = (l: string) => l\n .replace(/^\\s*(?:#{1,6}|>|[-*+]|\\d+\\.)\\s+(?:\\[[ xX]\\]\\s+)?/, '')\n .replace(/\\[\\[([^\\]|#]+)(?:#[^\\]|]*)?(?:\\|([^\\]]+))?\\]\\]/g, (_, a, b) => b ?? a)\n .replace(/\\[([^\\]]*)\\]\\([^)]*\\)/g, '$1')\n .replace(/`|\\*\\*|__/g, '')\n .trim()\n\n/** The sentence of `line` that holds `text`, minus a leading `text:`; the heading above when the line is only the link. */\nfunction linkContext(line: string, text: string, heading: string): string {\n const sentence = plainLine(line).split(/(?<=[.!?])\\s+/).find(s => s.includes(text)) ?? ''\n const rest = (sentence.startsWith(text) ? sentence.slice(text.length).replace(/^[\\s:,;–—-]+/, '') : sentence).trim()\n return (/[A-Za-z]{3}/.test(rest.replace(text, '')) ? rest : heading).slice(0, 200)\n}\n\n/**\n * A target written as a template, never a file: `<slug>`, `{id}`, globs, `…` / `...`, and `T00N` / `NNN` / `XXX` /\n * `YYYY` tokens (`plans/tasks/T<NNN>-<slug>.md`, `docs/meetings/YYYY-MM-DD.md`). Skipped at extraction.\n */\nconst PLACEHOLDER_RE = /[<>{}*?…]|\\.\\.\\.|(?:^|[^A-Za-z0-9])(?:[A-Z]?0+N|N{2,}|X{3,}|YYYY)(?![A-Za-z0-9])/\n/**\n * Names that teach link syntax in specs (`[text](path.md)`, `[[name]]`, `[[wikilinks]]`, `docs/a/x.md`): the whole\n * file name is one of these, or the rest after an item id (`T001-x.md`, `ADR-001-title.md`). Only ever drops a miss,\n * so a real `x.md` still links. Never a `-` part of a longer name: `user-name.md` and `plan-b.md` are real misses.\n * `missing` is deliberately not here: e2e fixtures use it for a real broken link.\n */\nconst EXAMPLE_NAMES = new Set(['a', 'b', 'c', 'x', 'y', 'z', 'path', 'name', 'slug', 'title', 'foo', 'bar', 'wikilinks', 'example'])\nexport function isExampleTarget(target: string): boolean {\n const name = (target.split('/').pop() ?? '').replace(/\\.md$/i, '').replace(/^(?:ADR-\\d+|[TRE]\\d+)-/, '')\n return EXAMPLE_NAMES.has(name.toLowerCase())\n}\n\nconst WIKI_RE = /\\[\\[([^\\]|#]+)(?:#[^\\]|]*)?(?:\\|([^\\]]+))?\\]\\]/g\nconst EXTERNAL_RE = /^(?:[a-z][a-z0-9+.-]*:|\\/\\/)/i\n\nconst pad3 = (n: string) => String(Number(n)).padStart(3, '0')\n\n/** \"E1\" → \"E001\", \"ADR-4\" → \"ADR-004\"; task and roadmap ids are already padded. */\nfunction normalizeId(id: string): string {\n if (id.startsWith('ADR-')) return `ADR-${pad3(id.slice(4))}`\n if (id.startsWith('E')) return `E${pad3(id.slice(1))}`\n return id\n}\n\n/** Posix-normalize: backslashes, `.` and `..` segments, leading `./` or `/`. Escaping above the root → null. */\nfunction normalizePath(p: string): string | null {\n const out: string[] = []\n for (const seg of p.replace(/\\\\/g, '/').split('/')) {\n if (!seg || seg === '.') continue\n if (seg === '..') { if (!out.length) return null; out.pop() } else out.push(seg)\n }\n return out.join('/')\n}\n\nconst dirOf = (p: string) => p.includes('/') ? p.slice(0, p.lastIndexOf('/')) : ''\nconst baseName = (p: string) => (p.split('/').pop() ?? p).replace(/\\.md$/i, '')\n\n/** The item id a file stands for (T093, R056, E001, ADR-004), from its path; null for a plain doc. */\nfunction idOfPath(p: string): string | null {\n const m = /^plans\\/tasks\\/(T\\d{3,})[^/]*\\.md$/.exec(p) ?? /^plans\\/roadmap\\/(R\\d{3,})[^/]*\\.md$/.exec(p)\n ?? /^memory\\/entries\\/(E\\d+)[^/]*\\.md$/.exec(p) ?? /(?:^|\\/)(ADR-\\d+)[^/]*\\.md$/.exec(p)\n return m ? normalizeId(m[1]) : null\n}\n\n/** Inline markdown → plain text for a label: images and links keep their text, emphasis / code marks go. */\nfunction plainText(md: string): string {\n return md\n .replace(/!?\\[([^\\]]*)\\]\\([^)]*\\)/g, '$1')\n .replace(/\\[\\[([^\\]|]+)(?:\\|([^\\]]+))?\\]\\]/g, (_, t: string, alias?: string) => alias ?? t)\n .replace(/(\\*\\*|\\*|~~|`)(\\S(?:.*?\\S)?)\\1/g, '$2')\n .replace(/(^|\\W)(__|_)(\\S(?:.*?\\S)?)\\2(?=\\W|$)/g, '$1$3') // _em_, never snake_case\n .replace(/<[^>]+>/g, '')\n .trim()\n}\n\n/**\n * Classify a markdown file by path. Label = its H1 without the \"ID: \" prefix, else the file name. An H1 that reads as\n * a sentence (ends in . or !, like AGENTS.md's \"See CLAUDE.md — this file mirrors it…\") is prose, not a title.\n */\nexport function docNode(relPath: string, raw: string): DocNode {\n const p = normalizePath(relPath) ?? relPath\n const name = baseName(p)\n const heading = plainText(/^#\\s+(.+?)\\s*$/m.exec(raw)?.[1] ?? '')\n const h1 = /[^.][.!]$/.test(heading) ? '' : heading\n const label = (id: string) => h1.replace(new RegExp(`^${id}\\\\s*[:—–-]\\\\s*`), '') || name\n let m: RegExpExecArray | null\n if ((m = /^plans\\/tasks\\/(T\\d{3,})[^/]*\\.md$/.exec(p))) return { id: m[1], kind: 'task', label: label(m[1]), path: p }\n if ((m = /^plans\\/roadmap\\/(R\\d{3,})[^/]*\\.md$/.exec(p))) return { id: m[1], kind: 'epic', label: label(m[1]), path: p }\n if ((m = /^memory\\/entries\\/(E\\d+)[^/]*\\.md$/.exec(p))) return { id: normalizeId(m[1]), kind: 'entry', label: label(m[1]), path: p }\n if ((m = /(?:^|\\/)(ADR-\\d+)[^/]*\\.md$/.exec(p))) return { id: normalizeId(m[1]), kind: 'adr', label: label(m[1]), path: p }\n return { id: p, kind: 'doc', label: h1 || name, path: p }\n}\n\n/**\n * Links in `raw`, in order, with 1-based line numbers. Lines inside ``` / ~~~ fences and external URLs are skipped;\n * md and wiki links inside inline code spans too. Indented code blocks are not detected (nested lists look alike).\n */\nexport function extractLinks(raw: string, _fromPath?: string): DocLink[] {\n const links: DocLink[] = []\n let fence = '' // the opening marker while inside a fence\n let heading = ''\n raw.replace(/\\r\\n/g, '\\n').split('\\n').forEach((l, i) => {\n const f = FENCE_RE.exec(l)?.[1]\n if (f && (!fence || (f[0] === fence[0] && f.length >= fence.length))) { fence = fence ? '' : f; return }\n if (fence) return\n const line = i + 1\n const from = links.length\n const prose = l.replace(INLINE_CODE_RE, m => ' '.repeat(m.length))\n for (const m of prose.matchAll(LINK_MD_RE)) {\n // text from the original line (same offsets): [`code`](x.md) keeps its label\n const text = l.slice(m.index + 1, m.index + 1 + m[1].length)\n if (!EXTERNAL_RE.test(m[2]) && !PLACEHOLDER_RE.test(m[2])) links.push({ target: decode(m[2]), kind: 'md', line, text: text || m[2] })\n }\n for (const m of prose.matchAll(WIKI_RE)) {\n const target = decode(m[1].trim())\n if (target && !EXTERNAL_RE.test(target) && !PLACEHOLDER_RE.test(target)) links.push({ target, kind: 'wiki', line, text: (m[2] ?? target).trim() })\n }\n for (const m of l.matchAll(BACKTICK_MD_RE)) {\n // a glob (`memory/entries/E*.md`) or a template (`E001-<slug>.md`) names a pattern, not a file\n if (!EXTERNAL_RE.test(m[1]) && !PLACEHOLDER_RE.test(m[1])) links.push({ target: decode(m[1]), kind: 'code', line, text: m[1] })\n }\n for (const m of l.matchAll(ID_RE)) {\n if (/^E0+$/.test(m[1])) continue // E0 is not an entry id\n links.push({ target: normalizeId(m[1]), kind: 'id', line, text: m[1] })\n }\n // a bare link (text = target) says nothing by itself: carry the sentence it sits in\n for (const k of links.slice(from)) if (k.text === k.target) {\n const context = linkContext(l, k.text, heading)\n if (context) k.context = context\n }\n if (/^#{1,6}\\s/.test(l)) heading = plainLine(l)\n })\n return links\n}\n\ntype PathIndex = { set: Set<string>; byBase: Map<string, string[]>; byId: Map<string, string> }\nconst indexCache = new WeakMap<readonly string[], PathIndex>()\n\nfunction indexOf(allPaths: readonly string[]): PathIndex {\n let idx = indexCache.get(allPaths)\n if (idx) return idx\n idx = { set: new Set(allPaths), byBase: new Map(), byId: new Map() }\n for (const p of allPaths) {\n const b = baseName(p).toLowerCase()\n idx.byBase.set(b, [...(idx.byBase.get(b) ?? []), p])\n const id = idOfPath(p)\n if (id && !idx.byId.has(id)) idx.byId.set(id, p)\n }\n indexCache.set(allPaths, idx)\n return idx\n}\n\n/** Files named exactly `t` (case-insensitive, `.md` added when missing), anywhere in the repo. */\nfunction bareHits(t: string, idx: PathIndex): string[] {\n const file = (/\\.md$/i.test(t) ? t : `${t}.md`).toLowerCase()\n return (idx.byBase.get(baseName(file)) ?? []).filter(p => (p.split('/').pop() ?? '').toLowerCase() === file)\n}\n\n/**\n * The file a link points at, or null (broken). Paths: relative to the source folder, then root-relative.\n * An explicit `./` or `../` never falls back to the root. Wikilinks: by basename without `.md`, same folder first,\n * then the shortest path; [[T093]] / [[E1]] go to the item's file first. Ids: the item's file.\n * `target` is taken as written, already decoded (extractLinks decodes).\n * `kind` is inferred when left out: an id token → id, no `.md` → wiki, else a path.\n * Paths: a leading `@` (Claude include, `@docs/HLD.md`) is dropped. A backticked bare name (`MEMORY.md`) that is in\n * neither folder resolves when exactly one file in the repo has that name; an md link never does.\n */\nexport function resolveLink(target: string, fromPath: string, allPaths: readonly string[], kind?: LinkKind): string | null {\n const idx = indexOf(allPaths)\n const k = kind ?? (ID_ONLY_RE.test(target) ? 'id' : /\\.md$/i.test(target) ? 'md' : 'wiki')\n if (k === 'id') return idx.byId.get(normalizeId(target)) ?? null\n\n if (k === 'wiki' && ID_ONLY_RE.test(target)) {\n const byId = idx.byId.get(normalizeId(target))\n if (byId) return byId\n }\n const t = k === 'wiki' ? target : target.replace(/^@(?=[^/@])/, '')\n const explicitRel = /^\\.\\.?\\//.test(t)\n const from = normalizePath(fromPath) ?? fromPath\n const tryPath = (p: string) => {\n const cands = [p, /\\.md$/i.test(p) ? null : `${p}.md`].filter((c): c is string => !!c)\n for (const c of cands) {\n const rel = t.startsWith('/') ? null : normalizePath(`${dirOf(from)}/${c}`)\n if (rel !== null && idx.set.has(rel)) return rel\n if (explicitRel) continue\n const abs = normalizePath(c)\n if (abs !== null && idx.set.has(abs)) return abs\n }\n return null\n }\n if (k !== 'wiki') {\n // a link must work as written (it does on GitHub too); a backticked mention only has to name the file\n const hits = k !== 'code' || t.includes('/') ? [] : bareHits(t, idx)\n return tryPath(t) ?? (hits.length === 1 ? hits[0] : null)\n }\n\n // wikilink: an exact path first ([[docs/HLD]]), then by basename\n const exact = t.includes('/') ? tryPath(t) : null\n if (exact) return exact\n const name = baseName(t).toLowerCase()\n const suffix = t.includes('/') ? `/${t.replace(/\\.md$/i, '').toLowerCase()}.md` : null\n const hits = (idx.byBase.get(name) ?? []).filter(p => !suffix || `/${p.toLowerCase()}`.endsWith(suffix))\n if (!hits.length) return null\n const dir = dirOf(from)\n return hits.find(p => dirOf(p) === dir)\n ?? [...hits].sort((a, b) => a.split('/').length - b.split('/').length || a.length - b.length || a.localeCompare(b))[0]\n}\n\n/**\n * Resolve every item's links. One edge per from→to pair (first line wins), self-links dropped. Misses: md / wiki\n * links → broken, backticked paths → stale (a mention of a moved or planned file, not a link).\n * Not misses: a target that exists among `otherPaths` (files outside the graph, e.g. `.claude/**`; no node, no edge),\n * a backticked bare name several files share (it exists, just not one file), and a syntax example (`isExampleTarget`).\n */\nexport function buildDocGraph(items: DocItem[], otherPaths: readonly string[] = []): DocGraph {\n const allPaths = items.map(i => i.node.path)\n const known = [...allPaths, ...otherPaths]\n const exists = (l: DocLink, from: string) => resolveLink(l.target, from, known, l.kind) !== null\n || (l.kind === 'code' && !l.target.includes('/') && bareHits(l.target, indexOf(known)).length > 0)\n const edges = new Map<string, DocEdge>()\n const broken = new Map<string, BrokenLink>()\n const stale = new Map<string, BrokenLink>()\n const targets: ResolvedTargets = {}\n for (const { node, links } of items) {\n for (const l of links) {\n const to = resolveLink(l.target, node.path, allPaths, l.kind)\n if (to !== null) (targets[node.path] ??= {})[l.target] ??= to\n if (to === node.path) continue\n if (to === null) {\n // an id with no file (T999, a typo) is just text, not a broken link\n if (l.kind === 'id' || isExampleTarget(l.target) || exists(l, node.path)) continue\n const key = `${node.path}\\u0000${l.target}`\n const misses = l.kind === 'code' ? stale : broken\n if (!misses.has(key)) misses.set(key, { from: node.path, target: l.target, line: l.line, text: l.text, kind: l.kind })\n continue\n }\n const key = `${node.path}\\u0000${to}`\n if (!edges.has(key)) edges.set(key, { from: node.path, to, line: l.line, text: l.text, ...(l.context && { context: l.context }) })\n }\n }\n return { nodes: items.map(i => i.node), edges: [...edges.values()], broken: [...broken.values()], stale: [...stale.values()], targets }\n}\n\n/** The kinds /graph shows when its URL names none. */\nexport const GRAPH_DEFAULT_KINDS: readonly DocNodeKind[] = ['doc', 'adr']\n\n/** /graph selected on one file with Focus 1 (\"Show in graph\"); a task, epic or entry also turns its kind on. */\nexport function graphHref(path: string): string {\n const p = new URLSearchParams({ node: path, focus: '1' })\n const kind = docNode(path, '').kind\n if (!GRAPH_DEFAULT_KINDS.includes(kind)) p.set('kinds', [...GRAPH_DEFAULT_KINDS, kind].join(','))\n return `/graph?${p}`\n}\n\nexport type TargetRow = { path: string; kind: DocNodeKind; id: string; label: string }\n\n/**\n * Links out of, into, broken and stale paths in one file; null when the path is not in the graph.\n * `targets` maps each raw target written in the file (`../b/y.md`, `DOMAIN_MAP`, `T093`) to its node, so a client\n * can open a clicked link without resolving paths itself. A target in both `targets` and `broken` resolved.\n */\nexport function docLinks(graph: DocGraph, path: string): { out: LinkRow[]; in: LinkRow[]; broken: LinkRow[]; stale: LinkRow[]; targets: Record<string, TargetRow> } | null {\n const p = normalizePath(path) ?? path\n const byPath = new Map(graph.nodes.map(n => [n.path, n]))\n if (!byPath.has(p)) return null\n const row = (other: string, e: DocEdge): LinkRow => {\n const n = byPath.get(other)\n return { path: other, kind: n?.kind ?? 'doc', label: n?.label ?? baseName(other), line: e.line, text: e.text, ...(e.context && { context: e.context }) }\n }\n const miss = (b: BrokenLink): LinkRow => ({ path: b.target, kind: b.kind, label: b.target, line: b.line, text: b.text })\n return {\n out: graph.edges.filter(e => e.from === p).map(e => row(e.to, e)),\n in: graph.edges.filter(e => e.to === p).map(e => row(e.from, e)),\n broken: graph.broken.filter(b => b.from === p).map(miss),\n stale: graph.stale.filter(b => b.from === p).map(miss),\n targets: Object.fromEntries(Object.entries(graph.targets[p] ?? {}).map(([t, to]) => {\n const n = byPath.get(to)\n return [t, { path: to, kind: n?.kind ?? 'doc', id: n?.id ?? to, label: n?.label ?? baseName(to) }]\n })),\n }\n}\n\n/**\n * Footer for vibedoc_read_doc (T096): the files a doc links to and is linked from, each named so an agent can\n * pass it straight to a tool (tasks, epics, entries, ADRs by id; docs by path). Empty string when no links.\n */\nexport function formatRelatedFiles(links: { out: LinkRow[]; in: LinkRow[]; broken: LinkRow[]; stale?: LinkRow[] } | null, cap = 10): string {\n if (!links) return ''\n const name = (r: LinkRow) => idOfPath(r.path) ?? r.path\n const line = (label: string, items: string[]) => {\n if (!items.length) return []\n const more = items.length > cap ? ` (+${items.length - cap} more)` : ''\n return [`${label}: ${items.slice(0, cap).join(' · ')}${more}`]\n }\n const body = [\n ...line('Links to', links.out.map(name)),\n ...line('Linked from', links.in.map(r => `${name(r)} (L${r.line})`)),\n ...line('Broken', links.broken.map(r => `${r.path} (L${r.line})`)),\n ...line('Stale paths', (links.stale ?? []).map(r => `${r.path} (L${r.line})`)),\n ]\n if (!body.length) return ''\n return ['## Related files', ...body, 'Read with vibedoc_read_doc, or several at once with vibedoc_get_context { paths }.'].join('\\n')\n}\n\n/** The parts of an activity event (core's ActivityEvent) that say which file it touched. */\nexport type TouchEvent = { timestamp: string; type: string; title: string; detail?: string; taskId?: string }\nconst TOUCH_ID_RE = /^(?:Entry )?(E\\d+|T\\d{3,}|R\\d{3,}|ADR-\\d+)\\b/\nconst DOC_EVENTS = new Set(['doc_updated', 'doc_created'])\n\n/**\n * Paths of the files an agent or a human changed since `since` (ms), from the activity log (T110 \"Recent\"): task\n * moves and edits (taskId), epics / entries / ADRs (the id leading the title), doc edits and creates (detail = path),\n * a rename's new path and the session handoff (memory/MEMORY.md). Events for files that no longer exist drop out.\n */\nexport function touchedPaths(events: readonly TouchEvent[], nodes: readonly DocNode[], since: number): Set<string> {\n const byKey = new Map<string, string>()\n for (const n of nodes) { byKey.set(n.id, n.path); byKey.set(n.path, n.path) }\n const out = new Set<string>()\n for (const e of events) {\n if (!(Date.parse(e.timestamp) >= since)) continue\n const keys = [e.taskId, TOUCH_ID_RE.exec(e.title)?.[1]]\n if (DOC_EVENTS.has(e.type)) keys.push(e.detail)\n if (e.type === 'doc_renamed') keys.push(e.title.split(' → ')[1])\n if (e.type === 'memory_updated' && !e.title.startsWith('Entry ')) keys.push('memory/MEMORY.md')\n for (const k of keys) {\n const p = k ? byKey.get(k.trim()) : undefined\n if (p) out.add(p)\n }\n }\n return out\n}\n","// Pure memory health checks (R051, no fs): memory that contradicts the board, or names items that don't exist.\n// Self-check: node src/lib/memory-health.check.mts\n\nexport type HealthKind = 'contradiction' | 'dangling-ref' | 'duplicate' | 'stale'\nexport type HealthFlag = {\n id: string // stable key, e.g. \"contradiction:working-on:T055\", used for dismissing\n kind: HealthKind\n severity: 'warn' | 'info'\n message: string // one line, shown as is in the UI and MCP output\n refs: string[] // item ids involved (T055, E012, …)\n suggestion?: { action: 'merge' | 'delete'; ids: string[] }\n}\nexport type BoardStatus = { id: string; status: string } // tasks + roadmap items\n/** Item ids mentioned in a text. core.ts passes memory-graph's extractRefs (pure libs don't import values from each other). */\nexport type RefsOf = (text: string) => string[]\n\ntype Section = 'working-on' | 'up-next' | 'just-completed'\n// MEMORY.md headings written by updateMemory(): \"## Working on now\", \"## Up next\", \"## Just completed\"\nconst SECTION_RE: [Section, RegExp][] = [\n ['working-on', /^working on\\b/i],\n ['up-next', /^up next\\b/i],\n ['just-completed', /^just completed\\b/i],\n]\nconst CLOSED = new Set(['done', 'cancelled'])\nconst isBoardId = (id: string) => /^[TR]\\d/.test(id)\nconst isEntryId = (id: string) => /^E\\d/.test(id)\n\n/** `## Heading` → body, in file order. Text before the first `##` is keyed ''. ``` fenced blocks are left out of every body. */\nexport function splitSections(markdown: string): { heading: string; body: string }[] {\n const out: { heading: string; body: string }[] = [{ heading: '', body: '' }]\n let inFence = false\n for (const line of markdown.split('\\n')) {\n // a fenced block is an example: neither its `##` lines (same rule as manual-tests.ts / review.ts) nor its ids count\n if (/^\\s*```/.test(line)) { inFence = !inFence; continue }\n if (inFence) continue\n const h = /^##\\s+(.+?)\\s*$/.exec(line)\n if (h) out.push({ heading: h[1], body: '' })\n else out[out.length - 1].body += line + '\\n'\n }\n return out\n}\n\n/** Text without ``` fenced blocks and `inline code`: ids in code are examples (`/board?task=T055`), not mentions. */\nexport function prose(text: string): string {\n let inFence = false\n return text.split('\\n').filter(line => {\n if (/^\\s*```/.test(line)) { inFence = !inFence; return false }\n return !inFence\n }).join('\\n').replace(/`[^`\\n]*`/g, '')\n}\n\nconst sectionOf = (heading: string): Section | undefined => SECTION_RE.find(([, re]) => re.test(heading))?.[0]\n\nexport function findContradictions(\n handoff: string,\n entries: { id: string; body: string; summary: string }[],\n board: BoardStatus[],\n refsOf: RefsOf,\n others: { id: string; text: string }[] = [],\n): HealthFlag[] {\n const status = new Map(board.map(b => [b.id, b.status]))\n const entryIds = new Set(entries.map(e => e.id))\n const flags = new Map<string, HealthFlag>()\n const add = (f: HealthFlag) => { if (!flags.has(f.id)) flags.set(f.id, f) }\n const dangling = (source: string, who: string, text: string, kinds: { board: boolean; entry: boolean }) => {\n for (const id of refsOf(prose(text))) {\n const missing = (kinds.board && isBoardId(id) && !status.has(id)) || (kinds.entry && isEntryId(id) && !entryIds.has(id))\n if (missing) add({ id: `dangling-ref:${source}:${id}`, kind: 'dangling-ref', severity: 'info', message: `${who} mentions ${id}, which doesn't exist`, refs: [id] })\n }\n }\n // a project without entries has no merged/deleted ids to point at; its E-ids are format examples, so skip them\n const entryRefs = entryIds.size > 0\n\n for (const { heading, body } of splitSections(handoff)) {\n dangling('handoff', 'Handoff', body, { board: true, entry: entryRefs })\n const section = sectionOf(heading)\n if (!section) continue\n for (const id of refsOf(prose(body)).filter(isBoardId)) {\n const s = status.get(id)\n if (s === undefined) continue\n if (section === 'just-completed') {\n // epics named here are usually context (\"T117 of R051\"), so only tasks must be done\n if (id.startsWith('T') && s !== 'done') {\n add({ id: `contradiction:${section}:${id}`, kind: 'contradiction', severity: 'warn', message: `Handoff says ${id} is done, but it is ${s}`, refs: [id] })\n }\n } else if (CLOSED.has(s)) {\n const says = section === 'working-on' ? 'in progress' : 'up next'\n add({ id: `contradiction:${section}:${id}`, kind: 'contradiction', severity: 'warn', message: `Handoff says ${id} is ${says}, but it is ${s}`, refs: [id] })\n }\n }\n }\n // done tasks in entries are fine (long-lived facts); only missing ids are flagged\n for (const e of entries) dangling(e.id, e.id, `${e.summary}\\n${e.body}`, { board: true, entry: true })\n // tasks, roadmap items and docs that still name a merged or deleted entry (R051): those links now point nowhere\n if (entryRefs) for (const o of others) dangling(o.id, o.id, o.text, { board: false, entry: true })\n\n return [...flags.values()].sort((a, b) =>\n (a.severity === b.severity ? 0 : a.severity === 'warn' ? -1 : 1) ||\n a.refs[0].localeCompare(b.refs[0], 'en', { numeric: true }) ||\n a.id.localeCompare(b.id, 'en', { numeric: true }))\n}\n\nexport const MAX_SESSION_WARNINGS = 5\n\n/** The block vibedoc_read_memory shows under the handoff: warn flags (max 5), else one info line, else ''. */\nexport function formatHealthWarnings(flags: HealthFlag[]): string {\n const warns = flags.filter(f => f.severity === 'warn')\n if (!warns.length) {\n const n = flags.length\n return n ? `ℹ ${n} memory cleanup ${n === 1 ? 'suggestion' : 'suggestions'} on /memory` : ''\n }\n const more = warns.length - MAX_SESSION_WARNINGS\n return ['## ⚠ Memory warnings', ...warns.slice(0, MAX_SESSION_WARNINGS).map(f => `- ⚠ ${f.message}`),\n ...(more > 0 ? [`…and ${more} more on /memory`] : [])].join('\\n')\n}\n\n// ─── Duplicates ───────────────────────────────────────────────────────────────\n\nexport type DupEntry = { id: string; type: string; summary: string; body: string }\n/** recall.ts's tokenize, passed in by core.ts (pure libs don't import values from each other) so stopwords match recall. */\nexport type Tokenize = (s: string) => string[]\n\n// Threshold 0.5, picked with the self-check fixture: \"Only core.ts touches the file system\" / \"Only core.ts may touch fs\"\n// scores 0.57, near misses sharing one topic word (\"core.ts owns the activity log\") stay ≤ 0.25.\nexport const DUPLICATE_THRESHOLD = 0.5\nconst TYPE_PENALTY = 0.1\n// modal fillers that say nothing about the topic (\"may touch\" vs \"touches\")\nconst FILLER = new Set(['may', 'must', 'should'])\n// ponytail: suffix strip on top of recall's plural strip (\"touche\" → \"touch\"); a real stemmer if pairs slip through\nconst stem = (t: string) => (t.length > 4 ? t.replace(/(ing|ed|es|e)$/, '') : t)\n\nconst jaccard = (a: Set<string>, b: Set<string>) => {\n if (!a.size && !b.size) return 0\n let common = 0\n for (const t of a) if (b.has(t)) common++\n return common / (a.size + b.size - common)\n}\nconst byId = (a: string, b: string) => a.localeCompare(b, 'en', { numeric: true })\n\ntype DupSets = { type: string; summary: Set<string>; all: Set<string> }\nconst dupSets = (e: DupEntry, tokenize: Tokenize): DupSets => {\n const set = (s: string) => new Set(tokenize(s).map(stem).filter(t => !FILLER.has(t)))\n return { type: e.type, summary: set(e.summary), all: set(`${e.summary}\\n${e.body}`) }\n}\nconst scoreSets = (a: DupSets, b: DupSets) => {\n const score = 0.6 * jaccard(a.summary, b.summary) + 0.4 * jaccard(a.all, b.all)\n return a.type === b.type ? score : score - TYPE_PENALTY\n}\n\n/** 0.6·J(summary) + 0.4·J(summary + body), minus 0.1 when the types differ. */\nexport function duplicateScore(a: DupEntry, b: DupEntry, tokenize: Tokenize): number {\n return scoreSets(dupSets(a, tokenize), dupSets(b, tokenize))\n}\n\n/** Entries that say the same thing, grouped transitively (E1~E2, E2~E3 → one flag). Score shown = the strongest pair. */\nexport function findDuplicates(entries: DupEntry[], tokenize: Tokenize, opts: { threshold?: number } = {}): HealthFlag[] {\n const threshold = opts.threshold ?? DUPLICATE_THRESHOLD\n const parent = entries.map((_, i) => i)\n const find = (i: number): number => (parent[i] === i ? i : (parent[i] = find(parent[i])))\n const best = new Map<number, number>()\n const sets = entries.map(e => dupSets(e, tokenize)) // tokenize each entry once, not once per pair\n // ponytail: O(n²) pairs, fine up to a few hundred entries; bucket by shared summary token if memory grows past that\n for (let i = 0; i < entries.length; i++) {\n for (let j = i + 1; j < entries.length; j++) {\n const s = scoreSets(sets[i], sets[j])\n if (s < threshold) continue\n parent[find(j)] = find(i)\n best.set(i, Math.max(best.get(i) ?? 0, s))\n }\n }\n const groups = new Map<number, { ids: string[]; score: number }>()\n entries.forEach((e, i) => {\n const g = groups.get(find(i)) ?? { ids: [], score: 0 }\n g.ids.push(e.id)\n g.score = Math.max(g.score, best.get(i) ?? 0)\n groups.set(find(i), g)\n })\n return [...groups.values()].filter(g => g.ids.length > 1).map(({ ids, score }) => {\n ids.sort(byId)\n const names = ids.length === 2 ? ids.join(' and ') : `${ids.slice(0, -1).join(', ')} and ${ids[ids.length - 1]}`\n return {\n id: `duplicate:${ids.join('+')}`, kind: 'duplicate' as const, severity: 'info' as const,\n message: `${names} look like duplicates (${Math.round(score * 100)}%)`,\n refs: ids, suggestion: { action: 'merge' as const, ids },\n }\n }).sort((a, b) => byId(a.refs[0], b.refs[0]))\n}\n\n// ─── Not recalled lately ──────────────────────────────────────────────────────\n\n/** `memory/.recall-log.json`: entry id → the YYYY-MM-DD an agent last fetched its body (vibedoc_get_entries). */\nexport type RecallLog = Record<string, string>\nexport const STALE_DAYS = 60\n\n// local calendar dates, compared as UTC midnights so DST never shifts a day\nconst dayNumber = (d: string) => Date.UTC(+d.slice(0, 4), +d.slice(5, 7) - 1, +d.slice(8, 10)) / 86_400_000\nconst isDate = (d: string | undefined): d is string => !!d && /^\\d{4}-\\d{2}-\\d{2}$/.test(d)\n\n/**\n * Entries nobody has recalled in more than `days` days (default 60). Age = days since the last recall, or since\n * `updatedAt` when never recalled or edited after the last recall, so a brand-new or just-edited entry is never stale.\n */\nexport function findStale(\n entries: { id: string; updatedAt: string }[], recallLog: RecallLog, today: string, opts: { days?: number } = {},\n): HealthFlag[] {\n const days = opts.days ?? STALE_DAYS\n const flags: HealthFlag[] = []\n for (const e of entries) {\n const recalled = isDate(recallLog[e.id]) ? recallLog[e.id] : undefined\n const since = [recalled, isDate(e.updatedAt) ? e.updatedAt : undefined].filter(isDate).sort().pop()\n if (!since) continue\n const age = dayNumber(today) - dayNumber(since)\n if (age <= days) continue\n const ago = (d: string) => { const n = dayNumber(today) - dayNumber(d); return `${n} ${n === 1 ? 'day' : 'days'} ago` }\n flags.push({\n id: `stale:${e.id}`, kind: 'stale', severity: 'info',\n message: recalled ? `${e.id} last recalled ${ago(recalled)}` : `${e.id} never recalled (updated ${ago(since)})`,\n refs: [e.id], suggestion: { action: 'delete', ids: [e.id] },\n })\n }\n return flags.sort((a, b) => byId(a.refs[0], b.refs[0]))\n}\n\n/** The log after `ids` were recalled on `today`, or null when nothing changes (so the file isn't rewritten). Sorted keys. */\nexport function markRecalled(log: RecallLog, ids: string[], today: string): RecallLog | null {\n if (ids.every(id => log[id] === today)) return null\n return sortedLog({ ...log, ...Object.fromEntries(ids.map(id => [id, today])) })\n}\n\n/**\n * Dismissals without the flags that name an entry id that is gone (deleted or merged away), so a later entry that\n * reuses the id doesn't inherit them. Null when nothing changes. Flag ids: stale:E1, dangling-ref:E1:T9, duplicate:E1+E2.\n */\nexport function pruneDismissed(dismissed: Record<string, string>, goneIds: string[]): Record<string, string> | null {\n const gone = new Set(goneIds)\n const names = (flagId: string): string[] => {\n const i = flagId.indexOf(':')\n const kind = flagId.slice(0, i), rest = flagId.slice(i + 1)\n if (kind === 'stale') return [rest]\n if (kind === 'duplicate') return rest.split('+')\n if (kind === 'dangling-ref') return [rest.slice(0, rest.lastIndexOf(':')), rest.slice(rest.lastIndexOf(':') + 1)]\n return []\n }\n const kept = Object.entries(dismissed).filter(([f]) => !names(f).some(id => gone.has(id)))\n return kept.length === Object.keys(dismissed).length ? null : Object.fromEntries(kept)\n}\n\nexport const sortedLog = (log: RecallLog): RecallLog =>\n Object.fromEntries(Object.entries(log).sort(([a], [b]) => byId(a, b)))\n","// Pure MEMORY.md section merge (R045, no fs): vibedoc_update_memory rewrites only the sections it is given.\n// Self-check: node src/lib/memory-sections.check.mts\n\nexport type MemoryIssue = string | { issue: string; severity?: string; status?: string }\nexport interface MemoryParams {\n currentState?: string\n justCompleted?: string[]\n workingOn?: string\n upNext?: string[]\n issues?: MemoryIssue[]\n decisions?: string[]\n techDebt?: string[]\n handoff?: string\n}\n\nconst list = (v: unknown): unknown[] => Array.isArray(v) ? v : [v]\nconst bullets = (v: unknown, empty: string) => list(v).map(i => `- ${i}`).join('\\n') || empty\n\n/** Template order. Headings are matched by other code (memory-health.ts) — don't rename them. */\nexport const SECTIONS: [keyof MemoryParams, string, (v: unknown) => string][] = [\n ['currentState', 'Current state', v => String(v ?? '')],\n ['justCompleted', 'Just completed', v => bullets(v, '- (nothing this session)')],\n ['workingOn', 'Working on now', v => String(v ?? '') || '(nothing active)'],\n ['upNext', 'Up next', v => list(v).map((item, i) => `${i + 1}. ${item}`).join('\\n') || '1. (define next steps)'],\n ['issues', 'Active issues', v => '| Issue | Severity | Status |\\n|-------|----------|--------|\\n' + (list(v).map(i => {\n if (i && typeof i === 'object') {\n const o = i as { issue?: string; severity?: string; status?: string }\n return `| ${o.issue} | ${o.severity || 'medium'} | ${o.status || 'open'} |`\n }\n return `| ${i} | medium | open |`\n }).join('\\n') || '| None | — | — |')],\n ['decisions', 'Recent decisions', v => bullets(v, '- (none this session)')],\n ['techDebt', 'Tech debt', v => bullets(v, '- (none noted)')],\n ['handoff', 'Handoff for next session', v => String(v ?? '')],\n]\nexport const MEMORY_KEYS = SECTIONS.map(([k]) => k)\nconst EMPTY: Record<string, unknown> = { justCompleted: [], upNext: [], issues: [], decisions: [], techDebt: [] }\n\n/** `line` is the heading line without its newline; `body` is everything after it up to the next heading. */\nexport type MemorySection = { heading: string; line: string; body: string }\nexport type ParsedMemory = { preamble: string; sections: MemorySection[] }\n\n/** Per line: inside a fenced block (fence lines included)? Closes only on the same char (` or ~), at least as long. */\nfunction fenceFlags(lines: string[]): boolean[] {\n let fence = ''\n return lines.map(line => {\n const m = /^\\s*(`{3,}|~{3,})(.*?)\\r?\\n?$/.exec(line)\n if (!fence) {\n if (m) fence = m[1]\n return !!m\n }\n if (m && m[1][0] === fence[0] && m[1].length >= fence.length && !m[2].trim()) fence = ''\n return true\n })\n}\n\n/** Lossless: `joinMemory(parseMemory(md)) === md`. `## ` lines inside fences are not headings. */\nexport function parseMemory(md: string): ParsedMemory {\n const out: ParsedMemory = { preamble: '', sections: [] }\n const lines = md.split(/(?<=\\n)/)\n const fenced = fenceFlags(lines)\n lines.forEach((line, i) => {\n const text = line.replace(/\\r?\\n$/, '')\n const h = !fenced[i] && /^##\\s+(.+?)(?:\\s+#+)?\\s*$/.exec(text)\n if (h) out.sections.push({ heading: h[1], line: text, body: line.slice(text.length) })\n else if (out.sections.length) out.sections[out.sections.length - 1].body += line\n else out.preamble += line\n })\n return out\n}\n\n/** A passed value must not open a section of its own: `## ` lines outside fences become `### `. */\nfunction demoteHeadings(text: string): string {\n const lines = text.split(/(?<=\\n)/)\n const fenced = fenceFlags(lines)\n return lines.map((l, i) => fenced[i] ? l : l.replace(/^##(?=\\s)/, '###')).join('')\n}\n\nexport const joinMemory = (p: ParsedMemory) => p.preamble + p.sections.map(s => s.line + s.body).join('')\n\n/** Keys of `params` that name a known section (null/undefined = not passed). */\nexport const passedKeys = (params: MemoryParams) => MEMORY_KEYS.filter(k => params[k] != null)\n\n/**\n * New MEMORY.md: each passed field replaces its section's body; everything else stays byte-identical.\n * Missing sections are inserted in template order; an empty `current` renders the full template.\n * Throws when no known field is passed. `stamp` = \"YYYY-MM-DD at HH:MM\" (built by the caller).\n */\nexport function mergeMemory(current: string, params: MemoryParams, stamp: string): string {\n const keys = passedKeys(params)\n if (!keys.length) throw new Error(`Nothing to update: pass at least one of ${MEMORY_KEYS.join(', ')}`)\n const p = params as Record<string, unknown>\n\n if (!current.trim()) {\n return `# Project Memory\\n**Last updated:** ${stamp}\\n\\n` +\n SECTIONS.map(([k, h, render]) => `## ${h}\\n${demoteHeadings(render(p[k] ?? EMPTY[k]))}\\n`).join('\\n')\n }\n\n const doc = parseMemory(current)\n const find = (heading: string) => doc.sections.findIndex(s => s.heading.trim().toLowerCase() === heading.toLowerCase())\n SECTIONS.forEach(([k, heading, render], order) => {\n if (p[k] == null) return\n const content = demoteHeadings(render(p[k])).replace(/\\s+$/, '')\n const at = find(heading)\n if (at >= 0) {\n const s = doc.sections[at]\n const eol = s.body.startsWith('\\r\\n') ? '\\r\\n' : '\\n'\n s.body = `${eol}${content.replace(/\\r?\\n/g, eol)}${/(\\r?\\n)*$/.exec(s.body)?.[0] || eol}`\n return\n }\n // after the last template section before it; else before the first one after it; else at the end\n const before = SECTIONS.slice(0, order).map(([, h]) => find(h)).filter(i => i >= 0)\n const after = SECTIONS.slice(order + 1).map(([, h]) => find(h)).filter(i => i >= 0)\n const idx = before.length ? Math.max(...before) + 1 : after.length ? Math.min(...after) : doc.sections.length\n const last = idx === doc.sections.length\n // the text above the new heading must end in a blank line\n const eol = current.includes('\\r\\n') ? '\\r\\n' : '\\n'\n const prev = idx > 0 ? doc.sections[idx - 1] : null\n if (prev) prev.body = prev.body.replace(/(\\r?\\n)*$/, eol + eol)\n else if (doc.preamble) doc.preamble = doc.preamble.replace(/(\\r?\\n)*$/, eol + eol)\n doc.sections.splice(idx, 0, { heading, line: `## ${heading}`, body: `${eol}${content.replace(/\\r?\\n/g, eol)}${eol}${last ? '' : eol}` })\n })\n\n // stamp: replace **Last updated:**, else insert under the H1, else on top — never inside a fence\n const stampLine = `**Last updated:** ${stamp}`\n const pre = doc.preamble.split(/(?<=\\n)/)\n const fenced = fenceFlags(pre)\n const at = (re: RegExp) => pre.findIndex((l, i) => !fenced[i] && re.test(l))\n const last = at(/^\\*\\*Last updated:\\*\\*/), h1 = at(/^# /)\n if (last >= 0) pre[last] = stampLine + (/\\r?\\n$/.exec(pre[last])?.[0] ?? '')\n else if (h1 >= 0) pre[h1] = pre[h1].replace(/(\\r?\\n)?$/, eol => `${eol || '\\n'}${stampLine}${eol}`)\n else pre.unshift(`${stampLine}\\n`)\n doc.preamble = pre.join('')\n return joinMemory(doc)\n}\n","// Pure keyword recall over knowledge entries (R048, no fs). Self-check: node src/lib/recall.check.mts\n// Index first, bodies on request: agents get compact lines here and fetch bodies with vibedoc_get_entries.\n\nexport type RecallEntry = { id: string; type: string; summary: string; body: string; updatedAt: string }\nexport type RecallHit = { id: string; type: string; summary: string; tokens: number; score: number }\n\nconst STOPWORDS = new Set(('a an and are as at be but by can do does for from how i if in into is it its of on or ' +\n 'our so that the their then there these this to use used using was we what when where which who why will with you your').split(' '))\n\n/** Lowercase, split on non-alphanumerics, drop stopwords and 1-char tokens, naive plural strip (\"events\" → \"event\"). */\nexport function tokenize(s: string): string[] {\n return s.toLowerCase().split(/[^a-z0-9]+/)\n .filter(t => t.length > 1 && !STOPWORDS.has(t))\n // ponytail: plural strip only, no real stemmer; add one if recall misses obvious matches\n .map(t => (t.length > 3 && t.endsWith('s') && !t.endsWith('ss') ? t.slice(0, -1) : t))\n}\n\nexport function estimateTokens(s: string): number {\n return Math.ceil(s.length / 4)\n}\n\n/** Per query token: +3 in summary, +2 matches id or type, +1 in body. Score 0 dropped; ties → newest first. */\nexport function rankEntries(entries: RecallEntry[], query: string, opts: { type?: string; limit?: number } = {}): RecallHit[] {\n const q = [...new Set(tokenize(query))]\n if (!q.length) return []\n const hits: (RecallHit & { updatedAt: string })[] = []\n for (const e of entries) {\n if (opts.type && e.type !== opts.type) continue\n const summary = new Set(tokenize(e.summary))\n const body = new Set(tokenize(e.body))\n const idType = new Set([e.id.toLowerCase(), ...tokenize(e.type)])\n let score = 0\n for (const t of q) {\n if (summary.has(t)) score += 3\n if (idType.has(t)) score += 2\n if (body.has(t)) score += 1\n }\n if (score > 0) {\n hits.push({ id: e.id, type: e.type, summary: e.summary, tokens: estimateTokens(`${e.summary}\\n${e.body}`), score, updatedAt: e.updatedAt })\n }\n }\n hits.sort((a, b) => b.score - a.score || b.updatedAt.localeCompare(a.updatedAt))\n return hits.slice(0, opts.limit ?? 10).map(({ updatedAt: _, ...h }) => h)\n}\n\n/** \"E012 · convention · Only core.ts touches fs (~120 tok)\" */\nexport function formatCompactLine(h: RecallHit): string {\n return `${h.id} · ${h.type} · ${h.summary} (~${h.tokens} tok)`\n}\n\n/** Every entry as a compact hit, newest first: the session-start index order. */\nexport function indexHits(entries: RecallEntry[]): RecallHit[] {\n return [...entries].sort((a, b) => b.updatedAt.localeCompare(a.updatedAt) || a.id.localeCompare(b.id, 'en', { numeric: true }))\n .map(e => ({ id: e.id, type: e.type, summary: e.summary, tokens: estimateTokens(`${e.summary}\\n${e.body}`), score: 0 }))\n}\n\nexport const DEFAULT_SESSION_BUDGET = 2000\nconst INDEX_HINT = 'Save new facts with vibedoc_save_entry; fetch bodies with vibedoc_get_entries.'\n\n/** \"## Since the last handoff (auto, 2026-10-03)\" + the newest episode body, plus \"+N older\" when more are newer than MEMORY.md (R050). */\nexport function formatEpisodeSection(ep: { end: string; body: string }, older = 0): string {\n return [\n `## Since the last handoff (auto, ${ep.end.slice(0, 10)})`,\n ep.body.trim().replace(/^## /gm, '### '), // nest the episode's own sections under this one\n ...(older > 0 ? ['', `+${older} older episode${older === 1 ? '' : 's'} in .vibedoc/episodes/`] : []),\n ].join('\\n')\n}\n\n/**\n * Session start = the whole handoff + the episode section (if any) + as many index lines (in the order given) as fit\n * `budget` tokens, then \"+N more\" when some were left out. Header, footer and hint count toward the budget.\n * The handoff and the episode are never cut.\n */\nexport function fitToBudget(handoff: string, index: RecallHit[], budget: number, episode = ''):\n { text: string; shown: number; omitted: number; tokens: number } {\n const render = (n: number, warning?: string) => [\n handoff.trimEnd(), '',\n ...(episode ? [episode.trimEnd(), ''] : []),\n ...(warning ? [warning] : []),\n `## Knowledge entries (${index.length})`,\n ...index.slice(0, n).map(formatCompactLine),\n ...(n < index.length ? [`+${index.length - n} more entries — use vibedoc_recall { query }`] : []),\n INDEX_HINT,\n ].join('\\n')\n const fits = (n: number) => estimateTokens(render(n)) <= budget\n let text: string\n let shown = 0\n if (!fits(0)) {\n const what = episode ? `The handoff and the latest episode are ~${estimateTokens(`${handoff}\\n${episode}`)} tokens` : `The handoff alone is ~${estimateTokens(handoff)} tokens`\n text = render(0, `⚠️ ${what}, over the ${budget}-token session budget: trim memory/MEMORY.md.`)\n } else {\n // ponytail: re-renders per line (O(n²) chars); fine for hundreds of entries\n while (shown < index.length && fits(shown + 1)) shown++\n text = render(shown)\n }\n return { text, shown, omitted: index.length - shown, tokens: estimateTokens(text) }\n}\n\nexport const RELATED_MIN_SCORE = 3\nconst GOAL_CHARS = 500\n\n/** Recall query for a task: its title, the first 500 chars of its Goal, and the Phase epic title (id dropped). */\nexport function taskQuery(task: { title: string; phase?: string; raw?: string }): string {\n const goal = /^## Goal[ \\t]*\\n([\\s\\S]*?)(?=^## |(?![\\s\\S]))/m.exec(task.raw ?? '')?.[1].trim() ?? ''\n const epic = (task.phase ?? '').replace(/^R\\d+\\s*[—–-]\\s*/, '')\n return [task.title, goal.slice(0, GOAL_CHARS), epic].filter(Boolean).join(' ')\n}\n\n/** Only strong matches (at least one summary hit) → \"## Related memory\" block; '' when none qualify. */\nexport function formatRelated(hits: RecallHit[], limit = 3): string {\n const strong = hits.filter(h => h.score >= RELATED_MIN_SCORE).slice(0, limit)\n if (!strong.length) return ''\n return `## Related memory\\n${strong.map(formatCompactLine).join('\\n')}\\nFetch with vibedoc_get_entries`\n}\n\n/**\n * The Memory tab list (R047). No searchable words → the entries of `type`, newest first (session-start order).\n * Otherwise ranked like vibedoc_recall, so the UI and agents agree on the first hit. Returns the full entries.\n */\nexport function filterEntries<T extends RecallEntry>(entries: T[], opts: { query?: string; type?: string | null }): T[] {\n const pool = opts.type ? entries.filter(e => e.type === opts.type) : entries\n const byId = new Map(pool.map(e => [e.id, e]))\n const query = opts.query ?? ''\n const hits = tokenize(query).length ? rankEntries(pool, query, { limit: pool.length }) : indexHits(pool)\n return hits.map(h => byId.get(h.id)).filter((e): e is T => !!e)\n}\n"],"names":["Gt","n","t1","e","s","RegExp","ce","i","r","ss","start","end","pre","slice","body","length","post","match","o","h","a","indexOf","l","u","push","c","pop","fe","Math","random","ue","qt","de","pe","is","rs","ns","os","hs","as","ls","cs","fs","us","ds","Ht","isNaN","charCodeAt","parseInt","ps","replace","ms","me","split","shift","apply","ge","max","ht","map","gs","ws","test","ys","bs","f","d","m","p","w","abs","g","E","some","y","b","String","fromCharCode","z","$","Array","join","at","TypeError","Ss","lt","Es","we","ye","charAt","Error","t","S","Object","entries","startsWith","W","windowsPathsNoEscape","magicalBraces","xs","Set","be","has","vs","Ct","Cs","Ts","As","ks","Kt","Se","Ee","Q","type","hasMagic","toString","copyIn","toJSON","isStart","unshift","isEnd","clone","noext","substring","fromGlob","toMMPattern","toRegExpSource","nocase","nocaseMagicOnly","toUpperCase","toLowerCase","assign","_src","_glob","options","dot","filter","tt","O","nocomment","D","Rs","Os","endsWith","Fs","Ds","Ms","Ns","_s","includes","Ls","Ws","Ps","js","Is","zs","Bs","Us","Ce","$s","Te","Gs","Hs","Ae","process","env","__MINIMATCH_TESTING_PLATFORM__","platform","xe","win32","sep","posix","qs","A","Symbol","GLOBSTAR","Ks","Vs","Ys","Xs","Js","N","Zs","keys","Minimatch","defaults","AST","unescape","escape","makeRe","braceExpand","ke","nobrace","braceExpandMax","Qs","ti","nonull","ve","ei","set","pattern","nonegate","negate","comment","empty","preserveMultipleSlashes","partial","globSet","globParts","isWindows","windowsNoMagicRoot","regexp","make","debug","parseNegate","console","error","slashSplit","preprocess","parse","noglobstar","optimizationLevel","firstPhasePreProcess","secondPhasePreProcess","levelOneOptimize","adjascentGlobstarOptimize","splice","reduce","levelTwoFileOptimize","isArray","partsMatch","matchOne","file","Reflect","defineProperty","value","flags","add","forEach","matchBase","flipNegate","si","performance","now","Date","Oe","Vt","Fe","emitWarning","At","globalThis","AbortController","Re","AbortSignal","onabort","_onabort","reason","aborted","addEventListener","signal","abort","LRU_CACHE_IGNORE_AC_WARNING","ii","q","floor","isFinite","De","pow","Uint8Array","Uint16Array","Uint32Array","Number","MAX_SAFE_INTEGER","Tt","fill","ri","ct","heap","create","ft","Me","perf","ttl","ttlResolution","ttlAutopurge","updateAgeOnGet","updateAgeOnHas","allowStale","noDisposeOnSet","noUpdateTTL","maxEntrySize","sizeCalculation","noDeleteOnFetchRejection","noDeleteOnStaleGet","allowStaleOnFetchAbort","allowStaleOnFetchRejection","ignoreFetchAbort","unsafeExposeInternals","starts","ttls","autopurgeTimers","sizes","keyMap","keyList","valList","next","prev","head","tail","free","isBackgroundFetch","backgroundFetch","moveToTail","indexes","rindexes","isStale","maxSize","calculatedSize","size","fetchMethod","memoMethod","dispose","onInsert","disposeAfter","J","Z","Map","$t","getRemainingTTL","clearTimeout","setTimeout","unref","remainingTTL","get","entrySize","totalCalculatedSize","rentries","rkeys","values","rvalues","iterator","toStringTag","find","__staleWhileFetching","call","rforEach","purgeStale","info","dump","load","clear","delete","status","maxEntrySizeExceeded","__abortController","oldValue","peek","context","fetchAborted","fetchError","fetchAbortIgnored","fetchResolved","fetchUpdated","fetchRejected","returnedStale","__returned","Promise","then","fetchDispatched","hasOwnProperty","fetch","forceRefresh","forceFetch","memo","Ne","stdout","stderr","oi","V","hi","ai","pipe","Writable","prototype","write","G","H","K","kt","ut","Rt","_e","Ot","Le","P","et","v","dt","st","C","F","T","Yt","Ft","k","x","Xt","Jt","We","Zt","B","Qt","Dt","pt","Y","M","mt","resolve","li","ci","fi","ArrayBuffer","name","byteLength","ui","Buffer","isBuffer","isView","Mt","src","dest","opts","ondrain","on","unpipe","removeListener","proxyErrors","te","emit","di","objectMode","pi","encoding","writable","readable","async","debugExposeBuffer","debugExposePipes","bufferLength","setEncoding","destroy","code","from","buffer","byteOffset","lastNeed","read","concat","subarray","once","resume","pause","destroyed","flowing","paused","addListener","removeAllListeners","off","listeners","emittedEnd","collect","dataLength","promise","asyncIterator","done","throw","return","asyncDispose","close","isStream","vi","native","wt","lstatSync","readdir","readdirSync","readlinkSync","realpathSync","promises","lstat","readlink","realpath","Ue","imported module 902157","$e","Ri","Oi","L","Ge","He","U","qe","Ke","X","Ve","_","gt","se","je","yt","j","Nt","Lt","Ie","Fi","ie","isFile","isDirectory","isSymbolicLink","isCharacterDevice","isBlockDevice","isSocket","isFIFO","ze","bt","normalize","Be","_t","Wt","ne","Ye","R","root","roots","parent","isCWD","dev","mode","nlink","uid","gid","rdev","blksize","ino","blocks","atimeMs","mtimeMs","ctimeMs","birthtimeMs","atime","mtime","ctime","birthtime","parentPath","fullpath","path","relative","relativePosix","depth","childrenCache","getRootString","splitSep","getRoot","child","children","provisional","newChild","canReaddir","fullpathPosix","isUnknown","isType","getType","lstatCached","readlinkCached","realpathCached","readdirCached","canReadlink","calledReaddir","isENOENT","isNamed","readdirCB","queueMicrotask","withFileTypes","shouldWalk","Pt","sameRoot","it","jt","It","rootPath","cwd","childrenCacheSize","URL","parseRootPath","newRoot","isAbsolute","resolvePosix","basename","dirname","walk","follow","walkFilter","walkSync","iterate","stream","iterateSync","all","streamSync","chdir","rt","St","Cr","Xe","Di","Mi","Ni","for","nt","isUNC","isDrive","isString","isGlobstar","isRegExp","globString","hasMore","rest","checkFollowGlobstar","markFollowGlobstar","_i","ot","relativeChildren","absolute","absoluteChildren","mmopts","ignored","childrenIgnored","oe","store","copy","hasWalked","storeWalked","he","ae","Et","hasWalkedCache","matches","subwalks","patterns","processPatterns","subwalkTargets","filterEntries","testGlobstar","testRegExp","testString","Li","zt","seen","maxDepth","includeChildMatches","ignore","onResume","matchCheck","nodir","stat","matchCheckTest","matchCheckSync","matchFinish","mark","matchEmit","dotRelative","matchSync","walkCB","walkCB2","walkCB3","walkCBSync","walkCB2Sync","walkCB3Sync","xt","vt","results","Pi","I","scurry","allowWindowsEscape","le","Bt","Qe","ts","Je","Ut","es","ji","Ii","sync","zi","Bi","Ui","Ze","glob","globSync","globStream","globStreamSync","globIterate","globIterateSync","Glob","DynamicServerError","isDynamicServerError","DYNAMIC_ERROR_CODE","constructor","description","digest","err","StaticGenBailoutError","isStaticGenBailoutError","NEXT_STATIC_GEN_BAILOUT","InvariantError","message","createPromiseWithResolvers","reject","res","rej","RENDER_STAGE_ADVANCE_ORDER","RenderStage","StagedRenderingController","SyncIOMode","getNextStage","isAdvanceableRenderStage","stage","abortSignal","abandonController","syncIO","finalStage","currentStage","syncInterruptReason","triggers","createStageTrigger","syncIOMode","trigger","cancelStageTrigger","abandonRender","onStage","callback","addSyncTriggerListener","shouldTrackSyncInterrupt","syncInterruptCurrentStageWithReason","advanceStage","getSyncInterruptReason","getStageEndTime","triggeredAt","Infinity","nextStageIx","dynamicStageIx","resolveStage","targetStage","targetStageIx","fireStageTrigger","getStagePromise","waitForStage","delayUntilStage","displayName","resolvedValue","stagePromise","NODE_ENV","makeDevtoolsIOPromiseFromIOTrigger","catch","ignoreReject","ioTrigger","bind","undefined","listener","state","_listeners","_resolvePromise","_rejectPromise","timeOrigin","after","task","workStore","workAsyncStorage","getStore","workUnitStore","workUnitAsyncStorage","afterContext","ClientHookDynamicError","RENDER_STAGES_BY_DATA_KIND","applyOwnerStack","isClientHookDynamicError","isHangingPromiseRejectionError","makeClientHookHangingPromise","makeDevtoolsIOAwarePromise","makeDynamicHangingPromise","makeFallbackParamsHangingPromise","makePromiseFromTrigger","makeRuntimeHangingPromise","makeStageHangingPromise","makeUntrackedHangingPromise","trackFallbackParamsAccessed","trackRuntimeDataAccessed","HANGING_PROMISE_REJECTION","HangingPromiseRejectionError","route","expression","CLIENT_HOOK_DYNAMIC","abortListenersBySignal","WeakMap","makeHangingPromiseWithError","trackRuntimeDataAccessedImpl","isFallbackParamAccess","runtimeDataAccessed","hintCell","shouldAttemptStaticPrefetch","isFallbackUpgradeable","current","hangingPromise","boundRejection","currentListeners","underlying","requestStore","stagedRendering","sessionData","ShellRuntime","staticLinkData","Static","runtimeLinkData","Runtime","getClientReact","getServerReact","ownerStack","innerOwnerStack","captureOwnerStack","outerOwnerStack","stack","frames","frame","METADATA_BOUNDARY_NAME","OUTLET_BOUNDARY_NAME","ROOT_LAYOUT_BOUNDARY_NAME","VIEWPORT_BOUNDARY_NAME","atLeastOneTask","scheduleImmediate","scheduleOnNextTick","waitAtLeastOneReactRenderTask","cb","NEXT_RUNTIME","nextTick","setImmediate","BailoutToCSRError","isBailoutToCSRError","BAILOUT_TO_CSR","createDynamicBodyError","createDynamicBodyErrorInNavigation","createDynamicMetadataError","createDynamicOrRuntimeBodyError","createDynamicOrRuntimeMetadataError","createDynamicOrRuntimeViewportError","createDynamicViewportError","createLinkBodyErrorInNavigation","createLinkMetadataError","createLinkViewportError","createRuntimeBodyError","createRuntimeBodyErrorInNavigation","createRuntimeMetadataError","createRuntimeViewportError","logBuildDebugHint","__NEXT_DEV_SERVER","INSTANT_SLOT_MARKER_PREFIX","INSTANT_SLOT_MARKER_SUFFIX","INSTANT_VALIDATION_BOUNDARY_NAME","allRequiredBoundariesRendered","createValidationBoundaryTracking","requiredIds","renderedIds","id","createLinkPrefetchPartialError","createUnrenderedSegmentError","missingFiles","label","pathname","DynamicHoleKind","Postpone","PreludeState","abortAndThrowOnSynchronousRequestDataAccess","abortOnSynchronousPlatformIOAccess","accessedDynamicData","annotateDynamicAccess","consumeDynamicAccess","createDynamicTrackingState","createDynamicValidationState","createHangingInputAbortSignal","createInstantValidationState","createRenderInBrowserAbortSignal","formatDynamicAPIAccesses","getFirstDynamicReason","getNavigationDisallowedDynamicReasons","getStaticShellDisallowedDynamicReasons","isDynamicPostpone","isPrerenderInterruptedError","logDisallowedDynamicError","markCurrentScopeAsDynamic","postponeWithTracking","throwIfDisallowedDynamic","throwIfSyncIOUsed","throwToInterruptStaticGeneration","trackAllowedDynamicAccess","trackDynamicDataInDynamicRender","trackDynamicHoleInNavigation","trackDynamicHoleInRuntimeShell","trackDynamicHoleInStaticShell","trackThrownErrorInNavigation","useDynamicRouteParams","useDynamicSearchParams","hasPostpone","React","unstable_postpone","isDebugDynamicAccesses","dynamicAccesses","syncDynamicErrorWithStack","syncDynamicErrorWithStackPostMicrotask","hasSuspenseAboveBody","hasDynamicMetadata","dynamicMetadata","hasDynamicViewport","hasAllowedDynamic","dynamicErrors","getPendingClientSyncDynamicError","clientDynamic","trackingState","forceDynamic","forceStatic","dynamicShouldError","dynamicTracking","revalidate","dynamicUsageDescription","dynamicUsageStack","usedDynamic","prerenderStore","abortOnSynchronousDynamicDataAccess","createPrerenderInterruptedError","controller","errorWithStack","prerenderSignal","assertPostpone","createPostponeReason","isDynamicPostponeReason","NEXT_PRERENDER_INTERRUPTED","serverDynamic","access","line","cacheSignal","inputReady","getStagedRenderingController","noop","fallbackParams","fallbackRouteParams","use","renderSignal","throwForMissingRequestStore","hasSuspenseRegex","bodyAndImplicitTags","hasSuspenseBeforeRootLayoutWithoutBodyOrImplicitBodyRegex","hasMetadataRegex","hasViewportRegex","hasOutletRegex","hasInstantValidationBoundaryRegex","slotMarkerRegex","resolveInstantStack","componentStack","dynamicValidation","slotStacks","exec","slotIndex","slotStack","trackOutletSuspenseAboveBody","dynamicReason","syncDynamicError","addErrorContext","hasAllowedClientDynamicAboveBoundary","validationPreventingErrors","thrownErrorsOutsideBoundary","kind","boundaryState","effectiveCreateInstantStack","boundaryLocation","suspenseLocation","index","cause","thrownValue","createInstantStack","prelude","allowEmptyStaticShell","validationSampleTracking","devRenderDidError","missingSampleErrors","rootInstantStack","filePaths","filePath","normalized","sort","AggregateError","isRequestApiAllowedInCurrentPhase","throwForSearchParamsAccessInUseCache","throwWithStaticGenerationBailoutErrorWithDynamicError","constructorOpt","captureStackTrace","invalidDynamicUsageError","phase","actionStore","actionAsyncStorage","isAppRoute","isAction","afterTaskStore","afterTaskAsyncStorage","rootTaskSpawnPhase","connection","callingExpression","exportName","asyncApiPromises","Dynamic","serverExports","NextRequest","NextResponse","ImageResponse","userAgentFromString","userAgent","URLPattern","module","exports","RequestCookies","ResponseCookies","stringifyCookie","INTERNALS","Request","input","init","url","validateURL","duplex","nextUrl","NextURL","headers","toNodeOutgoingHttpHeaders","nextConfig","cookies","__NEXT_NO_MIDDLEWARE_URL_NORMALIZE","bodyUsed","cache","credentials","destination","fromEntries","integrity","keepalive","method","redirect","referrer","referrerPolicy","page","RemovedPageError","ua","RemovedUAError","ReflectAdapter","target","prop","receiver","deleteProperty","REDIRECTS","handleMiddlewareField","request","Headers","key","Response","cookiesProxy","Proxy","args","result","newHeaders","getAll","cookie","ok","redirected","statusText","json","response","RangeError","initObj","rewrite","extend","enumerize","lowerize","majorize","trim","rgxMapper","strMapper","ME","XP","Vista","RT","browser","cpu","device","engine","UAParser","getResult","navigator","userAgentData","getBrowser","brave","isBrave","getCPU","getDevice","mobile","standalone","maxTouchPoints","getEngine","getOS","getUA","setUA","VERSION","BROWSER","CPU","DEVICE","ENGINE","OS","define","amd","jQuery","Zepto","__nccwpck_require__","ab","isBot","parseua","GlobalURLPattern","detectDomainLocale","domainItems","hostname","detectedLocale","item","domainHostname","domain","defaultLocale","locales","locale","removeTrailingSlash","parsePath","hashIndex","queryIndex","hasQuery","query","hash","addPathPrefix","prefix","addPathSuffix","suffix","pathHasPrefix","addLocale","ignorePrefix","lower","formatNextPathnameInfo","buildId","trailingSlash","basePath","getHostname","parsed","host","normalizeLocalePath","lowercasedLocales","segments","segment","removePathPrefix","withoutPrefix","getNextPathnameInfo","i18n","pathnameNoDataPrefix","paths","parseData","i18nProvider","analyze","REGEX_LOCALHOST_HOSTNAME","parseURL","base","Internal","baseOrOpts","domainLocale","domains","formatPathname","forceLocale","formatSearch","search","searchParams","port","protocol","href","origin","password","username","ACTION_SUFFIX","APP_DIR_ALIAS","CACHE_ONE_YEAR_SECONDS","DOT_NEXT_ALIAS","ESLINT_DEFAULT_DIRS","GSP_NO_RETURNED_VALUE","GSSP_COMPONENT_MEMBER_ERROR","GSSP_NO_RETURNED_VALUE","HTML_CONTENT_TYPE_HEADER","INFINITE_CACHE","INSTRUMENTATION_HOOK_FILENAME","JSON_CONTENT_TYPE_HEADER","MATCHED_PATH_HEADER","MIDDLEWARE_FILENAME","MIDDLEWARE_LOCATION_REGEXP","NEXT_BODY_SUFFIX","NEXT_CACHE_IMPLICIT_TAG_ID","NEXT_CACHE_REVALIDATED_TAGS_HEADER","NEXT_CACHE_REVALIDATE_TAG_TOKEN_HEADER","NEXT_CACHE_ROOT_PARAM_TAG_ID","NEXT_CACHE_SOFT_TAG_MAX_LENGTH","NEXT_CACHE_TAGS_HEADER","NEXT_CACHE_TAG_MAX_ITEMS","NEXT_CACHE_TAG_MAX_LENGTH","NEXT_DATA_SUFFIX","NEXT_INTERCEPTION_MARKER_PREFIX","NEXT_META_SUFFIX","NEXT_NAV_DEPLOYMENT_ID_HEADER","NEXT_QUERY_PARAM_PREFIX","NEXT_RESUME_HEADER","NEXT_RESUME_STATE_LENGTH_HEADER","NON_STANDARD_NODE_ENV","PAGES_DIR_ALIAS","PRERENDER_REVALIDATE_HEADER","PRERENDER_REVALIDATE_ONLY_GENERATED_HEADER","PROXY_FILENAME","PROXY_LOCATION_REGEXP","PUBLIC_DIR_MIDDLEWARE_CONFLICT","ROOT_DIR_ALIAS","RSC_ACTION_CLIENT_WRAPPER_ALIAS","RSC_ACTION_ENCRYPTION_ALIAS","RSC_ACTION_PROXY_ALIAS","RSC_ACTION_VALIDATE_ALIAS","RSC_CACHE_WRAPPER_ALIAS","RSC_DYNAMIC_IMPORT_WRAPPER_ALIAS","RSC_MOD_REF_PROXY_ALIAS","RSC_SEGMENTS_DIR_SUFFIX","RSC_SEGMENT_SUFFIX","RSC_SUFFIX","SERVER_PROPS_EXPORT_ERROR","SERVER_PROPS_GET_INIT_PROPS_CONFLICT","SERVER_PROPS_SSG_CONFLICT","SERVER_RUNTIME","SSG_FALLBACK_EXPORT_ERROR","SSG_GET_INITIAL_PROPS_CONFLICT","STATIC_STATUS_PAGE_GET_INITIAL_PROPS_ERROR","TEXT_PLAIN_CONTENT_TYPE_HEADER","UNSTABLE_REVALIDATE_RENAME_ERROR","WEBPACK_LAYERS","WEBPACK_RESOURCE_QUERIES","WEB_SOCKET_MAX_RECONNECTIONS","edge","experimentalEdge","nodejs","WEBPACK_LAYERS_NAMES","shared","reactServerComponents","serverSideRendering","actionBrowser","apiNode","apiEdge","middleware","instrument","edgeAsset","appPagesBrowser","pagesDirBrowser","pagesDirEdge","pagesDirNode","GROUP","builtinReact","serverOnly","neutralTarget","clientOnly","bundled","appPages","edgeSSREntry","metadata","metadataRoute","metadataImageMeta","fromNodeOutgoingHttpHeaders","normalizeNextQueryParam","splitCookiesString","nodeHeaders","append","cookiesString","cookiesStrings","pos","ch","lastComma","nextStart","cookiesSeparatorFound","skipWhitespace","notSpecialChar","prefixes","PageSignatureError","BLOCK_START","BLOCK_END","LINE_BODY_MAX","lineRe","marker","TYPE_HEADINGS","convention","gotcha","decision","preference","entryLine","first","Boolean","summary","renderEntriesBlock","out","byId","localeCompare","numeric","heading","group","upsertManagedBlock","fileText","block","eol","re","lastIndex","endAfter","text","ENTRY_TYPES","SUMMARY_MAX","isEntryType","normalizeEntryId","padStart","nextEntryId","ids","entrySlug","parseEntry","raw","lines","h1","meta","updatedAt","updated","by","source","formatEntry","validateEntryInput","replaceEntryRefs","fromIds","toId","EPISODE_BODY_CAP","MIN_MESSAGE","LIST_CAPS","READ_ONLY","clip","trimEnd","items","cap","fmt","renderBody","msgMax","happened","tasks","lastStatus","docs","decisions","msg","lastMessage","open","openTasks","parts","headline","title","buildEpisode","eventCount","actor","agent","msgLen","fixed","room","min","parseEpisode","sessionId","bodyAt","mergeSources","isHandoffWritten","events","eventIds","mine","isHandoff","timestamp","turnSessions","sessions","since","touched","hasWork","lastEventTitle","sessionsNeedingEpisode","existingIds","currentSessionId","ended","gapMs","limit","ID_RE","BACKTICK_MD_RE","LINK_MD_RE","pad3","normalizeId","normalizePath","extractRefs","matchAll","fileNode","relPath","buildGraph","others","byPath","entryIds","edges","to","nodes","neighbourhood","graph","keep","flatMap","formatEntryLinks","more","GRAPH_COL_W","GRAPH_ROW_H","GRAPH_COL","epic","entry","adr","doc","graphLayout","entryType","num","neighbourYs","other","col","want","SECTION_RE","CLOSED","isBoardId","isEntryId","splitSections","markdown","inFence","prose","sectionOf","findContradictions","handoff","board","refsOf","dangling","who","kinds","missing","severity","refs","entryRefs","section","says","MAX_SESSION_WARNINGS","formatHealthWarnings","warns","DUPLICATE_THRESHOLD","TYPE_PENALTY","FILLER","stem","jaccard","common","dupSets","tokenize","scoreSets","score","duplicateScore","findDuplicates","threshold","best","sets","groups","names","round","suggestion","action","STALE_DAYS","dayNumber","UTC","isDate","findStale","recallLog","today","days","recalled","age","ago","markRecalled","log","every","sortedLog","pruneDismissed","dismissed","goneIds","gone","flagId","lastIndexOf","kept","STOPWORDS","estimateTokens","ceil","rankEntries","hits","idType","tokens","formatCompactLine","indexHits","DEFAULT_SESSION_BUDGET","INDEX_HINT","formatEpisodeSection","ep","older","fitToBudget","budget","episode","render","warning","fits","shown","what","omitted","RELATED_MIN_SCORE","GOAL_CHARS","taskQuery","goal","formatRelated","strong","pool"],"mappings":"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","ignoreList":[0,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55]}