vibedoc 1.10.0 → 1.12.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 (725) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-path-routes-manifest.json +9 -1
  3. package/.next/build-manifest.json +3 -3
  4. package/.next/prerender-manifest.json +41 -13
  5. package/.next/routes-manifest.json +54 -6
  6. package/.next/server/app/(app)/activity/page.js.nft.json +1 -1
  7. package/.next/server/app/(app)/activity/page_client-reference-manifest.js +1 -1
  8. package/.next/server/app/(app)/board/page.js.nft.json +1 -1
  9. package/.next/server/app/(app)/board/page_client-reference-manifest.js +1 -1
  10. package/.next/server/app/(app)/chat/page.js.nft.json +1 -1
  11. package/.next/server/app/(app)/chat/page_client-reference-manifest.js +1 -1
  12. package/.next/server/app/(app)/docs/page.js.nft.json +1 -1
  13. package/.next/server/app/(app)/docs/page_client-reference-manifest.js +1 -1
  14. package/.next/server/app/(app)/explorer/page.js.nft.json +1 -1
  15. package/.next/server/app/(app)/explorer/page_client-reference-manifest.js +1 -1
  16. package/.next/server/app/(app)/graph/page/app-paths-manifest.json +3 -0
  17. package/.next/server/app/(app)/graph/page/build-manifest.json +20 -0
  18. package/.next/server/app/(app)/graph/page/next-font-manifest.json +11 -0
  19. package/.next/server/app/(app)/graph/page/react-loadable-manifest.json +1 -0
  20. package/.next/server/app/(app)/graph/page.js +15 -0
  21. package/.next/server/app/(app)/graph/page.js.nft.json +1 -0
  22. package/.next/server/app/(app)/graph/page_client-reference-manifest.js +3 -0
  23. package/.next/server/app/(app)/manual-tests/page.js.nft.json +1 -1
  24. package/.next/server/app/(app)/manual-tests/page_client-reference-manifest.js +1 -1
  25. package/.next/server/app/(app)/memory/page.js.nft.json +1 -1
  26. package/.next/server/app/(app)/memory/page_client-reference-manifest.js +1 -1
  27. package/.next/server/app/(app)/roadmap/page.js.nft.json +1 -1
  28. package/.next/server/app/(app)/roadmap/page_client-reference-manifest.js +1 -1
  29. package/.next/server/app/(app)/settings/page.js.nft.json +1 -1
  30. package/.next/server/app/(app)/settings/page_client-reference-manifest.js +1 -1
  31. package/.next/server/app/(app)/setup/page.js.nft.json +1 -1
  32. package/.next/server/app/(app)/setup/page_client-reference-manifest.js +1 -1
  33. package/.next/server/app/_global-error.html +1 -1
  34. package/.next/server/app/_global-error.rsc +1 -1
  35. package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  36. package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  37. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  38. package/.next/server/app/_not-found/page.js.nft.json +1 -1
  39. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  40. package/.next/server/app/_not-found.html +1 -1
  41. package/.next/server/app/_not-found.rsc +2 -2
  42. package/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
  43. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
  44. package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  45. package/.next/server/app/activity.html +1 -1
  46. package/.next/server/app/activity.rsc +8 -8
  47. package/.next/server/app/activity.segments/!KGFwcCk/activity/__PAGE__.segment.rsc +6 -6
  48. package/.next/server/app/activity.segments/_full.segment.rsc +8 -8
  49. package/.next/server/app/activity.segments/_tree.segment.rsc +2 -2
  50. package/.next/server/app/api/activity/route.js +2 -2
  51. package/.next/server/app/api/activity/route.js.nft.json +1 -1
  52. package/.next/server/app/api/chat/route.js +2 -2
  53. package/.next/server/app/api/chat/route.js.nft.json +1 -1
  54. package/.next/server/app/api/context/route.js +2 -2
  55. package/.next/server/app/api/context/route.js.nft.json +1 -1
  56. package/.next/server/app/api/conversations/route.js +2 -2
  57. package/.next/server/app/api/conversations/route.js.nft.json +1 -1
  58. package/.next/server/app/api/decisions/route.js +2 -2
  59. package/.next/server/app/api/decisions/route.js.nft.json +1 -1
  60. package/.next/server/app/api/docs/graph/route/app-paths-manifest.json +3 -0
  61. package/.next/server/app/api/docs/graph/route/server-reference-manifest.json +4 -0
  62. package/.next/server/app/api/docs/graph/route.js +9 -0
  63. package/.next/server/app/api/docs/graph/route.js.map +5 -0
  64. package/.next/server/app/api/docs/graph/route.js.nft.json +1 -0
  65. package/.next/server/app/api/docs/graph/route_client-reference-manifest.js +3 -0
  66. package/.next/server/app/api/docs/links/route/app-paths-manifest.json +3 -0
  67. package/.next/server/app/api/docs/links/route/build-manifest.json +12 -0
  68. package/.next/server/app/api/docs/links/route/server-reference-manifest.json +4 -0
  69. package/.next/server/app/api/docs/links/route.js +9 -0
  70. package/.next/server/app/api/docs/links/route.js.map +5 -0
  71. package/.next/server/app/api/docs/links/route.js.nft.json +1 -0
  72. package/.next/server/app/api/docs/links/route_client-reference-manifest.js +3 -0
  73. package/.next/server/app/api/docs/route.js +2 -2
  74. package/.next/server/app/api/docs/route.js.nft.json +1 -1
  75. package/.next/server/app/api/explorer/route.js +2 -2
  76. package/.next/server/app/api/explorer/route.js.nft.json +1 -1
  77. package/.next/server/app/api/mcp/route.js +2 -2
  78. package/.next/server/app/api/mcp/route.js.nft.json +1 -1
  79. package/.next/server/app/api/memory/entries/delete/route.js +2 -2
  80. package/.next/server/app/api/memory/entries/delete/route.js.nft.json +1 -1
  81. package/.next/server/app/api/memory/entries/merge/route/app-paths-manifest.json +3 -0
  82. package/.next/server/app/api/memory/entries/merge/route/build-manifest.json +12 -0
  83. package/.next/server/app/api/memory/entries/merge/route/server-reference-manifest.json +4 -0
  84. package/.next/server/app/api/memory/entries/merge/route.js +9 -0
  85. package/.next/server/app/api/memory/entries/merge/route.js.map +5 -0
  86. package/.next/server/app/api/memory/entries/merge/route.js.nft.json +1 -0
  87. package/.next/server/app/api/memory/entries/merge/route_client-reference-manifest.js +3 -0
  88. package/.next/server/app/api/memory/entries/merge/undo/route/app-paths-manifest.json +3 -0
  89. package/.next/server/app/api/memory/entries/merge/undo/route/build-manifest.json +12 -0
  90. package/.next/server/app/api/memory/entries/merge/undo/route/server-reference-manifest.json +4 -0
  91. package/.next/server/app/api/memory/entries/merge/undo/route.js +9 -0
  92. package/.next/server/app/api/memory/entries/merge/undo/route.js.map +5 -0
  93. package/.next/server/app/api/memory/entries/merge/undo/route.js.nft.json +1 -0
  94. package/.next/server/app/api/memory/entries/merge/undo/route_client-reference-manifest.js +3 -0
  95. package/.next/server/app/api/memory/entries/restore/route.js +2 -2
  96. package/.next/server/app/api/memory/entries/restore/route.js.nft.json +1 -1
  97. package/.next/server/app/api/memory/entries/route.js +2 -2
  98. package/.next/server/app/api/memory/entries/route.js.nft.json +1 -1
  99. package/.next/server/app/api/memory/entries/save/route.js +2 -2
  100. package/.next/server/app/api/memory/entries/save/route.js.nft.json +1 -1
  101. package/.next/server/app/api/memory/graph/route.js +2 -2
  102. package/.next/server/app/api/memory/graph/route.js.nft.json +1 -1
  103. package/.next/server/app/api/memory/health/dismiss/route/app-paths-manifest.json +3 -0
  104. package/.next/server/app/api/memory/health/dismiss/route/build-manifest.json +12 -0
  105. package/.next/server/app/api/memory/health/dismiss/route/server-reference-manifest.json +4 -0
  106. package/.next/server/app/api/memory/health/dismiss/route.js +9 -0
  107. package/.next/server/app/api/memory/health/dismiss/route.js.map +5 -0
  108. package/.next/server/app/api/memory/health/dismiss/route.js.nft.json +1 -0
  109. package/.next/server/app/api/memory/health/dismiss/route_client-reference-manifest.js +3 -0
  110. package/.next/server/app/api/memory/health/route/app-paths-manifest.json +3 -0
  111. package/.next/server/app/api/memory/health/route/build-manifest.json +12 -0
  112. package/.next/server/app/api/memory/health/route/server-reference-manifest.json +4 -0
  113. package/.next/server/app/api/memory/health/route.js +8 -0
  114. package/.next/server/app/api/memory/health/route.js.map +5 -0
  115. package/.next/server/app/api/memory/health/route.js.nft.json +1 -0
  116. package/.next/server/app/api/memory/health/route_client-reference-manifest.js +3 -0
  117. package/.next/server/app/api/memory/history/route.js +2 -2
  118. package/.next/server/app/api/memory/history/route.js.nft.json +1 -1
  119. package/.next/server/app/api/memory/restore/route/app-paths-manifest.json +3 -0
  120. package/.next/server/app/api/memory/restore/route/build-manifest.json +12 -0
  121. package/.next/server/app/api/memory/restore/route/server-reference-manifest.json +4 -0
  122. package/.next/server/app/api/memory/restore/route.js +9 -0
  123. package/.next/server/app/api/memory/restore/route.js.map +5 -0
  124. package/.next/server/app/api/memory/restore/route.js.nft.json +1 -0
  125. package/.next/server/app/api/memory/restore/route_client-reference-manifest.js +3 -0
  126. package/.next/server/app/api/memory/route.js +2 -2
  127. package/.next/server/app/api/memory/route.js.nft.json +1 -1
  128. package/.next/server/app/api/memory/versions/route/app-paths-manifest.json +3 -0
  129. package/.next/server/app/api/memory/versions/route/build-manifest.json +12 -0
  130. package/.next/server/app/api/memory/versions/route/server-reference-manifest.json +4 -0
  131. package/.next/server/app/api/memory/versions/route.js +8 -0
  132. package/.next/server/app/api/memory/versions/route.js.map +5 -0
  133. package/.next/server/app/api/memory/versions/route.js.nft.json +1 -0
  134. package/.next/server/app/api/memory/versions/route_client-reference-manifest.js +3 -0
  135. package/.next/server/app/api/plan/apply/route.js +2 -2
  136. package/.next/server/app/api/plan/apply/route.js.nft.json +1 -1
  137. package/.next/server/app/api/projects/route.js +2 -2
  138. package/.next/server/app/api/projects/route.js.nft.json +1 -1
  139. package/.next/server/app/api/registry/route.js +2 -2
  140. package/.next/server/app/api/registry/route.js.nft.json +1 -1
  141. package/.next/server/app/api/roadmap/create/route.js +2 -2
  142. package/.next/server/app/api/roadmap/create/route.js.nft.json +1 -1
  143. package/.next/server/app/api/roadmap/delete/route.js +2 -2
  144. package/.next/server/app/api/roadmap/delete/route.js.nft.json +1 -1
  145. package/.next/server/app/api/roadmap/generate/route.js +2 -2
  146. package/.next/server/app/api/roadmap/generate/route.js.nft.json +1 -1
  147. package/.next/server/app/api/roadmap/layout/route.js +2 -2
  148. package/.next/server/app/api/roadmap/layout/route.js.nft.json +1 -1
  149. package/.next/server/app/api/roadmap/restore/route.js +2 -2
  150. package/.next/server/app/api/roadmap/restore/route.js.nft.json +1 -1
  151. package/.next/server/app/api/roadmap/route.js +2 -2
  152. package/.next/server/app/api/roadmap/route.js.nft.json +1 -1
  153. package/.next/server/app/api/roadmap/update/route.js +2 -2
  154. package/.next/server/app/api/roadmap/update/route.js.nft.json +1 -1
  155. package/.next/server/app/api/sessions/route.js +2 -2
  156. package/.next/server/app/api/sessions/route.js.nft.json +1 -1
  157. package/.next/server/app/api/settings/route.js +2 -2
  158. package/.next/server/app/api/settings/route.js.nft.json +1 -1
  159. package/.next/server/app/api/setup/generate/route.js +2 -2
  160. package/.next/server/app/api/setup/generate/route.js.nft.json +1 -1
  161. package/.next/server/app/api/setup/write/route.js +2 -2
  162. package/.next/server/app/api/setup/write/route.js.nft.json +1 -1
  163. package/.next/server/app/api/summary/route.js +2 -2
  164. package/.next/server/app/api/summary/route.js.nft.json +1 -1
  165. package/.next/server/app/api/tasks/bulk/route.js +2 -2
  166. package/.next/server/app/api/tasks/bulk/route.js.nft.json +1 -1
  167. package/.next/server/app/api/tasks/create/route.js +2 -2
  168. package/.next/server/app/api/tasks/create/route.js.nft.json +1 -1
  169. package/.next/server/app/api/tasks/delete/route.js +2 -2
  170. package/.next/server/app/api/tasks/delete/route.js.nft.json +1 -1
  171. package/.next/server/app/api/tasks/manual-tests/route.js +2 -2
  172. package/.next/server/app/api/tasks/manual-tests/route.js.nft.json +1 -1
  173. package/.next/server/app/api/tasks/restore/route.js +2 -2
  174. package/.next/server/app/api/tasks/restore/route.js.nft.json +1 -1
  175. package/.next/server/app/api/tasks/review/route.js +2 -2
  176. package/.next/server/app/api/tasks/review/route.js.nft.json +1 -1
  177. package/.next/server/app/api/tasks/route.js +2 -2
  178. package/.next/server/app/api/tasks/route.js.nft.json +1 -1
  179. package/.next/server/app/api/tasks/update/route.js +2 -2
  180. package/.next/server/app/api/tasks/update/route.js.nft.json +1 -1
  181. package/.next/server/app/api/views/route.js +2 -2
  182. package/.next/server/app/api/views/route.js.nft.json +1 -1
  183. package/.next/server/app/board.html +1 -1
  184. package/.next/server/app/board.rsc +8 -8
  185. package/.next/server/app/board.segments/!KGFwcCk/board/__PAGE__.segment.rsc +5 -5
  186. package/.next/server/app/board.segments/_full.segment.rsc +8 -8
  187. package/.next/server/app/board.segments/_tree.segment.rsc +2 -2
  188. package/.next/server/app/chat.html +1 -1
  189. package/.next/server/app/chat.rsc +8 -8
  190. package/.next/server/app/chat.segments/!KGFwcCk/chat/__PAGE__.segment.rsc +9 -11
  191. package/.next/server/app/chat.segments/_full.segment.rsc +8 -8
  192. package/.next/server/app/chat.segments/_tree.segment.rsc +2 -2
  193. package/.next/server/app/docs.html +1 -1
  194. package/.next/server/app/docs.rsc +8 -8
  195. package/.next/server/app/docs.segments/!KGFwcCk/docs/__PAGE__.segment.rsc +5 -5
  196. package/.next/server/app/docs.segments/_full.segment.rsc +8 -8
  197. package/.next/server/app/docs.segments/_tree.segment.rsc +2 -2
  198. package/.next/server/app/explorer.html +1 -1
  199. package/.next/server/app/explorer.rsc +7 -7
  200. package/.next/server/app/explorer.segments/!KGFwcCk/explorer/__PAGE__.segment.rsc +9 -10
  201. package/.next/server/app/explorer.segments/_full.segment.rsc +7 -7
  202. package/.next/server/app/explorer.segments/_tree.segment.rsc +2 -2
  203. package/.next/server/app/graph.html +1 -0
  204. package/.next/server/app/graph.meta +31 -0
  205. package/.next/server/app/graph.rsc +32 -0
  206. package/.next/server/app/graph.segments/!KGFwcCk/graph/__PAGE__.segment.rsc +33 -0
  207. package/.next/server/app/graph.segments/_full.segment.rsc +32 -0
  208. package/.next/server/app/graph.segments/_tree.segment.rsc +6 -0
  209. package/.next/server/app/index.html +1 -1
  210. package/.next/server/app/index.rsc +2 -2
  211. package/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  212. package/.next/server/app/index.segments/_full.segment.rsc +2 -2
  213. package/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  214. package/.next/server/app/manual-tests.html +1 -1
  215. package/.next/server/app/manual-tests.rsc +7 -7
  216. package/.next/server/app/manual-tests.segments/!KGFwcCk/manual-tests/__PAGE__.segment.rsc +9 -10
  217. package/.next/server/app/manual-tests.segments/_full.segment.rsc +7 -7
  218. package/.next/server/app/manual-tests.segments/_tree.segment.rsc +2 -2
  219. package/.next/server/app/memory.html +1 -1
  220. package/.next/server/app/memory.rsc +8 -8
  221. package/.next/server/app/memory.segments/!KGFwcCk/memory/__PAGE__.segment.rsc +6 -6
  222. package/.next/server/app/memory.segments/_full.segment.rsc +8 -8
  223. package/.next/server/app/memory.segments/_tree.segment.rsc +2 -2
  224. package/.next/server/app/page.js.nft.json +1 -1
  225. package/.next/server/app/page_client-reference-manifest.js +1 -1
  226. package/.next/server/app/roadmap.html +1 -1
  227. package/.next/server/app/roadmap.rsc +8 -8
  228. package/.next/server/app/roadmap.segments/!KGFwcCk/roadmap/__PAGE__.segment.rsc +5 -5
  229. package/.next/server/app/roadmap.segments/_full.segment.rsc +8 -8
  230. package/.next/server/app/roadmap.segments/_tree.segment.rsc +2 -2
  231. package/.next/server/app/settings.html +1 -1
  232. package/.next/server/app/settings.rsc +7 -7
  233. package/.next/server/app/settings.segments/!KGFwcCk/settings/__PAGE__.segment.rsc +11 -9
  234. package/.next/server/app/settings.segments/_full.segment.rsc +7 -7
  235. package/.next/server/app/settings.segments/_tree.segment.rsc +2 -2
  236. package/.next/server/app/setup.html +1 -1
  237. package/.next/server/app/setup.rsc +7 -7
  238. package/.next/server/app/setup.segments/!KGFwcCk/setup/__PAGE__.segment.rsc +9 -10
  239. package/.next/server/app/setup.segments/_full.segment.rsc +7 -7
  240. package/.next/server/app/setup.segments/_tree.segment.rsc +2 -2
  241. package/.next/server/app-paths-manifest.json +9 -1
  242. package/.next/server/chunks/{11mp_@anthropic-ai_sdk_053zt3c._.js → 11mp_@anthropic-ai_sdk_013qeb4._.js} +1 -1
  243. package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0_zx69c._.js → 11mp_@anthropic-ai_sdk_05ck8py._.js} +1 -1
  244. package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0gvxfg3._.js → 11mp_@anthropic-ai_sdk_05w8m72._.js} +1 -1
  245. package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0gx5t2l._.js → 11mp_@anthropic-ai_sdk_086oevc._.js} +1 -1
  246. package/.next/server/chunks/11mp_@anthropic-ai_sdk_08rl0hf._.js +3 -0
  247. package/.next/server/chunks/11mp_@anthropic-ai_sdk_09ujrsu._.js +3 -0
  248. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0c3_7p7._.js +3 -0
  249. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0cto43x._.js +3 -0
  250. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0fgisb_._.js +3 -0
  251. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0fy8wd3._.js +3 -0
  252. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0fyvizf._.js +3 -0
  253. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0hg0i2g._.js +3 -0
  254. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0i0sz05._.js +3 -0
  255. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0l0j9c6._.js +3 -0
  256. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0lcm61d._.js +3 -0
  257. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0qtva5j._.js +3 -0
  258. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0r4fkdu._.js +3 -0
  259. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0wbae0t._.js +3 -0
  260. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0wxyz1t._.js +3 -0
  261. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0y2cods._.js +3 -0
  262. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0zu0fj1._.js +3 -0
  263. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0zxpgt0._.js +3 -0
  264. package/.next/server/chunks/11mp_@anthropic-ai_sdk_10_cxcd._.js +3 -0
  265. package/.next/server/chunks/11mp_@anthropic-ai_sdk_10gb7d1._.js +3 -0
  266. package/.next/server/chunks/11mp_@anthropic-ai_sdk_12q70bs._.js +3 -0
  267. package/.next/server/chunks/11mp_@anthropic-ai_sdk_149ltk3._.js +3 -0
  268. package/.next/server/chunks/11mp_@anthropic-ai_sdk_165_uiw._.js +3 -0
  269. package/.next/server/chunks/11mp_@anthropic-ai_sdk_19w4zh6._.js +3 -0
  270. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1adck-s._.js +3 -0
  271. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1c2dwoi._.js +3 -0
  272. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1d9lw_2._.js +3 -0
  273. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1db6a7p._.js +3 -0
  274. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1h2f90s._.js +3 -0
  275. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1k5_i1z._.js +3 -0
  276. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1p3mv6i._.js +3 -0
  277. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1qoom5s._.js +3 -0
  278. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1qsbcbe._.js +3 -0
  279. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1rk0x59._.js +3 -0
  280. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1sd98mi._.js +3 -0
  281. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1sumqg8._.js +3 -0
  282. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1t-rt4q._.js +3 -0
  283. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1t-rt4q._.js.map +1 -0
  284. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1tr-k4y._.js +3 -0
  285. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1tr-k4y._.js.map +1 -0
  286. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1xk3c39._.js +3 -0
  287. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1xk3c39._.js.map +1 -0
  288. package/.next/server/chunks/11mp_@anthropic-ai_sdk_206l10_._.js +3 -0
  289. package/.next/server/chunks/11mp_@anthropic-ai_sdk_206l10_._.js.map +1 -0
  290. package/.next/server/chunks/11mp_@anthropic-ai_sdk_20giys9._.js +3 -0
  291. package/.next/server/chunks/11mp_@anthropic-ai_sdk_20giys9._.js.map +1 -0
  292. package/.next/server/chunks/11mp_@anthropic-ai_sdk_20xrvvy._.js +3 -0
  293. package/.next/server/chunks/11mp_@anthropic-ai_sdk_20xrvvy._.js.map +1 -0
  294. package/.next/server/chunks/11mp_@anthropic-ai_sdk_215tg00._.js +3 -0
  295. package/.next/server/chunks/11mp_@anthropic-ai_sdk_215tg00._.js.map +1 -0
  296. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_018s_10._.js +3 -0
  297. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_08d6i7w._.js +3 -0
  298. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_09_fd9g._.js +3 -0
  299. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_0eopml6._.js +3 -0
  300. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_0f5epel._.js +3 -0
  301. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_0okfnhu._.js +3 -0
  302. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_0s8-ha8._.js +3 -0
  303. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_0ujs27r._.js +3 -0
  304. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_0uo7rs8._.js +3 -0
  305. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_0vyq_2d._.js +3 -0
  306. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_0w3js74._.js +3 -0
  307. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_0xa4-uq._.js +3 -0
  308. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_113y3so._.js +3 -0
  309. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_12qcr96._.js +3 -0
  310. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_13ixdy8._.js +3 -0
  311. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1708vst._.js +3 -0
  312. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1_rdguq._.js +3 -0
  313. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1bgpe23._.js +3 -0
  314. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1f-tphn._.js +3 -0
  315. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1h1pqdh._.js +3 -0
  316. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1hfj_1d._.js +3 -0
  317. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1ih2qzz._.js +3 -0
  318. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1jatyl1._.js +3 -0
  319. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1v1zbha._.js +3 -0
  320. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1vyqs5z._.js +3 -0
  321. package/.next/server/chunks/{[root-of-the-server]__0kuhhna._.js → [root-of-the-server]__00usbi3._.js} +2 -2
  322. package/.next/server/chunks/{[root-of-the-server]__1gr4e22._.js → [root-of-the-server]__04cwur0._.js} +2 -2
  323. package/.next/server/chunks/{[root-of-the-server]__06dfvb0._.js → [root-of-the-server]__04ri_ci._.js} +2 -2
  324. package/.next/server/chunks/{[root-of-the-server]__00o3mbd._.js → [root-of-the-server]__05-be3n._.js} +2 -2
  325. package/.next/server/chunks/{[root-of-the-server]__0uu9pgg._.js → [root-of-the-server]__0756_60._.js} +2 -2
  326. package/.next/server/chunks/{[root-of-the-server]__1h5hb6u._.js → [root-of-the-server]__089ay-q._.js} +2 -2
  327. package/.next/server/chunks/{[root-of-the-server]__15jhpgl._.js → [root-of-the-server]__0d4t4q6._.js} +2 -2
  328. package/.next/server/chunks/{[root-of-the-server]__01n_hoh._.js → [root-of-the-server]__0dgwykw._.js} +2 -2
  329. package/.next/server/chunks/[root-of-the-server]__0fn-a8c._.js +105 -0
  330. package/.next/server/chunks/[root-of-the-server]__0fn-a8c._.js.map +1 -0
  331. package/.next/server/chunks/[root-of-the-server]__0lix3ru._.js +3 -0
  332. package/.next/server/chunks/[root-of-the-server]__0lix3ru._.js.map +1 -0
  333. package/.next/server/chunks/{[root-of-the-server]__1kw2vct._.js → [root-of-the-server]__0n0myt9._.js} +2 -2
  334. package/.next/server/chunks/[root-of-the-server]__0pe1qih._.js +3 -0
  335. package/.next/server/chunks/[root-of-the-server]__0pe1qih._.js.map +1 -0
  336. package/.next/server/chunks/[root-of-the-server]__0pvi3ku._.js +105 -0
  337. package/.next/server/chunks/[root-of-the-server]__0pvi3ku._.js.map +1 -0
  338. package/.next/server/chunks/[root-of-the-server]__0rggulw._.js +3 -0
  339. package/.next/server/chunks/[root-of-the-server]__0rggulw._.js.map +1 -0
  340. package/.next/server/chunks/{[root-of-the-server]__076d4xm._.js → [root-of-the-server]__0s-j6z-._.js} +2 -2
  341. package/.next/server/chunks/[root-of-the-server]__0s8v5i-._.js +3 -0
  342. package/.next/server/chunks/[root-of-the-server]__0s8v5i-._.js.map +1 -0
  343. package/.next/server/chunks/{[root-of-the-server]__1e_o8h4._.js → [root-of-the-server]__0yaxn8g._.js} +2 -2
  344. package/.next/server/chunks/[root-of-the-server]__162_l0k._.js +3 -0
  345. package/.next/server/chunks/[root-of-the-server]__162_l0k._.js.map +1 -0
  346. package/.next/server/chunks/{[root-of-the-server]__1-1hfrj._.js → [root-of-the-server]__16smlkg._.js} +2 -2
  347. package/.next/server/chunks/{[root-of-the-server]__19w-7h9._.js → [root-of-the-server]__19yo85m._.js} +2 -2
  348. package/.next/server/chunks/[root-of-the-server]__1_qenei._.js +1 -1
  349. package/.next/server/chunks/[root-of-the-server]__1_qenei._.js.map +1 -1
  350. package/.next/server/chunks/[root-of-the-server]__1lxrobr._.js +3 -0
  351. package/.next/server/chunks/[root-of-the-server]__1lxrobr._.js.map +1 -0
  352. package/.next/server/chunks/{[root-of-the-server]__1rjgpbm._.js → [root-of-the-server]__1mnzsbh._.js} +2 -2
  353. package/.next/server/chunks/{[root-of-the-server]__06z8i6e._.js → [root-of-the-server]__1ntu_6r._.js} +2 -2
  354. package/.next/server/chunks/[root-of-the-server]__1ntu_6r._.js.map +1 -0
  355. package/.next/server/chunks/[root-of-the-server]__1p4ws5z._.js +3 -0
  356. package/.next/server/chunks/[root-of-the-server]__1p4ws5z._.js.map +1 -0
  357. package/.next/server/chunks/[root-of-the-server]__1pjwaan._.js +3 -0
  358. package/.next/server/chunks/{[root-of-the-server]__1af-wfk._.js.map → [root-of-the-server]__1pjwaan._.js.map} +1 -1
  359. package/.next/server/chunks/{[root-of-the-server]__1spley9._.js → [root-of-the-server]__1s0t8r3._.js} +2 -2
  360. package/.next/server/chunks/{[root-of-the-server]__1lt5cds._.js → [root-of-the-server]__1sd3l-d._.js} +2 -2
  361. package/.next/server/chunks/[root-of-the-server]__1skrybv._.js +3 -0
  362. package/.next/server/chunks/[root-of-the-server]__1skrybv._.js.map +1 -0
  363. package/.next/server/chunks/[root-of-the-server]__1vnine1._.js +105 -0
  364. package/.next/server/chunks/[root-of-the-server]__1vnine1._.js.map +1 -0
  365. package/.next/server/chunks/{[root-of-the-server]__05tx02j._.js → [root-of-the-server]__1vzxnjb._.js} +2 -2
  366. package/.next/server/chunks/{[root-of-the-server]__09j_-hj._.js → [root-of-the-server]__1zeys20._.js} +2 -2
  367. package/.next/server/chunks/_04byth9._.js +31 -26
  368. package/.next/server/chunks/_04byth9._.js.map +1 -1
  369. package/.next/server/chunks/_0safx0g._.js +3 -3
  370. package/.next/server/chunks/_0safx0g._.js.map +1 -1
  371. package/.next/server/chunks/_next-internal_server_app_api_docs_graph_route_actions_1nzoqf-.js +3 -0
  372. package/.next/server/chunks/_next-internal_server_app_api_docs_links_route_actions_1q-6jeg.js +3 -0
  373. package/.next/server/chunks/_next-internal_server_app_api_memory_entries_merge_route_actions_1rr-wwt.js +3 -0
  374. package/.next/server/chunks/_next-internal_server_app_api_memory_entries_merge_route_actions_1rr-wwt.js.map +1 -0
  375. package/.next/server/chunks/_next-internal_server_app_api_memory_entries_merge_undo_route_actions_0l6cy9q.js +3 -0
  376. package/.next/server/chunks/_next-internal_server_app_api_memory_entries_merge_undo_route_actions_0l6cy9q.js.map +1 -0
  377. package/.next/server/chunks/_next-internal_server_app_api_memory_health_dismiss_route_actions_0i7_n68.js +3 -0
  378. package/.next/server/chunks/_next-internal_server_app_api_memory_health_dismiss_route_actions_0i7_n68.js.map +1 -0
  379. package/.next/server/chunks/_next-internal_server_app_api_memory_health_route_actions_1lk-_5d.js +3 -0
  380. package/.next/server/chunks/_next-internal_server_app_api_memory_health_route_actions_1lk-_5d.js.map +1 -0
  381. package/.next/server/chunks/_next-internal_server_app_api_memory_restore_route_actions_0679kmo.js +3 -0
  382. package/.next/server/chunks/_next-internal_server_app_api_memory_restore_route_actions_0679kmo.js.map +1 -0
  383. package/.next/server/chunks/_next-internal_server_app_api_memory_versions_route_actions_13mix75.js +3 -0
  384. package/.next/server/chunks/_next-internal_server_app_api_memory_versions_route_actions_13mix75.js.map +1 -0
  385. package/.next/server/chunks/ssr/{0_nd_mermaid_dist_mermaid_core_mjs_0itmgkm._.js → 0_nd_mermaid_dist_mermaid_core_mjs_0y_edkq._.js} +2 -2
  386. package/.next/server/chunks/ssr/0_nd_mermaid_dist_mermaid_core_mjs_0y_edkq._.js.map +1 -0
  387. package/.next/server/chunks/ssr/{1u84_katex_dist_katex_mjs_08jn-sj._.js → 1u84_katex_dist_katex_mjs_0yg8zto._.js} +1 -1
  388. package/.next/server/chunks/ssr/1u84_katex_dist_katex_mjs_0yg8zto._.js.map +1 -0
  389. package/.next/server/chunks/ssr/[root-of-the-server]__1drc5py._.js +3 -0
  390. package/.next/server/chunks/ssr/[root-of-the-server]__1drc5py._.js.map +1 -0
  391. package/.next/server/chunks/ssr/_0-_04ia._.js +3 -0
  392. package/.next/server/chunks/ssr/_0-_04ia._.js.map +1 -0
  393. package/.next/server/chunks/ssr/_02ks8_a._.js +3 -0
  394. package/.next/server/chunks/ssr/_02ks8_a._.js.map +1 -0
  395. package/.next/server/chunks/ssr/_04xff_2._.js +1 -1
  396. package/.next/server/chunks/ssr/_04xff_2._.js.map +1 -1
  397. package/.next/server/chunks/ssr/_0696iog._.js +3 -0
  398. package/.next/server/chunks/ssr/_0696iog._.js.map +1 -0
  399. package/.next/server/chunks/ssr/_0cv0ugs._.js +3 -0
  400. package/.next/server/chunks/ssr/_0cv0ugs._.js.map +1 -0
  401. package/.next/server/chunks/ssr/_0ghj-vx._.js +3 -0
  402. package/.next/server/chunks/ssr/_0ghj-vx._.js.map +1 -0
  403. package/.next/server/chunks/ssr/{_0idb-vo._.js → _0kob2si._.js} +2 -2
  404. package/.next/server/chunks/ssr/_0kob2si._.js.map +1 -0
  405. package/.next/server/chunks/ssr/_0o8t6j-._.js +3 -0
  406. package/.next/server/chunks/ssr/_0o8t6j-._.js.map +1 -0
  407. package/.next/server/chunks/ssr/_128p7pz._.js +3 -0
  408. package/.next/server/chunks/ssr/_128p7pz._.js.map +1 -0
  409. package/.next/server/chunks/ssr/_19k2iz0._.js +2 -2
  410. package/.next/server/chunks/ssr/_19k2iz0._.js.map +1 -1
  411. package/.next/server/chunks/ssr/_1b82nz3._.js +3 -0
  412. package/.next/server/chunks/ssr/_1b82nz3._.js.map +1 -0
  413. package/.next/server/chunks/ssr/_1hm7p_8._.js +3 -0
  414. package/.next/server/chunks/ssr/_1hm7p_8._.js.map +1 -0
  415. package/.next/server/chunks/ssr/{_1s2ya35._.js → _1r_t_wi._.js} +1 -1
  416. package/.next/server/chunks/ssr/_1r_t_wi._.js.map +1 -0
  417. package/.next/server/chunks/ssr/_1s-2jub._.js +3 -0
  418. package/.next/server/chunks/ssr/_1s-2jub._.js.map +1 -0
  419. package/.next/server/chunks/ssr/_next-internal_server_app_(app)_graph_page_actions_041e9i7.js +3 -0
  420. package/.next/server/chunks/ssr/_next-internal_server_app_(app)_graph_page_actions_041e9i7.js.map +1 -0
  421. package/.next/server/chunks/ssr/{node_modules__pnpm_0s7j-tv._.js → node_modules__pnpm_00f4yhs._.js} +1 -1
  422. package/.next/server/chunks/ssr/node_modules__pnpm_00f4yhs._.js.map +1 -0
  423. package/.next/server/chunks/ssr/{node_modules__pnpm_1fry8_2._.js → node_modules__pnpm_035haet._.js} +1 -1
  424. package/.next/server/chunks/ssr/{node_modules__pnpm_0j7asqf._.js → node_modules__pnpm_03an60e._.js} +1 -1
  425. package/.next/server/chunks/ssr/{node_modules__pnpm_0eub17j._.js → node_modules__pnpm_03mp7qw._.js} +2 -2
  426. package/.next/server/chunks/ssr/{node_modules__pnpm_0_83tv8._.js → node_modules__pnpm_03mpmzx._.js} +1 -1
  427. package/.next/server/chunks/ssr/{node_modules__pnpm_0e55e7-._.js → node_modules__pnpm_06_8fr8._.js} +1 -1
  428. package/.next/server/chunks/ssr/{node_modules__pnpm_16bj927._.js → node_modules__pnpm_09nd7ia._.js} +1 -1
  429. package/.next/server/chunks/ssr/{node_modules__pnpm_1ch46nl._.js → node_modules__pnpm_0_e05ka._.js} +1 -1
  430. package/.next/server/chunks/ssr/node_modules__pnpm_0aoa6rg._.js +1 -1
  431. package/.next/server/chunks/ssr/node_modules__pnpm_0aoa6rg._.js.map +1 -1
  432. package/.next/server/chunks/ssr/{node_modules__pnpm_02p2rqs._.js → node_modules__pnpm_0iu4132._.js} +1 -1
  433. package/.next/server/chunks/ssr/{node_modules__pnpm_0iqb0_x._.js → node_modules__pnpm_0j_-le7._.js} +2 -2
  434. package/.next/server/chunks/ssr/node_modules__pnpm_0j_-le7._.js.map +1 -0
  435. package/.next/server/chunks/ssr/{node_modules__pnpm_0abf_e9._.js → node_modules__pnpm_0jampur._.js} +1 -1
  436. package/.next/server/chunks/ssr/{node_modules__pnpm_1hqh95z._.js → node_modules__pnpm_0lkvbt-._.js} +1 -1
  437. package/.next/server/chunks/ssr/{node_modules__pnpm_14j18h7._.js → node_modules__pnpm_0mqeoh-._.js} +2 -2
  438. package/.next/server/chunks/ssr/{node_modules__pnpm_0v_mhl7._.js → node_modules__pnpm_0oyo3yo._.js} +2 -2
  439. package/.next/server/chunks/ssr/{node_modules__pnpm_00lsytc._.js → node_modules__pnpm_0rq9x9q._.js} +2 -2
  440. package/.next/server/chunks/ssr/{node_modules__pnpm_0s63lee._.js → node_modules__pnpm_0tn5pg3._.js} +1 -1
  441. package/.next/server/chunks/ssr/{node_modules__pnpm_0_ajzll._.js → node_modules__pnpm_0x5wj-4._.js} +2 -2
  442. package/.next/server/chunks/ssr/{node_modules__pnpm_0rsfj9v._.js → node_modules__pnpm_0zz55xq._.js} +1 -1
  443. package/.next/server/chunks/ssr/node_modules__pnpm_0zz55xq._.js.map +1 -0
  444. package/.next/server/chunks/ssr/{node_modules__pnpm_1gpkxns._.js → node_modules__pnpm_139-v1i._.js} +1 -1
  445. package/.next/server/chunks/ssr/{node_modules__pnpm_1dc-yxd._.js → node_modules__pnpm_1i_chik._.js} +1 -1
  446. package/.next/server/chunks/ssr/{node_modules__pnpm_060kz-j._.js → node_modules__pnpm_1jgju12._.js} +1 -1
  447. package/.next/server/chunks/ssr/{node_modules__pnpm_0up4z7m._.js → node_modules__pnpm_1n9oeu0._.js} +1 -1
  448. package/.next/server/chunks/ssr/node_modules__pnpm_1oygi6o._.js +3 -0
  449. package/.next/server/chunks/ssr/node_modules__pnpm_1oygi6o._.js.map +1 -0
  450. package/.next/server/chunks/ssr/node_modules__pnpm_1ukodtk._.js +3 -0
  451. package/.next/server/chunks/ssr/node_modules__pnpm_1ukodtk._.js.map +1 -0
  452. package/.next/server/chunks/ssr/{node_modules__pnpm_05-p8zy._.js → node_modules__pnpm_1ws3ez9._.js} +1 -1
  453. package/.next/server/chunks/ssr/{node_modules__pnpm_0gp90ei._.js → node_modules__pnpm_1ydeqw6._.js} +1 -1
  454. package/.next/server/chunks/ssr/{node_modules__pnpm_0jlzk5z._.js → node_modules__pnpm_1zme4rg._.js} +1 -1
  455. package/.next/server/chunks/ssr/{node_modules__pnpm_1oaf50x._.js → node_modules__pnpm_1zum4yd._.js} +1 -1
  456. package/.next/server/chunks/ssr/{node_modules__pnpm_0vuao3_._.js → node_modules__pnpm_2045l51._.js} +1 -1
  457. package/.next/server/chunks/ssr/src_1e9kctc._.js +3 -0
  458. package/.next/server/chunks/ssr/src_1e9kctc._.js.map +1 -0
  459. package/.next/server/chunks/ssr/src_app_(app)_chat_page_tsx_0c3e4l4._.js +1 -1
  460. package/.next/server/chunks/ssr/src_app_(app)_chat_page_tsx_0c3e4l4._.js.map +1 -1
  461. package/.next/server/chunks/ssr/src_app_(app)_graph_page_tsx_1yudb7h._.js +3 -0
  462. package/.next/server/chunks/ssr/src_app_(app)_graph_page_tsx_1yudb7h._.js.map +1 -0
  463. package/.next/server/chunks/ssr/src_app_(app)_layout_tsx_1yu5hom._.js +1 -1
  464. package/.next/server/chunks/ssr/src_app_(app)_layout_tsx_1yu5hom._.js.map +1 -1
  465. package/.next/server/chunks/ssr/src_app_(app)_memory_page_tsx_19jhb1c._.js +3 -2
  466. package/.next/server/chunks/ssr/src_app_(app)_memory_page_tsx_19jhb1c._.js.map +1 -1
  467. package/.next/server/chunks/ssr/src_components_chat_ChatView_tsx_0h5j-e2._.js +1 -1
  468. package/.next/server/chunks/ssr/src_components_chat_ChatView_tsx_0h5j-e2._.js.map +1 -1
  469. package/.next/server/chunks/ssr/src_components_roadmap_RoadmapNodes_tsx_0up_ygp._.js +3 -0
  470. package/.next/server/chunks/ssr/src_components_roadmap_RoadmapNodes_tsx_0up_ygp._.js.map +1 -0
  471. package/.next/server/chunks/ssr/src_context_ChatContext_tsx_0lowp8p._.js +2 -2
  472. package/.next/server/chunks/ssr/src_context_ChatContext_tsx_0lowp8p._.js.map +1 -1
  473. package/.next/server/middleware-build-manifest.js +3 -3
  474. package/.next/server/next-font-manifest.js +1 -1
  475. package/.next/server/next-font-manifest.json +4 -0
  476. package/.next/server/pages/404.html +1 -1
  477. package/.next/server/pages/500.html +1 -1
  478. package/.next/server/prefetch-hints.json +19 -0
  479. package/.next/server/server-reference-manifest.js +1 -1
  480. package/.next/server/server-reference-manifest.json +1 -1
  481. package/.next/static/chunks/03tzhv775qv5m.js +1 -0
  482. package/.next/static/chunks/05rjl54wa6y43.js +1 -0
  483. package/.next/static/chunks/0_8ovyz2sbr3p.js +1 -0
  484. package/.next/static/chunks/0do6j4i1v_c6s.js +1 -0
  485. package/.next/static/chunks/0eax07u1ta6tp.css +1 -0
  486. package/.next/static/chunks/{3xqcluqa32mjv.js → 0h52yb69w77nq.js} +2 -2
  487. package/.next/static/chunks/0kb25y5g772mn.js +1 -0
  488. package/.next/static/chunks/0lfd3aomz4wv4.js +1 -0
  489. package/.next/static/chunks/0pmpdvev8bf-o.js +1 -0
  490. package/.next/static/chunks/0po8atank1p02.js +12 -0
  491. package/.next/static/chunks/{1hh2cxd9ndxf-.js → 10itjt9fhlzr1.js} +13 -13
  492. package/.next/static/chunks/11ou9nrpdg4qo.js +3 -0
  493. package/.next/static/chunks/1b9r_vdcewfu7.js +1 -0
  494. package/.next/static/chunks/1g7st54huk4if.js +1 -0
  495. package/.next/static/chunks/1l8fp2uesk29q.js +1 -0
  496. package/.next/static/chunks/1v63qs4kxxcfh.js +1 -0
  497. package/.next/static/chunks/36s2k2k_w-or8.js +1 -0
  498. package/.next/static/chunks/3ctec-7mnm19m.js +1 -0
  499. package/.next/static/chunks/3x43gd45wlhbl.js +1 -0
  500. package/.next/static/chunks/40diykjra8f9n.js +2107 -0
  501. package/README.md +16 -8
  502. package/package.json +1 -1
  503. package/.next/server/app/api/backlinks/route/app-paths-manifest.json +0 -3
  504. package/.next/server/app/api/backlinks/route.js +0 -8
  505. package/.next/server/app/api/backlinks/route.js.nft.json +0 -1
  506. package/.next/server/app/api/backlinks/route_client-reference-manifest.js +0 -3
  507. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0krkw4y._.js +0 -3
  508. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0l0xzie._.js +0 -3
  509. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0pgjvhr._.js +0 -3
  510. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0r-keh6._.js +0 -3
  511. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0tvfbjt._.js +0 -3
  512. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0u4b8_f._.js +0 -3
  513. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0ud37xh._.js +0 -3
  514. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0v3ar-t._.js +0 -3
  515. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0wk0b65._.js +0 -3
  516. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0wqkd2r._.js +0 -3
  517. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0wypotx._.js +0 -3
  518. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0yuq-9s._.js +0 -3
  519. package/.next/server/chunks/11mp_@anthropic-ai_sdk_0z-e57x._.js +0 -3
  520. package/.next/server/chunks/11mp_@anthropic-ai_sdk_108ltz4._.js +0 -3
  521. package/.next/server/chunks/11mp_@anthropic-ai_sdk_10c_i6_._.js +0 -3
  522. package/.next/server/chunks/11mp_@anthropic-ai_sdk_14jogs8._.js +0 -3
  523. package/.next/server/chunks/11mp_@anthropic-ai_sdk_15u-n39._.js +0 -3
  524. package/.next/server/chunks/11mp_@anthropic-ai_sdk_194ahxu._.js +0 -3
  525. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1ahph2t._.js +0 -3
  526. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1ajy77y._.js +0 -3
  527. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1b57s9p._.js +0 -3
  528. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1brf2xn._.js +0 -3
  529. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1btfw2x._.js +0 -3
  530. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1cyy_q6._.js +0 -3
  531. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1fz9fev._.js +0 -3
  532. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1i_rz7h._.js +0 -3
  533. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1it8zsv._.js +0 -3
  534. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1jzusvd._.js +0 -3
  535. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1lfknr2._.js +0 -3
  536. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1mewd-3._.js +0 -3
  537. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1mkm4u_._.js +0 -3
  538. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1rggqq3._.js +0 -3
  539. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1rhjf1m._.js +0 -3
  540. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1s6ks8c._.js +0 -3
  541. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1u8z4hp._.js +0 -3
  542. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1vyy3_4._.js +0 -3
  543. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_036bvwf._.js +0 -3
  544. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_046taqd._.js +0 -3
  545. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_0bxad5f._.js +0 -3
  546. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_0g65abt._.js +0 -3
  547. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_0pb9bu1._.js +0 -3
  548. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_120-cio._.js +0 -3
  549. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_13uyu_v._.js +0 -3
  550. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_13x2ww0._.js +0 -3
  551. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_17og64d._.js +0 -3
  552. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1e_sh4o._.js +0 -3
  553. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1ecuo9i._.js +0 -3
  554. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1go8d0m._.js +0 -3
  555. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1i13ryx._.js +0 -3
  556. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1jv_hid._.js +0 -3
  557. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1mh5mqk._.js +0 -3
  558. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1oq7e8u._.js +0 -3
  559. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1p-cq-p._.js +0 -3
  560. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1the3g0._.js +0 -3
  561. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1xubh-w._.js +0 -3
  562. package/.next/server/chunks/[root-of-the-server]__0jr_5eq._.js +0 -110
  563. package/.next/server/chunks/[root-of-the-server]__0jr_5eq._.js.map +0 -1
  564. package/.next/server/chunks/[root-of-the-server]__0p4w_o-._.js +0 -3
  565. package/.next/server/chunks/[root-of-the-server]__0p4w_o-._.js.map +0 -1
  566. package/.next/server/chunks/[root-of-the-server]__19rxcu4._.js +0 -110
  567. package/.next/server/chunks/[root-of-the-server]__19rxcu4._.js.map +0 -1
  568. package/.next/server/chunks/[root-of-the-server]__1af-wfk._.js +0 -3
  569. package/.next/server/chunks/[root-of-the-server]__1qd-ecl._.js +0 -110
  570. package/.next/server/chunks/[root-of-the-server]__1qd-ecl._.js.map +0 -1
  571. package/.next/server/chunks/_next-internal_server_app_api_backlinks_route_actions_1_58m09.js +0 -3
  572. package/.next/server/chunks/ssr/1x05_lucide-react_dist_esm_icons_triangle-alert_mjs_0ei-mpz._.js +0 -3
  573. package/.next/server/chunks/ssr/1x05_lucide-react_dist_esm_icons_triangle-alert_mjs_0ei-mpz._.js.map +0 -1
  574. package/.next/server/chunks/ssr/_0h91h9n._.js +0 -3
  575. package/.next/server/chunks/ssr/_0h91h9n._.js.map +0 -1
  576. package/.next/server/chunks/ssr/_0idb-vo._.js.map +0 -1
  577. package/.next/server/chunks/ssr/_0ip7sg0._.js +0 -3
  578. package/.next/server/chunks/ssr/_0ip7sg0._.js.map +0 -1
  579. package/.next/server/chunks/ssr/_0ks_bep._.js +0 -3
  580. package/.next/server/chunks/ssr/_0ks_bep._.js.map +0 -1
  581. package/.next/server/chunks/ssr/_0lqrpim._.js +0 -3
  582. package/.next/server/chunks/ssr/_0lqrpim._.js.map +0 -1
  583. package/.next/server/chunks/ssr/_0qp3gu7._.js +0 -3
  584. package/.next/server/chunks/ssr/_0qp3gu7._.js.map +0 -1
  585. package/.next/server/chunks/ssr/_197jl3g._.js +0 -3
  586. package/.next/server/chunks/ssr/_197jl3g._.js.map +0 -1
  587. package/.next/server/chunks/ssr/_1el478k._.js +0 -3
  588. package/.next/server/chunks/ssr/_1el478k._.js.map +0 -1
  589. package/.next/server/chunks/ssr/_1t76zdx._.js +0 -3
  590. package/.next/server/chunks/ssr/_1t76zdx._.js.map +0 -1
  591. package/.next/server/chunks/ssr/node_modules__pnpm_0al3nfy._.js +0 -3
  592. package/.next/server/chunks/ssr/node_modules__pnpm_0al3nfy._.js.map +0 -1
  593. package/.next/server/chunks/ssr/src_components_0eyr_zi._.js +0 -3
  594. package/.next/server/chunks/ssr/src_components_0eyr_zi._.js.map +0 -1
  595. package/.next/server/chunks/ssr/src_components_1s861m8._.js +0 -3
  596. package/.next/server/chunks/ssr/src_components_1s861m8._.js.map +0 -1
  597. package/.next/static/chunks/08sqjdq-43nbt.js +0 -1
  598. package/.next/static/chunks/09r4_4wr0aga3.js +0 -1
  599. package/.next/static/chunks/0mgifb98wbesa.js +0 -1
  600. package/.next/static/chunks/0xw_sa58zqv5s.js +0 -1
  601. package/.next/static/chunks/1-a3-6c_nce84.js +0 -1
  602. package/.next/static/chunks/149fj-mseo8q3.css +0 -1
  603. package/.next/static/chunks/1c11k-snzp541.js +0 -1
  604. package/.next/static/chunks/1n4_u3om7ye4z.js +0 -2107
  605. package/.next/static/chunks/1qhndyi2gdbkf.js +0 -1
  606. package/.next/static/chunks/1x40-5s54wd5m.js +0 -11
  607. package/.next/static/chunks/24u_rc2tbkhai.js +0 -3
  608. package/.next/static/chunks/30s090l71e1gs.js +0 -1
  609. package/.next/static/chunks/3t8px4aygy1s9.js +0 -1
  610. package/.next/static/chunks/44gr_v5092gwh.js +0 -1
  611. /package/.next/server/app/{api/backlinks/route → (app)/graph/page}/server-reference-manifest.json +0 -0
  612. /package/.next/server/app/{api/backlinks/route.js.map → (app)/graph/page.js.map} +0 -0
  613. /package/.next/server/app/api/{backlinks → docs/graph}/route/build-manifest.json +0 -0
  614. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_053zt3c._.js.map → 11mp_@anthropic-ai_sdk_013qeb4._.js.map} +0 -0
  615. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0_zx69c._.js.map → 11mp_@anthropic-ai_sdk_05ck8py._.js.map} +0 -0
  616. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0gvxfg3._.js.map → 11mp_@anthropic-ai_sdk_05w8m72._.js.map} +0 -0
  617. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0gx5t2l._.js.map → 11mp_@anthropic-ai_sdk_086oevc._.js.map} +0 -0
  618. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0krkw4y._.js.map → 11mp_@anthropic-ai_sdk_08rl0hf._.js.map} +0 -0
  619. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0l0xzie._.js.map → 11mp_@anthropic-ai_sdk_09ujrsu._.js.map} +0 -0
  620. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0pgjvhr._.js.map → 11mp_@anthropic-ai_sdk_0c3_7p7._.js.map} +0 -0
  621. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0r-keh6._.js.map → 11mp_@anthropic-ai_sdk_0cto43x._.js.map} +0 -0
  622. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0tvfbjt._.js.map → 11mp_@anthropic-ai_sdk_0fgisb_._.js.map} +0 -0
  623. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0u4b8_f._.js.map → 11mp_@anthropic-ai_sdk_0fy8wd3._.js.map} +0 -0
  624. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0ud37xh._.js.map → 11mp_@anthropic-ai_sdk_0fyvizf._.js.map} +0 -0
  625. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0v3ar-t._.js.map → 11mp_@anthropic-ai_sdk_0hg0i2g._.js.map} +0 -0
  626. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0wk0b65._.js.map → 11mp_@anthropic-ai_sdk_0i0sz05._.js.map} +0 -0
  627. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0wqkd2r._.js.map → 11mp_@anthropic-ai_sdk_0l0j9c6._.js.map} +0 -0
  628. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0wypotx._.js.map → 11mp_@anthropic-ai_sdk_0lcm61d._.js.map} +0 -0
  629. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0yuq-9s._.js.map → 11mp_@anthropic-ai_sdk_0qtva5j._.js.map} +0 -0
  630. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0z-e57x._.js.map → 11mp_@anthropic-ai_sdk_0r4fkdu._.js.map} +0 -0
  631. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_108ltz4._.js.map → 11mp_@anthropic-ai_sdk_0wbae0t._.js.map} +0 -0
  632. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_10c_i6_._.js.map → 11mp_@anthropic-ai_sdk_0wxyz1t._.js.map} +0 -0
  633. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_14jogs8._.js.map → 11mp_@anthropic-ai_sdk_0y2cods._.js.map} +0 -0
  634. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_15u-n39._.js.map → 11mp_@anthropic-ai_sdk_0zu0fj1._.js.map} +0 -0
  635. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_194ahxu._.js.map → 11mp_@anthropic-ai_sdk_0zxpgt0._.js.map} +0 -0
  636. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1ahph2t._.js.map → 11mp_@anthropic-ai_sdk_10_cxcd._.js.map} +0 -0
  637. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1ajy77y._.js.map → 11mp_@anthropic-ai_sdk_10gb7d1._.js.map} +0 -0
  638. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1b57s9p._.js.map → 11mp_@anthropic-ai_sdk_12q70bs._.js.map} +0 -0
  639. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1brf2xn._.js.map → 11mp_@anthropic-ai_sdk_149ltk3._.js.map} +0 -0
  640. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1btfw2x._.js.map → 11mp_@anthropic-ai_sdk_165_uiw._.js.map} +0 -0
  641. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1cyy_q6._.js.map → 11mp_@anthropic-ai_sdk_19w4zh6._.js.map} +0 -0
  642. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1fz9fev._.js.map → 11mp_@anthropic-ai_sdk_1adck-s._.js.map} +0 -0
  643. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1i_rz7h._.js.map → 11mp_@anthropic-ai_sdk_1c2dwoi._.js.map} +0 -0
  644. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1it8zsv._.js.map → 11mp_@anthropic-ai_sdk_1d9lw_2._.js.map} +0 -0
  645. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1jzusvd._.js.map → 11mp_@anthropic-ai_sdk_1db6a7p._.js.map} +0 -0
  646. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1lfknr2._.js.map → 11mp_@anthropic-ai_sdk_1h2f90s._.js.map} +0 -0
  647. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1mewd-3._.js.map → 11mp_@anthropic-ai_sdk_1k5_i1z._.js.map} +0 -0
  648. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1mkm4u_._.js.map → 11mp_@anthropic-ai_sdk_1p3mv6i._.js.map} +0 -0
  649. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1rggqq3._.js.map → 11mp_@anthropic-ai_sdk_1qoom5s._.js.map} +0 -0
  650. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1rhjf1m._.js.map → 11mp_@anthropic-ai_sdk_1qsbcbe._.js.map} +0 -0
  651. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1s6ks8c._.js.map → 11mp_@anthropic-ai_sdk_1rk0x59._.js.map} +0 -0
  652. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1u8z4hp._.js.map → 11mp_@anthropic-ai_sdk_1sd98mi._.js.map} +0 -0
  653. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1vyy3_4._.js.map → 11mp_@anthropic-ai_sdk_1sumqg8._.js.map} +0 -0
  654. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_036bvwf._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_018s_10._.js.map} +0 -0
  655. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_046taqd._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_08d6i7w._.js.map} +0 -0
  656. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_0bxad5f._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_09_fd9g._.js.map} +0 -0
  657. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_0g65abt._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_0eopml6._.js.map} +0 -0
  658. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_0pb9bu1._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_0f5epel._.js.map} +0 -0
  659. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_120-cio._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_0okfnhu._.js.map} +0 -0
  660. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_13uyu_v._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_0s8-ha8._.js.map} +0 -0
  661. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_13x2ww0._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_0ujs27r._.js.map} +0 -0
  662. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_17og64d._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_0uo7rs8._.js.map} +0 -0
  663. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_1e_sh4o._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_0vyq_2d._.js.map} +0 -0
  664. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_1ecuo9i._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_0w3js74._.js.map} +0 -0
  665. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_1go8d0m._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_0xa4-uq._.js.map} +0 -0
  666. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_1i13ryx._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_113y3so._.js.map} +0 -0
  667. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_1jv_hid._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_12qcr96._.js.map} +0 -0
  668. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_1mh5mqk._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_13ixdy8._.js.map} +0 -0
  669. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_1oq7e8u._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_1708vst._.js.map} +0 -0
  670. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_1p-cq-p._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_1_rdguq._.js.map} +0 -0
  671. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_1the3g0._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_1bgpe23._.js.map} +0 -0
  672. /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_1xubh-w._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_1f-tphn._.js.map} +0 -0
  673. /package/.next/server/chunks/{[root-of-the-server]__00o3mbd._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_1h1pqdh._.js.map} +0 -0
  674. /package/.next/server/chunks/{[root-of-the-server]__06z8i6e._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_1hfj_1d._.js.map} +0 -0
  675. /package/.next/server/chunks/{[root-of-the-server]__1kw2vct._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_1ih2qzz._.js.map} +0 -0
  676. /package/.next/server/chunks/{_next-internal_server_app_api_backlinks_route_actions_1_58m09.js.map → 11mp_@anthropic-ai_sdk_index_mjs_1jatyl1._.js.map} +0 -0
  677. /package/.next/server/chunks/{ssr/0_nd_mermaid_dist_mermaid_core_mjs_0itmgkm._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_1v1zbha._.js.map} +0 -0
  678. /package/.next/server/chunks/{ssr/1u84_katex_dist_katex_mjs_08jn-sj._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_1vyqs5z._.js.map} +0 -0
  679. /package/.next/server/chunks/{[root-of-the-server]__0kuhhna._.js.map → [root-of-the-server]__00usbi3._.js.map} +0 -0
  680. /package/.next/server/chunks/{[root-of-the-server]__1gr4e22._.js.map → [root-of-the-server]__04cwur0._.js.map} +0 -0
  681. /package/.next/server/chunks/{[root-of-the-server]__06dfvb0._.js.map → [root-of-the-server]__04ri_ci._.js.map} +0 -0
  682. /package/.next/server/chunks/{ssr/_1s2ya35._.js.map → [root-of-the-server]__05-be3n._.js.map} +0 -0
  683. /package/.next/server/chunks/{[root-of-the-server]__09j_-hj._.js.map → [root-of-the-server]__0756_60._.js.map} +0 -0
  684. /package/.next/server/chunks/{[root-of-the-server]__1h5hb6u._.js.map → [root-of-the-server]__089ay-q._.js.map} +0 -0
  685. /package/.next/server/chunks/{[root-of-the-server]__15jhpgl._.js.map → [root-of-the-server]__0d4t4q6._.js.map} +0 -0
  686. /package/.next/server/chunks/{[root-of-the-server]__01n_hoh._.js.map → [root-of-the-server]__0dgwykw._.js.map} +0 -0
  687. /package/.next/server/chunks/{ssr/node_modules__pnpm_0iqb0_x._.js.map → [root-of-the-server]__0n0myt9._.js.map} +0 -0
  688. /package/.next/server/chunks/{[root-of-the-server]__076d4xm._.js.map → [root-of-the-server]__0s-j6z-._.js.map} +0 -0
  689. /package/.next/server/chunks/{[root-of-the-server]__1e_o8h4._.js.map → [root-of-the-server]__0yaxn8g._.js.map} +0 -0
  690. /package/.next/server/chunks/{[root-of-the-server]__1-1hfrj._.js.map → [root-of-the-server]__16smlkg._.js.map} +0 -0
  691. /package/.next/server/chunks/{[root-of-the-server]__19w-7h9._.js.map → [root-of-the-server]__19yo85m._.js.map} +0 -0
  692. /package/.next/server/chunks/{[root-of-the-server]__1rjgpbm._.js.map → [root-of-the-server]__1mnzsbh._.js.map} +0 -0
  693. /package/.next/server/chunks/{[root-of-the-server]__1spley9._.js.map → [root-of-the-server]__1s0t8r3._.js.map} +0 -0
  694. /package/.next/server/chunks/{[root-of-the-server]__1lt5cds._.js.map → [root-of-the-server]__1sd3l-d._.js.map} +0 -0
  695. /package/.next/server/chunks/{[root-of-the-server]__05tx02j._.js.map → [root-of-the-server]__1vzxnjb._.js.map} +0 -0
  696. /package/.next/server/chunks/{[root-of-the-server]__0uu9pgg._.js.map → [root-of-the-server]__1zeys20._.js.map} +0 -0
  697. /package/.next/server/chunks/{ssr/node_modules__pnpm_0rsfj9v._.js.map → _next-internal_server_app_api_docs_graph_route_actions_1nzoqf-.js.map} +0 -0
  698. /package/.next/server/chunks/{ssr/node_modules__pnpm_0s7j-tv._.js.map → _next-internal_server_app_api_docs_links_route_actions_1q-6jeg.js.map} +0 -0
  699. /package/.next/server/chunks/ssr/{node_modules__pnpm_1fry8_2._.js.map → node_modules__pnpm_035haet._.js.map} +0 -0
  700. /package/.next/server/chunks/ssr/{node_modules__pnpm_0j7asqf._.js.map → node_modules__pnpm_03an60e._.js.map} +0 -0
  701. /package/.next/server/chunks/ssr/{node_modules__pnpm_0eub17j._.js.map → node_modules__pnpm_03mp7qw._.js.map} +0 -0
  702. /package/.next/server/chunks/ssr/{node_modules__pnpm_0_83tv8._.js.map → node_modules__pnpm_03mpmzx._.js.map} +0 -0
  703. /package/.next/server/chunks/ssr/{node_modules__pnpm_0e55e7-._.js.map → node_modules__pnpm_06_8fr8._.js.map} +0 -0
  704. /package/.next/server/chunks/ssr/{node_modules__pnpm_16bj927._.js.map → node_modules__pnpm_09nd7ia._.js.map} +0 -0
  705. /package/.next/server/chunks/ssr/{node_modules__pnpm_1ch46nl._.js.map → node_modules__pnpm_0_e05ka._.js.map} +0 -0
  706. /package/.next/server/chunks/ssr/{node_modules__pnpm_02p2rqs._.js.map → node_modules__pnpm_0iu4132._.js.map} +0 -0
  707. /package/.next/server/chunks/ssr/{node_modules__pnpm_0abf_e9._.js.map → node_modules__pnpm_0jampur._.js.map} +0 -0
  708. /package/.next/server/chunks/ssr/{node_modules__pnpm_1hqh95z._.js.map → node_modules__pnpm_0lkvbt-._.js.map} +0 -0
  709. /package/.next/server/chunks/ssr/{node_modules__pnpm_14j18h7._.js.map → node_modules__pnpm_0mqeoh-._.js.map} +0 -0
  710. /package/.next/server/chunks/ssr/{node_modules__pnpm_0v_mhl7._.js.map → node_modules__pnpm_0oyo3yo._.js.map} +0 -0
  711. /package/.next/server/chunks/ssr/{node_modules__pnpm_00lsytc._.js.map → node_modules__pnpm_0rq9x9q._.js.map} +0 -0
  712. /package/.next/server/chunks/ssr/{node_modules__pnpm_0s63lee._.js.map → node_modules__pnpm_0tn5pg3._.js.map} +0 -0
  713. /package/.next/server/chunks/ssr/{node_modules__pnpm_0_ajzll._.js.map → node_modules__pnpm_0x5wj-4._.js.map} +0 -0
  714. /package/.next/server/chunks/ssr/{node_modules__pnpm_1gpkxns._.js.map → node_modules__pnpm_139-v1i._.js.map} +0 -0
  715. /package/.next/server/chunks/ssr/{node_modules__pnpm_1dc-yxd._.js.map → node_modules__pnpm_1i_chik._.js.map} +0 -0
  716. /package/.next/server/chunks/ssr/{node_modules__pnpm_060kz-j._.js.map → node_modules__pnpm_1jgju12._.js.map} +0 -0
  717. /package/.next/server/chunks/ssr/{node_modules__pnpm_0up4z7m._.js.map → node_modules__pnpm_1n9oeu0._.js.map} +0 -0
  718. /package/.next/server/chunks/ssr/{node_modules__pnpm_05-p8zy._.js.map → node_modules__pnpm_1ws3ez9._.js.map} +0 -0
  719. /package/.next/server/chunks/ssr/{node_modules__pnpm_0gp90ei._.js.map → node_modules__pnpm_1ydeqw6._.js.map} +0 -0
  720. /package/.next/server/chunks/ssr/{node_modules__pnpm_0jlzk5z._.js.map → node_modules__pnpm_1zme4rg._.js.map} +0 -0
  721. /package/.next/server/chunks/ssr/{node_modules__pnpm_1oaf50x._.js.map → node_modules__pnpm_1zum4yd._.js.map} +0 -0
  722. /package/.next/server/chunks/ssr/{node_modules__pnpm_0vuao3_._.js.map → node_modules__pnpm_2045l51._.js.map} +0 -0
  723. /package/.next/static/{qCiKQ9_g49vaoQ-Fewybk → P1gxTEpKVh-OOtIXC432U}/_buildManifest.js +0 -0
  724. /package/.next/static/{qCiKQ9_g49vaoQ-Fewybk → P1gxTEpKVh-OOtIXC432U}/_clientMiddlewareManifest.js +0 -0
  725. /package/.next/static/{qCiKQ9_g49vaoQ-Fewybk → P1gxTEpKVh-OOtIXC432U}/_ssgManifest.js +0 -0
@@ -0,0 +1,3 @@
1
+ module.exports=[89032,a=>{"use strict";var b=a.i(256857);let c={name:"info",size:24,node:[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 16v-4",key:"1dtifu"}],["path",{d:"M12 8h.01",key:"e9boi3"}]]};c.node;let d=(0,b.default)(c);a.s(["Info",0,d],89032)},815122,a=>{"use strict";var b=a.i(662145),c=a.i(795667),d=a.i(108280),e=a.i(368114),f=a.i(685698),g=a.i(598984);let h={running:"Agent working","needs-answer":"Agent needs you",review:"Plan to review"};a.s(["AgentDot",0,function({attach:a}){let c=(0,f.useItemAgent)(a);return c?(0,b.jsx)(g.StatusMarker,{status:c.status,label:h[c.status]}):null},"AgentMark",0,function({attach:a,className:g}){let i=(0,f.useItemAgent)(a),{show:j}=(0,f.useChats)();if(!i)return null;let k=h[i.status];return(0,b.jsxs)("button",{type:"button",onClick:a=>{a.stopPropagation(),j(i.chatId)},title:`${k} \xb7 open chat`,"aria-label":`${k}, open chat`,className:(0,e.cn)("nodrag inline-flex shrink-0 items-center gap-1 rounded-full border px-1.5 py-px font-mono text-[10px] leading-4 animate-fade-in transition-colors duration-(--duration-fast)","running"===i.status&&"border-accent/50 text-accent hover:bg-accent/10","needs-answer"===i.status&&"border-amber/50 text-amber hover:bg-amber/10","review"===i.status&&"border-accent/50 bg-accent/10 text-accent hover:bg-accent/20",g),children:["running"===i.status?(0,b.jsx)(d.Loader2,{className:"size-3 animate-spin","aria-hidden":!0}):(0,b.jsx)(c.Bot,{className:"size-3","aria-hidden":!0}),k]})}])}];
2
+
3
+ //# sourceMappingURL=_0696iog._.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../node_modules/.pnpm/lucide-react%401.48.0_react%4019.3.0/node_modules/lucide-react/src/icons/info.ts","../../../../src/components/chat/AgentMark.tsx"],"sourcesContent":["import createLucideIcon from '../createLucideIcon';\nimport type { LucideIconNode, LucideIconData } from '../types';\n\nexport const __iconData: LucideIconData = {\n name: 'info',\n size: 24,\n node: [\n ['circle', { cx: '12', cy: '12', r: '10', key: '1mglay' }],\n ['path', { d: 'M12 16v-4', key: '1dtifu' }],\n ['path', { d: 'M12 8h.01', key: 'e9boi3' }],\n ],\n};\n\n/**\n * @deprecated Access `__iconData` instead.\n */\nexport const __iconNode: LucideIconNode[] = __iconData.node;\n\n/**\n * @component @name Info\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSIxMCIgLz4KICA8cGF0aCBkPSJNMTIgMTZ2LTQiIC8+CiAgPHBhdGggZD0iTTEyIDhoLjAxIiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/info\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Info = createLucideIcon(__iconData);\n\nexport default Info;\n","\"use client\"\n\nimport { Bot, Loader2 } from \"lucide-react\"\nimport { cn } from \"@/lib/utils\"\nimport { useChats, useItemAgent } from \"@/context/ChatContext\"\nimport type { Attach, ItemAgent } from \"@/lib/chats\"\nimport { StatusMarker } from \"./StatusMarker\"\n\nexport const AGENT_LABEL: Record<ItemAgent[\"status\"], string> = {\n running: \"Agent working\",\n \"needs-answer\": \"Agent needs you\",\n review: \"Plan to review\",\n}\n\n/**\n * Pill on an epic/task while a chat works on it; click opens that chat.\n * `nodrag` + stopPropagation keep a React Flow node from dragging/selecting on click.\n */\nexport function AgentMark({ attach, className }: { attach: Attach; className?: string }) {\n const agent = useItemAgent(attach)\n const { show } = useChats()\n if (!agent) return null\n const label = AGENT_LABEL[agent.status]\n return (\n <button\n type=\"button\"\n onClick={(e) => { e.stopPropagation(); show(agent.chatId) }}\n title={`${label} · open chat`}\n aria-label={`${label}, open chat`}\n className={cn(\n \"nodrag inline-flex shrink-0 items-center gap-1 rounded-full border px-1.5 py-px font-mono text-[10px] leading-4 animate-fade-in transition-colors duration-(--duration-fast)\",\n agent.status === \"running\" && \"border-accent/50 text-accent hover:bg-accent/10\",\n agent.status === \"needs-answer\" && \"border-amber/50 text-amber hover:bg-amber/10\",\n agent.status === \"review\" && \"border-accent/50 bg-accent/10 text-accent hover:bg-accent/20\",\n className,\n )}\n >\n {agent.status === \"running\" ? <Loader2 className=\"size-3 animate-spin\" aria-hidden /> : <Bot className=\"size-3\" aria-hidden />}\n {label}\n </button>\n )\n}\n\n/** Non-interactive variant for places that are already a button (timeline markers, board cards, task rows). */\nexport function AgentDot({ attach }: { attach: Attach }) {\n const agent = useItemAgent(attach)\n if (!agent) return null\n return <StatusMarker status={agent.status} label={AGENT_LABEL[agent.status]} />\n}\n"],"names":["AGENT_LABEL","running","review","AgentMark","attach","className","agent","show","label","status","type","onClick","e","stopPropagation","chatId","title","AgentDot"],"mappings":"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","ignoreList":[0]}
@@ -0,0 +1,3 @@
1
+ module.exports=[658978,a=>{"use strict";var b=a.i(256857);let c={name:"calendar",size:24,node:[["path",{d:"M8 2v3",key:"1ioesn"}],["path",{d:"M16 2v3",key:"otl347"}],["rect",{x:"3",y:"3",width:"18",height:"18",rx:"2",key:"h1oib"}],["path",{d:"M3 9h18",key:"1pudct"}]]};c.node;let d=(0,b.default)(c);a.s(["Calendar",0,d],658978)},388637,a=>{"use strict";var b=a.i(256857);let c={name:"circle-dashed",size:24,node:[["path",{d:"M10.1 2.182a10 10 0 0 1 3.8 0",key:"5ilxe3"}],["path",{d:"M13.9 21.818a10 10 0 0 1-3.8 0",key:"11zvb9"}],["path",{d:"M17.609 3.721a10 10 0 0 1 2.69 2.7",key:"1iw5b2"}],["path",{d:"M2.182 13.9a10 10 0 0 1 0-3.8",key:"c0bmvh"}],["path",{d:"M20.279 17.609a10 10 0 0 1-2.7 2.69",key:"1ruxm7"}],["path",{d:"M21.818 10.1a10 10 0 0 1 0 3.8",key:"qkgqxc"}],["path",{d:"M3.721 6.391a10 10 0 0 1 2.7-2.69",key:"1mcia2"}],["path",{d:"M6.391 20.279a10 10 0 0 1-2.69-2.7",key:"1fvljs"}]]};c.node;let d=(0,b.default)(c);a.s(["CircleDashed",0,d],388637)},763747,787714,891397,a=>{"use strict";var b=a.i(256857);let c={name:"ellipsis",size:24,node:[["circle",{cx:"12",cy:"12",r:"1",key:"41hilf"}],["circle",{cx:"19",cy:"12",r:"1",key:"1wjl8i"}],["circle",{cx:"5",cy:"12",r:"1",key:"1pcz8c"}]],aliases:["more-horizontal"]};c.node;let d=(0,b.default)(c);a.s(["MoreHorizontal",0,d],763747);var e=a.i(662145),f=a.i(368114),g=a.i(404687),h=a.i(174897),i=a.i(425404),j=a.i(335732);let k=a=>a.stopPropagation(),l="inline-flex min-w-0 items-center gap-1 rounded-sm px-1 -mx-1 text-left outline-hidden hover:bg-surface2 focus-visible:ring-2 focus-visible:ring-accent/60";function m({label:a,value:b,options:c,onChange:d,children:g,className:h}){return(0,e.jsxs)(j.DropdownMenu,{children:[(0,e.jsx)(j.DropdownMenuTrigger,{asChild:!0,children:(0,e.jsx)("button",{type:"button","aria-label":a,draggable:!1,onClick:k,onKeyDown:k,onPointerDown:k,className:(0,f.cn)(l,h),children:g})}),(0,e.jsx)(j.DropdownMenuContent,{align:"start",className:"max-h-72 w-48 overflow-y-auto",onClick:k,onKeyDown:k,children:c.map(a=>(0,e.jsxs)(j.DropdownMenuItem,{onSelect:()=>{a.value!==b&&d(a.value)},children:[a.node??a.label,a.value===b&&(0,e.jsx)(i.Check,{className:"ml-auto size-3.5 text-muted","aria-hidden":!0})]},a.value))})]})}a.s(["InlineDate",0,function({label:a,value:b,onChange:c,children:d,className:g}){let[i,j]=(0,h.useState)(!1),[m,n]=(0,h.useState)(b??""),o=()=>{j(!1),(m||null)!==b&&c(m||null)};return i?(0,e.jsx)("input",{type:"date",autoFocus:!0,"aria-label":a,value:m,onChange:a=>n(a.target.value),onClick:k,onPointerDown:k,onKeyDown:a=>{k(a),"Enter"===a.key&&(a.preventDefault(),o()),"Escape"===a.key&&(a.preventDefault(),j(!1))},onBlur:o,className:"h-6 rounded-sm border border-accent/60 bg-bg px-1 font-mono text-[11px] text-txt scheme-light outline-hidden dark:scheme-dark"}):(0,e.jsx)("button",{type:"button","aria-label":a,draggable:!1,onClick:a=>{k(a),n(b??""),j(!0)},onKeyDown:k,className:(0,f.cn)(l,g),children:d})},"InlineSelect",0,m,"InlineText",0,function({label:a,value:b,onChange:c,children:d,className:g,placeholder:i,startEditing:j=!1,onCancel:m}){let[n,o]=(0,h.useState)(j),[p,q]=(0,h.useState)(b??""),r=()=>{o(!1);let a=p.trim()||null;a!==b?c(a):a||m?.()};return n?(0,e.jsx)("input",{autoFocus:!0,"aria-label":a,value:p,placeholder:i,onChange:a=>q(a.target.value),onClick:k,onPointerDown:k,onKeyDown:a=>{k(a),"Enter"===a.key&&(a.preventDefault(),r()),"Escape"===a.key&&(a.preventDefault(),o(!1),m?.())},onBlur:r,className:"h-7 w-full min-w-0 rounded-sm border border-accent/60 bg-bg px-1.5 text-[13px] text-txt outline-hidden placeholder:text-muted"}):(0,e.jsx)("button",{type:"button","aria-label":a,draggable:!1,onClick:a=>{k(a),q(b??""),o(!0)},onKeyDown:k,className:(0,f.cn)(l,g),children:d})}],787714);let n={P0:"bg-danger/12 text-danger",P1:"bg-amber/12 text-amber",P2:"bg-surface2 text-txt",P3:"bg-surface2 text-muted"};function o({priority:a,className:b}){return(0,e.jsx)("span",{className:(0,f.cn)("inline-flex h-4 shrink-0 items-center rounded-sm px-1 font-mono text-[10px] font-medium leading-none",n[a],b),children:a})}let p=[...g.PRIORITIES.map(a=>({value:a,label:a,node:(0,e.jsx)(o,{priority:a})})),{value:"",label:"No priority",node:(0,e.jsx)("span",{className:"text-muted",children:"No priority"})}];a.s(["PriorityBadge",0,o,"PriorityField",0,function({label:a,value:b,onChange:c,empty:d}){return(0,e.jsx)(m,{label:a,value:b??"",options:p,onChange:a=>c(a||null),children:b?(0,e.jsx)(o,{priority:b}):d??(0,e.jsx)("span",{className:"text-muted",children:"—"})})}],891397)},717143,a=>{"use strict";var b=a.i(256857);let c={name:"folder-input",size:24,node:[["path",{d:"M2 9V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H20a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2v-1",key:"fm4g5t"}],["path",{d:"M2 13h10",key:"pgb2dq"}],["path",{d:"m9 16 3-3-3-3",key:"6m91ic"}]]};c.node;let d=(0,b.default)(c);a.s(["FolderInput",0,d],717143)},340753,a=>{"use strict";var b=a.i(256857);let c={name:"list-checks",size:24,node:[["path",{d:"M13 5h8",key:"a7qcls"}],["path",{d:"M13 12h8",key:"h98zly"}],["path",{d:"M13 19h8",key:"c3s6r1"}],["path",{d:"m3 17 2 2 4-4",key:"1jhpwq"}],["path",{d:"m3 7 2 2 4-4",key:"1obspn"}]]};c.node;let d=(0,b.default)(c);a.s(["ListChecks",0,d],340753)},553415,a=>{"use strict";var b=a.i(256857);let c={name:"list-tree",size:24,node:[["path",{d:"M8 5h13",key:"1pao27"}],["path",{d:"M13 12h8",key:"h98zly"}],["path",{d:"M13 19h8",key:"c3s6r1"}],["path",{d:"M3 10a2 2 0 0 0 2 2h3",key:"1npucw"}],["path",{d:"M3 5v12a2 2 0 0 0 2 2h3",key:"x1gjn2"}]]};c.node;let d=(0,b.default)(c);a.s(["ListTree",0,d],553415)},441852,a=>{"use strict";var b=a.i(256857);let c={name:"message-square",size:24,node:[["path",{d:"M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z",key:"18887p"}]]};c.node;let d=(0,b.default)(c);a.s(["MessageSquare",0,d],441852)},661661,a=>{"use strict";var b=a.i(256857);let c={name:"pencil",size:24,node:[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}],["path",{d:"m15 5 4 4",key:"1mk7zo"}]]};c.node;let d=(0,b.default)(c);a.s(["Pencil",0,d],661661)},551729,a=>{"use strict";var b=a.i(256857);let c={name:"sparkles",size:24,node:[["path",{d:"M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z",key:"1s2grr"}],["path",{d:"M20 2v4",key:"1rf3ol"}],["path",{d:"M22 4h-4",key:"gwowj6"}],["circle",{cx:"4",cy:"20",r:"2",key:"6kqj1y"}]],aliases:["stars"]};c.node;let d=(0,b.default)(c);a.s(["Sparkles",0,d],551729)},340933,a=>{"use strict";var b=a.i(256857);let c={name:"triangle-alert",size:24,node:[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]],aliases:["alert-triangle"]};c.node;let d=(0,b.default)(c);a.s(["AlertTriangle",0,d],340933)},815122,a=>{"use strict";var b=a.i(662145),c=a.i(795667),d=a.i(108280),e=a.i(368114),f=a.i(685698),g=a.i(598984);let h={running:"Agent working","needs-answer":"Agent needs you",review:"Plan to review"};a.s(["AgentDot",0,function({attach:a}){let c=(0,f.useItemAgent)(a);return c?(0,b.jsx)(g.StatusMarker,{status:c.status,label:h[c.status]}):null},"AgentMark",0,function({attach:a,className:g}){let i=(0,f.useItemAgent)(a),{show:j}=(0,f.useChats)();if(!i)return null;let k=h[i.status];return(0,b.jsxs)("button",{type:"button",onClick:a=>{a.stopPropagation(),j(i.chatId)},title:`${k} \xb7 open chat`,"aria-label":`${k}, open chat`,className:(0,e.cn)("nodrag inline-flex shrink-0 items-center gap-1 rounded-full border px-1.5 py-px font-mono text-[10px] leading-4 animate-fade-in transition-colors duration-(--duration-fast)","running"===i.status&&"border-accent/50 text-accent hover:bg-accent/10","needs-answer"===i.status&&"border-amber/50 text-amber hover:bg-amber/10","review"===i.status&&"border-accent/50 bg-accent/10 text-accent hover:bg-accent/20",g),children:["running"===i.status?(0,b.jsx)(d.Loader2,{className:"size-3 animate-spin","aria-hidden":!0}):(0,b.jsx)(c.Bot,{className:"size-3","aria-hidden":!0}),k]})}])},21215,a=>{"use strict";var b=a.i(662145),c=a.i(368114);a.s(["EmptyState",0,function({icon:a,message:d,subMessage:e,bordered:f}){return(0,b.jsxs)("div",{className:(0,c.cn)("text-center py-16 text-muted text-sm",f&&"border border-dashed border-border rounded-xl"),children:[(0,b.jsx)("p",{className:"text-3xl mb-3",children:a}),(0,b.jsx)("p",{children:d}),e&&(0,b.jsx)("p",{className:"text-xs mt-1",children:e})]})}])},192698,a=>{"use strict";var b=a.i(662145),c=a.i(368114);function d({properties:a,className:e,children:f}){let g=a.filter(a=>null!==a.value&&void 0!==a.value&&!1!==a.value);return 0!==g.length||f?(0,b.jsxs)("dl",{className:(0,c.cn)("grid grid-cols-[minmax(6.5rem,8.5rem)_minmax(0,1fr)] items-center gap-x-2 text-[13px]",e),children:[g.map(a=>(0,b.jsxs)("div",{className:"contents",children:[(0,b.jsxs)("dt",{className:"flex min-h-8 min-w-0 items-center gap-2 text-muted",children:[a.icon&&(0,b.jsx)(a.icon,{className:"size-3.5 shrink-0","aria-hidden":!0}),(0,b.jsx)("span",{className:"min-w-0 truncate",children:a.label})]}),(0,b.jsx)("dd",{className:"flex min-h-8 min-w-0 items-center gap-2 text-txt",children:a.value})]},a.id??String(a.label))),f&&(0,b.jsx)("div",{className:"col-span-2 flex min-h-8 items-center",children:f})]}):null}a.s(["ItemPanelHeader",0,function({kicker:a,title:e,menu:f,properties:g,className:h,children:i}){return(0,b.jsxs)("header",{"data-item-header":!0,className:(0,c.cn)("flex shrink-0 flex-col gap-2 border-b border-border px-5 pb-4 pt-4",h),children:[(0,b.jsxs)("div",{className:"flex min-h-7 items-center gap-2 pr-8 font-mono text-[11px] text-muted",children:[(0,b.jsx)("div",{className:"flex min-w-0 flex-1 items-center gap-1",children:a}),f]}),(0,b.jsx)("div",{className:"text-base font-semibold leading-snug text-txt",children:e}),(0,b.jsx)(d,{properties:g,className:"-my-0.5"}),i]})},"PropertyRows",0,d])}];
2
+
3
+ //# sourceMappingURL=_0cv0ugs._.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../node_modules/.pnpm/lucide-react%401.48.0_react%4019.3.0/node_modules/lucide-react/src/icons/calendar.ts","../../../../node_modules/.pnpm/lucide-react%401.48.0_react%4019.3.0/node_modules/lucide-react/src/icons/circle-dashed.ts","../../../../src/components/shared/InlineProperty.tsx","../../../../src/components/shared/PriorityBadge.tsx","../../../../node_modules/.pnpm/lucide-react%401.48.0_react%4019.3.0/node_modules/lucide-react/src/icons/ellipsis.ts","../../../../node_modules/.pnpm/lucide-react%401.48.0_react%4019.3.0/node_modules/lucide-react/src/icons/folder-input.ts","../../../../node_modules/.pnpm/lucide-react%401.48.0_react%4019.3.0/node_modules/lucide-react/src/icons/list-checks.ts","../../../../node_modules/.pnpm/lucide-react%401.48.0_react%4019.3.0/node_modules/lucide-react/src/icons/list-tree.ts","../../../../node_modules/.pnpm/lucide-react%401.48.0_react%4019.3.0/node_modules/lucide-react/src/icons/message-square.ts","../../../../node_modules/.pnpm/lucide-react%401.48.0_react%4019.3.0/node_modules/lucide-react/src/icons/pencil.ts","../../../../node_modules/.pnpm/lucide-react%401.48.0_react%4019.3.0/node_modules/lucide-react/src/icons/sparkles.ts","../../../../node_modules/.pnpm/lucide-react%401.48.0_react%4019.3.0/node_modules/lucide-react/src/icons/triangle-alert.ts","../../../../src/components/chat/AgentMark.tsx","../../../../src/components/shared/EmptyState.tsx","../../../../src/components/shared/ItemPanelHeader.tsx"],"sourcesContent":["import createLucideIcon from '../createLucideIcon';\nimport type { LucideIconNode, LucideIconData } from '../types';\n\nexport const __iconData: LucideIconData = {\n name: 'calendar',\n size: 24,\n node: [\n ['path', { d: 'M8 2v3', key: '1ioesn' }],\n ['path', { d: 'M16 2v3', key: 'otl347' }],\n ['rect', { x: '3', y: '3', width: '18', height: '18', rx: '2', key: 'h1oib' }],\n ['path', { d: 'M3 9h18', key: '1pudct' }],\n ],\n};\n\n/**\n * @deprecated Access `__iconData` instead.\n */\nexport const __iconNode: LucideIconNode[] = __iconData.node;\n\n/**\n * @component @name Calendar\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNOCAydjMiIC8+CiAgPHBhdGggZD0iTTE2IDJ2MyIgLz4KICA8cmVjdCB4PSIzIiB5PSIzIiB3aWR0aD0iMTgiIGhlaWdodD0iMTgiIHJ4PSIyIiAvPgogIDxwYXRoIGQ9Ik0zIDloMTgiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/calendar\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Calendar = createLucideIcon(__iconData);\n\nexport default Calendar;\n","import createLucideIcon from '../createLucideIcon';\nimport type { LucideIconNode, LucideIconData } from '../types';\n\nexport const __iconData: LucideIconData = {\n name: 'circle-dashed',\n size: 24,\n node: [\n ['path', { d: 'M10.1 2.182a10 10 0 0 1 3.8 0', key: '5ilxe3' }],\n ['path', { d: 'M13.9 21.818a10 10 0 0 1-3.8 0', key: '11zvb9' }],\n ['path', { d: 'M17.609 3.721a10 10 0 0 1 2.69 2.7', key: '1iw5b2' }],\n ['path', { d: 'M2.182 13.9a10 10 0 0 1 0-3.8', key: 'c0bmvh' }],\n ['path', { d: 'M20.279 17.609a10 10 0 0 1-2.7 2.69', key: '1ruxm7' }],\n ['path', { d: 'M21.818 10.1a10 10 0 0 1 0 3.8', key: 'qkgqxc' }],\n ['path', { d: 'M3.721 6.391a10 10 0 0 1 2.7-2.69', key: '1mcia2' }],\n ['path', { d: 'M6.391 20.279a10 10 0 0 1-2.69-2.7', key: '1fvljs' }],\n ],\n};\n\n/**\n * @deprecated Access `__iconData` instead.\n */\nexport const __iconNode: LucideIconNode[] = __iconData.node;\n\n/**\n * @component @name CircleDashed\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTAuMSAyLjE4MmExMCAxMCAwIDAgMSAzLjggMCIgLz4KICA8cGF0aCBkPSJNMTMuOSAyMS44MThhMTAgMTAgMCAwIDEtMy44IDAiIC8+CiAgPHBhdGggZD0iTTE3LjYwOSAzLjcyMWExMCAxMCAwIDAgMSAyLjY5IDIuNyIgLz4KICA8cGF0aCBkPSJNMi4xODIgMTMuOWExMCAxMCAwIDAgMSAwLTMuOCIgLz4KICA8cGF0aCBkPSJNMjAuMjc5IDE3LjYwOWExMCAxMCAwIDAgMS0yLjcgMi42OSIgLz4KICA8cGF0aCBkPSJNMjEuODE4IDEwLjFhMTAgMTAgMCAwIDEgMCAzLjgiIC8+CiAgPHBhdGggZD0iTTMuNzIxIDYuMzkxYTEwIDEwIDAgMCAxIDIuNy0yLjY5IiAvPgogIDxwYXRoIGQ9Ik02LjM5MSAyMC4yNzlhMTAgMTAgMCAwIDEtMi42OS0yLjciIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/circle-dashed\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst CircleDashed = createLucideIcon(__iconData);\n\nexport default CircleDashed;\n","\"use client\"\n\nimport { useState, type ReactNode } from \"react\"\nimport { Check } from \"lucide-react\"\nimport { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger } from \"@/components/ui/dropdown-menu\"\nimport { cn } from \"@/lib/utils\"\n\n// Edit one property where it is shown (R055). Clicks and keys are stopped so a card or row underneath\n// doesn't open or drag. Keyboard: the menu takes arrows + Enter, Esc cancels; the date takes Enter / Esc.\n\nconst stop = (e: React.SyntheticEvent) => e.stopPropagation()\nconst trigger = \"inline-flex min-w-0 items-center gap-1 rounded-sm px-1 -mx-1 text-left outline-hidden hover:bg-surface2 focus-visible:ring-2 focus-visible:ring-accent/60\"\n\nexport interface InlineOption { value: string; label: string; node?: ReactNode }\n\n/** The shown value opens a menu of options; picking one calls onChange (the menu closes). */\nexport function InlineSelect({ label, value, options, onChange, children, className }: {\n /** What is being edited, for screen readers (\"Status of T001\") */\n label: string\n value: string\n options: InlineOption[]\n onChange: (value: string) => void\n children: ReactNode\n className?: string\n}) {\n return (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <button type=\"button\" aria-label={label} draggable={false} onClick={stop} onKeyDown={stop} onPointerDown={stop} className={cn(trigger, className)}>\n {children}\n </button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"start\" className=\"max-h-72 w-48 overflow-y-auto\" onClick={stop} onKeyDown={stop}>\n {options.map((o) => (\n <DropdownMenuItem key={o.value} onSelect={() => { if (o.value !== value) onChange(o.value) }}>\n {o.node ?? o.label}\n {o.value === value && <Check className=\"ml-auto size-3.5 text-muted\" aria-hidden />}\n </DropdownMenuItem>\n ))}\n </DropdownMenuContent>\n </DropdownMenu>\n )\n}\n\n/** The shown date turns into a date input: Enter saves, Esc cancels, leaving the field saves a change. */\nexport function InlineDate({ label, value, onChange, children, className }: {\n label: string\n value: string | null\n onChange: (value: string | null) => void\n children: ReactNode\n className?: string\n}) {\n const [editing, setEditing] = useState(false)\n const [draft, setDraft] = useState(value ?? \"\")\n const commit = () => {\n setEditing(false)\n if ((draft || null) !== value) onChange(draft || null)\n }\n if (!editing) {\n return (\n <button\n type=\"button\"\n aria-label={label}\n draggable={false}\n onClick={(e) => { stop(e); setDraft(value ?? \"\"); setEditing(true) }}\n onKeyDown={stop}\n className={cn(trigger, className)}\n >\n {children}\n </button>\n )\n }\n return (\n <input\n type=\"date\"\n autoFocus\n aria-label={label}\n value={draft}\n onChange={(e) => setDraft(e.target.value)}\n onClick={stop}\n onPointerDown={stop}\n onKeyDown={(e) => {\n stop(e)\n if (e.key === \"Enter\") { e.preventDefault(); commit() }\n if (e.key === \"Escape\") { e.preventDefault(); setEditing(false) }\n }}\n onBlur={commit}\n className=\"h-6 rounded-sm border border-accent/60 bg-bg px-1 font-mono text-[11px] text-txt scheme-light outline-hidden dark:scheme-dark\"\n />\n )\n}\n\n/** The shown text turns into a text input: Enter or leaving saves, Esc cancels. Saving \"\" passes null. */\nexport function InlineText({ label, value, onChange, children, className, placeholder, startEditing = false, onCancel }: {\n label: string\n value: string | null\n onChange: (value: string | null) => void\n children: ReactNode\n className?: string\n placeholder?: string\n /** Open as an input right away (a property that was just added) */\n startEditing?: boolean\n onCancel?: () => void\n}) {\n const [editing, setEditing] = useState(startEditing)\n const [draft, setDraft] = useState(value ?? \"\")\n const commit = () => {\n setEditing(false)\n const next = draft.trim() || null\n if (next !== value) onChange(next)\n else if (!next) onCancel?.()\n }\n if (!editing) {\n return (\n <button\n type=\"button\"\n aria-label={label}\n draggable={false}\n onClick={(e) => { stop(e); setDraft(value ?? \"\"); setEditing(true) }}\n onKeyDown={stop}\n className={cn(trigger, className)}\n >\n {children}\n </button>\n )\n }\n return (\n <input\n autoFocus\n aria-label={label}\n value={draft}\n placeholder={placeholder}\n onChange={(e) => setDraft(e.target.value)}\n onClick={stop}\n onPointerDown={stop}\n onKeyDown={(e) => {\n stop(e)\n if (e.key === \"Enter\") { e.preventDefault(); commit() }\n if (e.key === \"Escape\") { e.preventDefault(); setEditing(false); onCancel?.() }\n }}\n onBlur={commit}\n className=\"h-7 w-full min-w-0 rounded-sm border border-accent/60 bg-bg px-1.5 text-[13px] text-txt outline-hidden placeholder:text-muted\"\n />\n )\n}\n","\"use client\"\n\nimport { cn } from \"@/lib/utils\"\nimport { PRIORITIES, type Priority } from \"@/lib/doc-priority\"\nimport { InlineSelect } from \"./InlineProperty\"\n\n// Colour only where it asks for attention: P0 red, P1 amber, P2/P3 stay neutral.\nconst TONE: Record<Priority, string> = {\n P0: \"bg-danger/12 text-danger\",\n P1: \"bg-amber/12 text-amber\",\n P2: \"bg-surface2 text-txt\",\n P3: \"bg-surface2 text-muted\",\n}\n\nexport function PriorityBadge({ priority, className }: { priority: Priority; className?: string }) {\n return (\n <span className={cn(\"inline-flex h-4 shrink-0 items-center rounded-sm px-1 font-mono text-[10px] font-medium leading-none\", TONE[priority], className)}>\n {priority}\n </span>\n )\n}\n\nconst OPTIONS = [\n ...PRIORITIES.map((p) => ({ value: p, label: p, node: <PriorityBadge priority={p} /> })),\n { value: \"\", label: \"No priority\", node: <span className=\"text-muted\">No priority</span> },\n]\n\n/** P0–P3 picker for any item (task, epic, doc); \"\" in the menu clears it. */\nexport function PriorityField({ label, value, onChange, empty }: {\n label: string\n value: Priority | null\n onChange: (value: Priority | null) => void\n /** Shown when unset */\n empty?: React.ReactNode\n}) {\n return (\n <InlineSelect label={label} value={value ?? \"\"} options={OPTIONS} onChange={(v) => onChange((v || null) as Priority | null)}>\n {value ? <PriorityBadge priority={value} /> : (empty ?? <span className=\"text-muted\">—</span>)}\n </InlineSelect>\n )\n}\n","import createLucideIcon from '../createLucideIcon';\nimport type { LucideIconNode, LucideIconData } from '../types';\n\nexport const __iconData: LucideIconData = {\n name: 'ellipsis',\n size: 24,\n node: [\n ['circle', { cx: '12', cy: '12', r: '1', key: '41hilf' }],\n ['circle', { cx: '19', cy: '12', r: '1', key: '1wjl8i' }],\n ['circle', { cx: '5', cy: '12', r: '1', key: '1pcz8c' }],\n ],\n aliases: ['more-horizontal'],\n};\n\n/**\n * @deprecated Access `__iconData` instead.\n */\nexport const __iconNode: LucideIconNode[] = __iconData.node;\n\n/**\n * @component @name Ellipsis\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSIxIiAvPgogIDxjaXJjbGUgY3g9IjE5IiBjeT0iMTIiIHI9IjEiIC8+CiAgPGNpcmNsZSBjeD0iNSIgY3k9IjEyIiByPSIxIiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/ellipsis\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Ellipsis = createLucideIcon(__iconData);\n\nexport default Ellipsis;\n","import createLucideIcon from '../createLucideIcon';\nimport type { LucideIconNode, LucideIconData } from '../types';\n\nexport const __iconData: LucideIconData = {\n name: 'folder-input',\n size: 24,\n node: [\n [\n 'path',\n {\n d: 'M2 9V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H20a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2v-1',\n key: 'fm4g5t',\n },\n ],\n ['path', { d: 'M2 13h10', key: 'pgb2dq' }],\n ['path', { d: 'm9 16 3-3-3-3', key: '6m91ic' }],\n ],\n};\n\n/**\n * @deprecated Access `__iconData` instead.\n */\nexport const __iconNode: LucideIconNode[] = __iconData.node;\n\n/**\n * @component @name FolderInput\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMiA5VjVhMiAyIDAgMCAxIDItMmgzLjlhMiAyIDAgMCAxIDEuNjkuOWwuODEgMS4yYTIgMiAwIDAgMCAxLjY3LjlIMjBhMiAyIDAgMCAxIDIgMnYxMGEyIDIgMCAwIDEtMiAySDRhMiAyIDAgMCAxLTItMnYtMSIgLz4KICA8cGF0aCBkPSJNMiAxM2gxMCIgLz4KICA8cGF0aCBkPSJtOSAxNiAzLTMtMy0zIiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/folder-input\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst FolderInput = createLucideIcon(__iconData);\n\nexport default FolderInput;\n","import createLucideIcon from '../createLucideIcon';\nimport type { LucideIconNode, LucideIconData } from '../types';\n\nexport const __iconData: LucideIconData = {\n name: 'list-checks',\n size: 24,\n node: [\n ['path', { d: 'M13 5h8', key: 'a7qcls' }],\n ['path', { d: 'M13 12h8', key: 'h98zly' }],\n ['path', { d: 'M13 19h8', key: 'c3s6r1' }],\n ['path', { d: 'm3 17 2 2 4-4', key: '1jhpwq' }],\n ['path', { d: 'm3 7 2 2 4-4', key: '1obspn' }],\n ],\n};\n\n/**\n * @deprecated Access `__iconData` instead.\n */\nexport const __iconNode: LucideIconNode[] = __iconData.node;\n\n/**\n * @component @name ListChecks\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTMgNWg4IiAvPgogIDxwYXRoIGQ9Ik0xMyAxMmg4IiAvPgogIDxwYXRoIGQ9Ik0xMyAxOWg4IiAvPgogIDxwYXRoIGQ9Im0zIDE3IDIgMiA0LTQiIC8+CiAgPHBhdGggZD0ibTMgNyAyIDIgNC00IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/list-checks\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ListChecks = createLucideIcon(__iconData);\n\nexport default ListChecks;\n","import createLucideIcon from '../createLucideIcon';\nimport type { LucideIconNode, LucideIconData } from '../types';\n\nexport const __iconData: LucideIconData = {\n name: 'list-tree',\n size: 24,\n node: [\n ['path', { d: 'M8 5h13', key: '1pao27' }],\n ['path', { d: 'M13 12h8', key: 'h98zly' }],\n ['path', { d: 'M13 19h8', key: 'c3s6r1' }],\n ['path', { d: 'M3 10a2 2 0 0 0 2 2h3', key: '1npucw' }],\n ['path', { d: 'M3 5v12a2 2 0 0 0 2 2h3', key: 'x1gjn2' }],\n ],\n};\n\n/**\n * @deprecated Access `__iconData` instead.\n */\nexport const __iconNode: LucideIconNode[] = __iconData.node;\n\n/**\n * @component @name ListTree\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNOCA1aDEzIiAvPgogIDxwYXRoIGQ9Ik0xMyAxMmg4IiAvPgogIDxwYXRoIGQ9Ik0xMyAxOWg4IiAvPgogIDxwYXRoIGQ9Ik0zIDEwYTIgMiAwIDAgMCAyIDJoMyIgLz4KICA8cGF0aCBkPSJNMyA1djEyYTIgMiAwIDAgMCAyIDJoMyIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/list-tree\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ListTree = createLucideIcon(__iconData);\n\nexport default ListTree;\n","import createLucideIcon from '../createLucideIcon';\nimport type { LucideIconNode, LucideIconData } from '../types';\n\nexport const __iconData: LucideIconData = {\n name: 'message-square',\n size: 24,\n node: [\n [\n 'path',\n {\n d: 'M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z',\n key: '18887p',\n },\n ],\n ],\n};\n\n/**\n * @deprecated Access `__iconData` instead.\n */\nexport const __iconNode: LucideIconNode[] = __iconData.node;\n\n/**\n * @component @name MessageSquare\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMjIgMTdhMiAyIDAgMCAxLTIgMkg2LjgyOGEyIDIgMCAwIDAtMS40MTQuNTg2bC0yLjIwMiAyLjIwMkEuNzEuNzEgMCAwIDEgMiAyMS4yODZWNWEyIDIgMCAwIDEgMi0yaDE2YTIgMiAwIDAgMSAyIDJ6IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/message-square\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst MessageSquare = createLucideIcon(__iconData);\n\nexport default MessageSquare;\n","import createLucideIcon from '../createLucideIcon';\nimport type { LucideIconNode, LucideIconData } from '../types';\n\nexport const __iconData: LucideIconData = {\n name: 'pencil',\n size: 24,\n node: [\n [\n 'path',\n {\n d: 'M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z',\n key: '1a8usu',\n },\n ],\n ['path', { d: 'm15 5 4 4', key: '1mk7zo' }],\n ],\n};\n\n/**\n * @deprecated Access `__iconData` instead.\n */\nexport const __iconNode: LucideIconNode[] = __iconData.node;\n\n/**\n * @component @name Pencil\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMjEuMTc0IDYuODEyYTEgMSAwIDAgMC0zLjk4Ni0zLjk4N0wzLjg0MiAxNi4xNzRhMiAyIDAgMCAwLS41LjgzbC0xLjMyMSA0LjM1MmEuNS41IDAgMCAwIC42MjMuNjIybDQuMzUzLTEuMzJhMiAyIDAgMCAwIC44My0uNDk3eiIgLz4KICA8cGF0aCBkPSJtMTUgNSA0IDQiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/pencil\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Pencil = createLucideIcon(__iconData);\n\nexport default Pencil;\n","import createLucideIcon from '../createLucideIcon';\nimport type { LucideIconNode, LucideIconData } from '../types';\n\nexport const __iconData: LucideIconData = {\n name: 'sparkles',\n size: 24,\n node: [\n [\n 'path',\n {\n d: 'M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z',\n key: '1s2grr',\n },\n ],\n ['path', { d: 'M20 2v4', key: '1rf3ol' }],\n ['path', { d: 'M22 4h-4', key: 'gwowj6' }],\n ['circle', { cx: '4', cy: '20', r: '2', key: '6kqj1y' }],\n ],\n aliases: ['stars'],\n};\n\n/**\n * @deprecated Access `__iconData` instead.\n */\nexport const __iconNode: LucideIconNode[] = __iconData.node;\n\n/**\n * @component @name Sparkles\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTEuMDE3IDIuODE0YTEgMSAwIDAgMSAxLjk2NiAwbDEuMDUxIDUuNTU4YTIgMiAwIDAgMCAxLjU5NCAxLjU5NGw1LjU1OCAxLjA1MWExIDEgMCAwIDEgMCAxLjk2NmwtNS41NTggMS4wNTFhMiAyIDAgMCAwLTEuNTk0IDEuNTk0bC0xLjA1MSA1LjU1OGExIDEgMCAwIDEtMS45NjYgMGwtMS4wNTEtNS41NThhMiAyIDAgMCAwLTEuNTk0LTEuNTk0bC01LjU1OC0xLjA1MWExIDEgMCAwIDEgMC0xLjk2Nmw1LjU1OC0xLjA1MWEyIDIgMCAwIDAgMS41OTQtMS41OTR6IiAvPgogIDxwYXRoIGQ9Ik0yMCAydjQiIC8+CiAgPHBhdGggZD0iTTIyIDRoLTQiIC8+CiAgPGNpcmNsZSBjeD0iNCIgY3k9IjIwIiByPSIyIiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/sparkles\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Sparkles = createLucideIcon(__iconData);\n\nexport default Sparkles;\n","import createLucideIcon from '../createLucideIcon';\nimport type { LucideIconNode, LucideIconData } from '../types';\n\nexport const __iconData: LucideIconData = {\n name: 'triangle-alert',\n size: 24,\n node: [\n [\n 'path',\n {\n d: 'm21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3',\n key: 'wmoenq',\n },\n ],\n ['path', { d: 'M12 9v4', key: 'juzpu7' }],\n ['path', { d: 'M12 17h.01', key: 'p32p05' }],\n ],\n aliases: ['alert-triangle'],\n};\n\n/**\n * @deprecated Access `__iconData` instead.\n */\nexport const __iconNode: LucideIconNode[] = __iconData.node;\n\n/**\n * @component @name TriangleAlert\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJtMjEuNzMgMTgtOC0xNGEyIDIgMCAwIDAtMy40OCAwbC04IDE0QTIgMiAwIDAgMCA0IDIxaDE2YTIgMiAwIDAgMCAxLjczLTMiIC8+CiAgPHBhdGggZD0iTTEyIDl2NCIgLz4KICA8cGF0aCBkPSJNMTIgMTdoLjAxIiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/triangle-alert\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst TriangleAlert = createLucideIcon(__iconData);\n\nexport default TriangleAlert;\n","\"use client\"\n\nimport { Bot, Loader2 } from \"lucide-react\"\nimport { cn } from \"@/lib/utils\"\nimport { useChats, useItemAgent } from \"@/context/ChatContext\"\nimport type { Attach, ItemAgent } from \"@/lib/chats\"\nimport { StatusMarker } from \"./StatusMarker\"\n\nexport const AGENT_LABEL: Record<ItemAgent[\"status\"], string> = {\n running: \"Agent working\",\n \"needs-answer\": \"Agent needs you\",\n review: \"Plan to review\",\n}\n\n/**\n * Pill on an epic/task while a chat works on it; click opens that chat.\n * `nodrag` + stopPropagation keep a React Flow node from dragging/selecting on click.\n */\nexport function AgentMark({ attach, className }: { attach: Attach; className?: string }) {\n const agent = useItemAgent(attach)\n const { show } = useChats()\n if (!agent) return null\n const label = AGENT_LABEL[agent.status]\n return (\n <button\n type=\"button\"\n onClick={(e) => { e.stopPropagation(); show(agent.chatId) }}\n title={`${label} · open chat`}\n aria-label={`${label}, open chat`}\n className={cn(\n \"nodrag inline-flex shrink-0 items-center gap-1 rounded-full border px-1.5 py-px font-mono text-[10px] leading-4 animate-fade-in transition-colors duration-(--duration-fast)\",\n agent.status === \"running\" && \"border-accent/50 text-accent hover:bg-accent/10\",\n agent.status === \"needs-answer\" && \"border-amber/50 text-amber hover:bg-amber/10\",\n agent.status === \"review\" && \"border-accent/50 bg-accent/10 text-accent hover:bg-accent/20\",\n className,\n )}\n >\n {agent.status === \"running\" ? <Loader2 className=\"size-3 animate-spin\" aria-hidden /> : <Bot className=\"size-3\" aria-hidden />}\n {label}\n </button>\n )\n}\n\n/** Non-interactive variant for places that are already a button (timeline markers, board cards, task rows). */\nexport function AgentDot({ attach }: { attach: Attach }) {\n const agent = useItemAgent(attach)\n if (!agent) return null\n return <StatusMarker status={agent.status} label={AGENT_LABEL[agent.status]} />\n}\n","import { cn } from \"@/lib/utils\"\r\n\r\ninterface EmptyStateProps {\r\n icon: string\r\n message: string\r\n subMessage?: string\r\n bordered?: boolean\r\n}\r\n\r\nexport function EmptyState({ icon, message, subMessage, bordered }: EmptyStateProps) {\r\n return (\r\n <div\r\n className={cn(\r\n \"text-center py-16 text-muted text-sm\",\r\n bordered && \"border border-dashed border-border rounded-xl\",\r\n )}\r\n >\r\n <p className=\"text-3xl mb-3\">{icon}</p>\r\n <p>{message}</p>\r\n {subMessage && <p className=\"text-xs mt-1\">{subMessage}</p>}\r\n </div>\r\n )\r\n}\r\n","import type { ReactNode } from \"react\"\nimport type { LucideIcon } from \"lucide-react\"\nimport { cn } from \"@/lib/utils\"\n\nexport interface ItemProperty {\n label: ReactNode\n /** Row key when the label is not a string */\n id?: string\n icon?: LucideIcon\n /** null / undefined / false = the row is left out */\n value: ReactNode\n}\n\n/**\n * Notion-style property rows: icon + name on the left, the value (usually an inline editor) on the right.\n * Task, epic and doc panels all use it, so a property reads the same wherever it shows.\n */\nexport function PropertyRows({ properties, className, children }: {\n properties: ItemProperty[]\n className?: string\n /** A last full-width row, e.g. \"Add a property\" */\n children?: ReactNode\n}) {\n const shown = properties.filter((p) => p.value !== null && p.value !== undefined && p.value !== false)\n if (shown.length === 0 && !children) return null\n return (\n <dl className={cn(\"grid grid-cols-[minmax(6.5rem,8.5rem)_minmax(0,1fr)] items-center gap-x-2 text-[13px]\", className)}>\n {shown.map((p) => (\n <div key={p.id ?? String(p.label)} className=\"contents\">\n <dt className=\"flex min-h-8 min-w-0 items-center gap-2 text-muted\">\n {p.icon && <p.icon className=\"size-3.5 shrink-0\" aria-hidden />}\n <span className=\"min-w-0 truncate\">{p.label}</span>\n </dt>\n <dd className=\"flex min-h-8 min-w-0 items-center gap-2 text-txt\">{p.value}</dd>\n </div>\n ))}\n {children && <div className=\"col-span-2 flex min-h-8 items-center\">{children}</div>}\n </dl>\n )\n}\n\n/**\n * The one header every item panel uses (task, epic, doc): a kicker line (id · kind / breadcrumb) with the\n * ⋯ menu always at its right end, the title, then a properties grid.\n * `title` is a node so a Sheet can pass its SheetTitle.\n */\nexport function ItemPanelHeader({ kicker, title, menu, properties, className, children }: {\n kicker: ReactNode\n title: ReactNode\n menu?: ReactNode\n properties: ItemProperty[]\n className?: string\n /** Extra header content under the properties (e.g. an epic's progress) */\n children?: ReactNode\n}) {\n return (\n <header data-item-header className={cn(\"flex shrink-0 flex-col gap-2 border-b border-border px-5 pb-4 pt-4\", className)}>\n <div className=\"flex min-h-7 items-center gap-2 pr-8 font-mono text-[11px] text-muted\">\n <div className=\"flex min-w-0 flex-1 items-center gap-1\">{kicker}</div>\n {menu}\n </div>\n <div className=\"text-base font-semibold leading-snug text-txt\">{title}</div>\n <PropertyRows properties={properties} className=\"-my-0.5\" />\n {children}\n </header>\n )\n}\n"],"names":["cy","r","node","AGENT_LABEL","running","review","AgentMark","attach","className","agent","show","label","status","type","onClick","e","stopPropagation","chatId","title","AgentDot","EmptyState","icon","message","subMessage","bordered","PropertyRows","properties","children","shown","filter","p","value","undefined","length","map","id","String","ItemPanelHeader","kicker","menu"],"mappings":"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","ignoreList":[0,1,4,5,6,7,8,9,10,11]}
@@ -0,0 +1,3 @@
1
+ module.exports=[508817,a=>{"use strict";var b=a.i(256857);let c={name:"book-open",size:24,node:[["path",{d:"M12 5v16",key:"1f6ucr"}],["path",{d:"M20.001 19A2 2 0 0022 17V5a2 2 0 00-1.999-2L16 3.002A5 5 0 0012 5a5 5 0 00-4-2H4a2 2 0 00-2 2v12a2 2 0 001.999 2H8a5 5 0 014 2 5 5 0 014-2z",key:"1fyvmf"}]]};c.node;let d=(0,b.default)(c);a.s(["BookOpen",0,d],508817)},717371,a=>{"use strict";var b=a.i(256857);let c={name:"flag",size:24,node:[["path",{d:"M4 22V4a1 1 0 0 1 .4-.8A6 6 0 0 1 8 2c3 0 5 2 7.333 2q2 0 3.067-.8A1 1 0 0 1 20 4v10a1 1 0 0 1-.4.8A6 6 0 0 1 16 16c-3 0-5-2-8-2a6 6 0 0 0-4 1.528",key:"1jaruq"}]]};c.node;let d=(0,b.default)(c);a.s(["Flag",0,d],717371)},759658,a=>{"use strict";var b=a.i(256857);let c={name:"lightbulb",size:24,node:[["path",{d:"M15 14c.2-1 .7-1.7 1.5-2.5 1-.9 1.5-2.2 1.5-3.5A6 6 0 0 0 6 8c0 1 .2 2.2 1.5 3.5.7.7 1.3 1.5 1.5 2.5",key:"1gvzjb"}],["path",{d:"M9 18h6",key:"x1upvd"}],["path",{d:"M10 22h4",key:"ceow96"}]]};c.node;let d=(0,b.default)(c);a.s(["Lightbulb",0,d],759658)},471617,a=>{"use strict";var b=a.i(256857);let c={name:"scale",size:24,node:[["path",{d:"M12 3v18",key:"108xh3"}],["path",{d:"m19 8 3 8a5 5 0 0 1-6 0zV7",key:"zcdpyk"}],["path",{d:"M3 7h1a17 17 0 0 0 8-2 17 17 0 0 0 8 2h1",key:"1yorad"}],["path",{d:"m5 8 3 8a5 5 0 0 1-6 0zV7",key:"eua70x"}],["path",{d:"M7 21h10",key:"1b0cd5"}]]};c.node;let d=(0,b.default)(c);a.s(["Scale",0,d],471617)},853244,a=>{"use strict";var b=a.i(256857);let c={name:"unlink",size:24,node:[["path",{d:"m18.84 12.25 1.72-1.71h-.02a5.004 5.004 0 0 0-.12-7.07 5.006 5.006 0 0 0-6.95 0l-1.72 1.71",key:"yqzxt4"}],["path",{d:"m5.17 11.75-1.71 1.71a5.004 5.004 0 0 0 .12 7.07 5.006 5.006 0 0 0 6.95 0l1.71-1.71",key:"4qinb0"}],["line",{x1:"8",x2:"8",y1:"2",y2:"5",key:"1041cp"}],["line",{x1:"2",x2:"5",y1:"8",y2:"8",key:"14m1p5"}],["line",{x1:"16",x2:"16",y1:"19",y2:"22",key:"rzdirn"}],["line",{x1:"19",x2:"22",y1:"16",y2:"16",key:"ox905f"}]]};c.node;let d=(0,b.default)(c);a.s(["Unlink",0,d],853244)},892678,a=>{"use strict";var b=a.i(256857);let c={name:"user",size:24,node:[["path",{d:"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2",key:"975kel"}],["circle",{cx:"12",cy:"7",r:"4",key:"17ys0d"}]]};c.node;let d=(0,b.default)(c);a.s(["User",0,d],892678)},731050,760093,a=>{"use strict";var b=a.i(662145),c=a.i(174897),d=a.i(913975),e=a.i(508817),f=a.i(926128),g=a.i(717371),h=a.i(759658),i=a.i(471617),j=a.i(544394),k=a.i(173628),l=a.i(147758);let m=[{kind:"task",label:"Tasks"},{kind:"epic",label:"Epics"},{kind:"adr",label:"ADRs"},{kind:"doc",label:"Docs"},{kind:"entry",label:"Entries"}],n={epic:g.Flag,adr:i.Scale,doc:f.FileText,entry:h.Lightbulb,task:e.BookOpen};function o(a){let b=(0,d.useRouter)(),{openDoc:c}=(0,j.useApp)();return d=>{"task"===d.kind?b.push(`/board?task=${d.id}`):"epic"===d.kind?b.push(`/roadmap?item=${d.id}`):"entry"===d.kind?a(d.id):c(d.path)}}a.s(["EntryRelated",0,function({entryId:a,onOpenEntry:d}){let{rootParam:e,summary:f,board:g}=(0,j.useApp)(),h=o(d),[i,p]=(0,c.useState)(null);(0,c.useEffect)(()=>{let b=!0;return fetch(`/api/memory/graph${e}&entry=${encodeURIComponent(a)}`).then(a=>a.json()).then(a=>{b&&p(a.nodes?a:{nodes:[],edges:[]})}).catch(a=>{console.warn("Loading entry links failed",a),b&&p({nodes:[],edges:[]})}),()=>{b=!1}},[a,e,f]);let q=(0,c.useMemo)(()=>new Map(Object.values(g??{}).flat().map(a=>[a.id,a])),[g]),r=(0,c.useMemo)(()=>new Map((i?.nodes??[]).map(a=>[a.id,a])),[i]),s=a=>a.map(a=>r.get(a)).filter(a=>!!a),t=s((i?.edges??[]).filter(b=>b.from===a).map(a=>a.to)),u=s((i?.edges??[]).filter(b=>b.to===a).map(a=>a.from)),v=a=>{let c="task"===a.kind?q.get(a.id):void 0,d=c?(0,l.displayStatus)(c):"epic"===a.kind?a.status:void 0,e=n[a.kind];return(0,b.jsx)("li",{children:(0,b.jsxs)("button",{type:"button",onClick:()=>h(a),title:a.path,className:"flex w-full items-center gap-2 rounded-md px-2 py-1 text-left text-sm outline-none hover:bg-surface2 focus-visible:ring-2 focus-visible:ring-accent",children:[d?(0,b.jsx)(k.StatusIcon,{status:d,className:"size-3.5 shrink-0"}):(0,b.jsx)(e,{className:"size-3.5 shrink-0 text-muted","aria-hidden":!0}),"doc"!==a.kind&&(0,b.jsx)("span",{className:"shrink-0 font-mono text-[11px] text-muted",children:a.id}),(0,b.jsx)("span",{className:"min-w-0 truncate text-txt",children:a.label})]})},a.id)},w=(a,c)=>(0,b.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,b.jsx)("h4",{className:"text-[11px] font-semibold uppercase tracking-wider text-muted",children:a}),m.map(({kind:a,label:d})=>{let e=c.filter(b=>b.kind===a);return e.length?(0,b.jsxs)("div",{children:[(0,b.jsx)("p",{className:"px-2 text-[11px] text-muted",children:d}),(0,b.jsx)("ul",{children:e.map(v)})]},a):null})]});return(0,b.jsxs)("section",{"aria-label":"Related",className:"mt-5 flex flex-col gap-3 border-t border-border pt-4",children:[(0,b.jsx)("h3",{className:"text-xs font-semibold text-txt",children:"Related"}),null===i?(0,b.jsx)("p",{className:"text-xs text-muted",children:"Loading links…"}):t.length||u.length?(0,b.jsxs)(b.Fragment,{children:[t.length>0&&w("Links to",t),u.length>0&&w("Linked from",u)]}):(0,b.jsx)("p",{className:"text-xs text-muted",children:"No links yet. Mention a task, epic or doc in the entry to link it."})]})},"GROUPS",0,m,"KIND_ICON",0,n,"useOpenNode",0,o],731050);let p=new Set(["doc_updated","doc_created","doc_deleted","doc_renamed","task_created","task_updated","roadmap_updated","memory_updated","decision_logged"]),q=new Set;function r(a){return q.add(a),()=>{q.delete(a)}}function s(){return(0,c.useSyncExternalStore)(r,()=>0,()=>0)}let t=new Map;function u(a){let b=t.get(a);if(!b){let c=b=fetch(a).then(async a=>{let b=await a.json().catch(()=>null);if(!a.ok)throw Error(b?.error??`${a.status} ${a.statusText}`);return b});c.catch(()=>{t.get(a)===c&&t.delete(a)}),t.set(a,c)}return b}a.s(["LINK_EVENTS",0,p,"fetchLinkJson",0,u,"useDocLinks",0,function(a){let{rootParam:b}=(0,j.useApp)(),[d,e]=(0,c.useState)(null),f=s();return(0,c.useEffect)(()=>{if(!a)return;let c=!0;return u(`/api/docs/links${b}&path=${encodeURIComponent(a)}`).then(b=>{c&&e({path:a,links:{out:b.out??[],in:b.in??[],broken:b.broken??[],stale:b.stale??[],targets:b.targets??{}}})}).catch(b=>{console.warn("Loading doc links failed",b),c&&e({path:a,links:{out:[],in:[],broken:[],stale:[],targets:{}}})}),()=>{c=!1}},[a,b,f]),a&&d?.path===a?d.links:null},"useLinkGeneration",0,s],760093)},813722,853775,a=>{"use strict";var b=a.i(662145),c=a.i(795667),d=a.i(892678),e=a.i(368114);function f(a){return"human"===a?"human":a?.startsWith("ai:")?"ai":"none"}function g(a){return"human"===a?"Human":a?.startsWith("ai:")?a.slice(3):"No owner"}a.s(["ownerKind",0,f,"ownerLabel",0,g,"parseOwner",0,function(a){let b=(a??"").trim().toLowerCase();if("human"===b)return"human";let c=b.match(/^ai(?::\s*([a-z0-9._-]+))?$/);return c?`ai:${c[1]??"agent"}`:null}],853775),a.s(["OwnerChip",0,function({owner:a,className:h}){let i=f(a);if("none"===i)return null;let j="ai"===i?c.Bot:d.User;return(0,b.jsxs)("span",{title:`Owner: ${g(a)}`,className:(0,e.cn)("inline-flex items-center gap-1 text-[11px] text-muted",h),children:[(0,b.jsx)(j,{className:(0,e.cn)("size-3.5 shrink-0","ai"===i&&"text-accent"),"aria-hidden":!0}),g(a)]})}],813722)},692938,a=>{"use strict";let b=new Set(["a","b","c","x","y","z","path","name","slug","title","foo","bar","wikilinks","example"]),c=a=>String(Number(a)).padStart(3,"0");function d(a){return a.startsWith("ADR-")?`ADR-${c(a.slice(4))}`:a.startsWith("E")?`E${c(a.slice(1))}`:a}function e(a,b){let c,e=function(a){let b=[];for(let c of a.replace(/\\/g,"/").split("/"))if(c&&"."!==c)if(".."===c){if(!b.length)return null;b.pop()}else b.push(c);return b.join("/")}(a)??a,f=(e.split("/").pop()??e).replace(/\.md$/i,""),g=(/^#\s+(.+?)\s*$/m.exec(b)?.[1]??"").replace(/!?\[([^\]]*)\]\([^)]*\)/g,"$1").replace(/\[\[([^\]|]+)(?:\|([^\]]+))?\]\]/g,(a,b,c)=>c??b).replace(/(\*\*|\*|~~|`)(\S(?:.*?\S)?)\1/g,"$2").replace(/(^|\W)(__|_)(\S(?:.*?\S)?)\2(?=\W|$)/g,"$1$3").replace(/<[^>]+>/g,"").trim(),h=/[^.][.!]$/.test(g)?"":g,i=a=>h.replace(RegExp(`^${a}\\s*[:—–-]\\s*`),"")||f;return(c=/^plans\/tasks\/(T\d{3,})[^/]*\.md$/.exec(e))?{id:c[1],kind:"task",label:i(c[1]),path:e}:(c=/^plans\/roadmap\/(R\d{3,})[^/]*\.md$/.exec(e))?{id:c[1],kind:"epic",label:i(c[1]),path:e}:(c=/^memory\/entries\/(E\d+)[^/]*\.md$/.exec(e))?{id:d(c[1]),kind:"entry",label:i(c[1]),path:e}:(c=/(?:^|\/)(ADR-\d+)[^/]*\.md$/.exec(e))?{id:d(c[1]),kind:"adr",label:i(c[1]),path:e}:{id:e,kind:"doc",label:h||f,path:e}}new WeakMap;let f=["doc","adr"],g=/^(?:Entry )?(E\d+|T\d{3,}|R\d{3,}|ADR-\d+)\b/,h=new Set(["doc_updated","doc_created"]);a.s(["GRAPH_DEFAULT_KINDS",0,f,"docNode",0,e,"graphHref",0,function(a){let b=new URLSearchParams({node:a,focus:"1"}),c=e(a,"").kind;return f.includes(c)||b.set("kinds",[...f,c].join(",")),`/graph?${b}`},"isExampleTarget",0,function(a){let c=(a.split("/").pop()??"").replace(/\.md$/i,"").replace(/^(?:ADR-\d+|[TRE]\d+)-/,"");return b.has(c.toLowerCase())},"touchedPaths",0,function(a,b,c){let d=new Map;for(let a of b)d.set(a.id,a.path),d.set(a.path,a.path);let e=new Set;for(let b of a){if(!(Date.parse(b.timestamp)>=c))continue;let a=[b.taskId,g.exec(b.title)?.[1]];for(let c of(h.has(b.type)&&a.push(b.detail),"doc_renamed"===b.type&&a.push(b.title.split(" → ")[1]),"memory_updated"!==b.type||b.title.startsWith("Entry ")||a.push("memory/MEMORY.md"),a)){let a=c?d.get(c.trim()):void 0;a&&e.add(a)}}return e}])}];
2
+
3
+ //# sourceMappingURL=_0ghj-vx._.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../node_modules/.pnpm/lucide-react%401.48.0_react%4019.3.0/node_modules/lucide-react/src/icons/book-open.ts","../../../../node_modules/.pnpm/lucide-react%401.48.0_react%4019.3.0/node_modules/lucide-react/src/icons/flag.ts","../../../../node_modules/.pnpm/lucide-react%401.48.0_react%4019.3.0/node_modules/lucide-react/src/icons/lightbulb.ts","../../../../node_modules/.pnpm/lucide-react%401.48.0_react%4019.3.0/node_modules/lucide-react/src/icons/scale.ts","../../../../node_modules/.pnpm/lucide-react%401.48.0_react%4019.3.0/node_modules/lucide-react/src/icons/unlink.ts","../../../../node_modules/.pnpm/lucide-react%401.48.0_react%4019.3.0/node_modules/lucide-react/src/icons/user.ts","../../../../src/components/memory/EntryRelated.tsx","../../../../src/components/docs/useDocLinks.ts","../../../../src/components/shared/OwnerChip.tsx","../../../../src/lib/owner.ts","../../../../src/lib/doc-links.ts"],"sourcesContent":["import createLucideIcon from '../createLucideIcon';\nimport type { LucideIconNode, LucideIconData } from '../types';\n\nexport const __iconData: LucideIconData = {\n name: 'book-open',\n size: 24,\n node: [\n ['path', { d: 'M12 5v16', key: '1f6ucr' }],\n [\n 'path',\n {\n d: 'M20.001 19A2 2 0 0022 17V5a2 2 0 00-1.999-2L16 3.002A5 5 0 0012 5a5 5 0 00-4-2H4a2 2 0 00-2 2v12a2 2 0 001.999 2H8a5 5 0 014 2 5 5 0 014-2z',\n key: '1fyvmf',\n },\n ],\n ],\n};\n\n/**\n * @deprecated Access `__iconData` instead.\n */\nexport const __iconNode: LucideIconNode[] = __iconData.node;\n\n/**\n * @component @name BookOpen\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTIgNXYxNiIgLz4KICA8cGF0aCBkPSJNMjAuMDAxIDE5QTIgMiAwIDAwMjIgMTdWNWEyIDIgMCAwMC0xLjk5OS0yTDE2IDMuMDAyQTUgNSAwIDAwMTIgNWE1IDUgMCAwMC00LTJINGEyIDIgMCAwMC0yIDJ2MTJhMiAyIDAgMDAxLjk5OSAySDhhNSA1IDAgMDE0IDIgNSA1IDAgMDE0LTJ6IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/book-open\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst BookOpen = createLucideIcon(__iconData);\n\nexport default BookOpen;\n","import createLucideIcon from '../createLucideIcon';\nimport type { LucideIconNode, LucideIconData } from '../types';\n\nexport const __iconData: LucideIconData = {\n name: 'flag',\n size: 24,\n node: [\n [\n 'path',\n {\n d: 'M4 22V4a1 1 0 0 1 .4-.8A6 6 0 0 1 8 2c3 0 5 2 7.333 2q2 0 3.067-.8A1 1 0 0 1 20 4v10a1 1 0 0 1-.4.8A6 6 0 0 1 16 16c-3 0-5-2-8-2a6 6 0 0 0-4 1.528',\n key: '1jaruq',\n },\n ],\n ],\n};\n\n/**\n * @deprecated Access `__iconData` instead.\n */\nexport const __iconNode: LucideIconNode[] = __iconData.node;\n\n/**\n * @component @name Flag\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNNCAyMlY0YTEgMSAwIDAgMSAuNC0uOEE2IDYgMCAwIDEgOCAyYzMgMCA1IDIgNy4zMzMgMnEyIDAgMy4wNjctLjhBMSAxIDAgMCAxIDIwIDR2MTBhMSAxIDAgMCAxLS40LjhBNiA2IDAgMCAxIDE2IDE2Yy0zIDAtNS0yLTgtMmE2IDYgMCAwIDAtNCAxLjUyOCIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/flag\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Flag = createLucideIcon(__iconData);\n\nexport default Flag;\n","import createLucideIcon from '../createLucideIcon';\nimport type { LucideIconNode, LucideIconData } from '../types';\n\nexport const __iconData: LucideIconData = {\n name: 'lightbulb',\n size: 24,\n node: [\n [\n 'path',\n {\n d: 'M15 14c.2-1 .7-1.7 1.5-2.5 1-.9 1.5-2.2 1.5-3.5A6 6 0 0 0 6 8c0 1 .2 2.2 1.5 3.5.7.7 1.3 1.5 1.5 2.5',\n key: '1gvzjb',\n },\n ],\n ['path', { d: 'M9 18h6', key: 'x1upvd' }],\n ['path', { d: 'M10 22h4', key: 'ceow96' }],\n ],\n};\n\n/**\n * @deprecated Access `__iconData` instead.\n */\nexport const __iconNode: LucideIconNode[] = __iconData.node;\n\n/**\n * @component @name Lightbulb\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTUgMTRjLjItMSAuNy0xLjcgMS41LTIuNSAxLS45IDEuNS0yLjIgMS41LTMuNUE2IDYgMCAwIDAgNiA4YzAgMSAuMiAyLjIgMS41IDMuNS43LjcgMS4zIDEuNSAxLjUgMi41IiAvPgogIDxwYXRoIGQ9Ik05IDE4aDYiIC8+CiAgPHBhdGggZD0iTTEwIDIyaDQiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/lightbulb\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Lightbulb = createLucideIcon(__iconData);\n\nexport default Lightbulb;\n","import createLucideIcon from '../createLucideIcon';\nimport type { LucideIconNode, LucideIconData } from '../types';\n\nexport const __iconData: LucideIconData = {\n name: 'scale',\n size: 24,\n node: [\n ['path', { d: 'M12 3v18', key: '108xh3' }],\n ['path', { d: 'm19 8 3 8a5 5 0 0 1-6 0zV7', key: 'zcdpyk' }],\n ['path', { d: 'M3 7h1a17 17 0 0 0 8-2 17 17 0 0 0 8 2h1', key: '1yorad' }],\n ['path', { d: 'm5 8 3 8a5 5 0 0 1-6 0zV7', key: 'eua70x' }],\n ['path', { d: 'M7 21h10', key: '1b0cd5' }],\n ],\n};\n\n/**\n * @deprecated Access `__iconData` instead.\n */\nexport const __iconNode: LucideIconNode[] = __iconData.node;\n\n/**\n * @component @name Scale\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTIgM3YxOCIgLz4KICA8cGF0aCBkPSJtMTkgOCAzIDhhNSA1IDAgMCAxLTYgMHpWNyIgLz4KICA8cGF0aCBkPSJNMyA3aDFhMTcgMTcgMCAwIDAgOC0yIDE3IDE3IDAgMCAwIDggMmgxIiAvPgogIDxwYXRoIGQ9Im01IDggMyA4YTUgNSAwIDAgMS02IDB6VjciIC8+CiAgPHBhdGggZD0iTTcgMjFoMTAiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/scale\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Scale = createLucideIcon(__iconData);\n\nexport default Scale;\n","import createLucideIcon from '../createLucideIcon';\nimport type { LucideIconNode, LucideIconData } from '../types';\n\nexport const __iconData: LucideIconData = {\n name: 'unlink',\n size: 24,\n node: [\n [\n 'path',\n {\n d: 'm18.84 12.25 1.72-1.71h-.02a5.004 5.004 0 0 0-.12-7.07 5.006 5.006 0 0 0-6.95 0l-1.72 1.71',\n key: 'yqzxt4',\n },\n ],\n [\n 'path',\n {\n d: 'm5.17 11.75-1.71 1.71a5.004 5.004 0 0 0 .12 7.07 5.006 5.006 0 0 0 6.95 0l1.71-1.71',\n key: '4qinb0',\n },\n ],\n ['line', { x1: '8', x2: '8', y1: '2', y2: '5', key: '1041cp' }],\n ['line', { x1: '2', x2: '5', y1: '8', y2: '8', key: '14m1p5' }],\n ['line', { x1: '16', x2: '16', y1: '19', y2: '22', key: 'rzdirn' }],\n ['line', { x1: '19', x2: '22', y1: '16', y2: '16', key: 'ox905f' }],\n ],\n};\n\n/**\n * @deprecated Access `__iconData` instead.\n */\nexport const __iconNode: LucideIconNode[] = __iconData.node;\n\n/**\n * @component @name Unlink\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJtMTguODQgMTIuMjUgMS43Mi0xLjcxaC0uMDJhNS4wMDQgNS4wMDQgMCAwIDAtLjEyLTcuMDcgNS4wMDYgNS4wMDYgMCAwIDAtNi45NSAwbC0xLjcyIDEuNzEiIC8+CiAgPHBhdGggZD0ibTUuMTcgMTEuNzUtMS43MSAxLjcxYTUuMDA0IDUuMDA0IDAgMCAwIC4xMiA3LjA3IDUuMDA2IDUuMDA2IDAgMCAwIDYuOTUgMGwxLjcxLTEuNzEiIC8+CiAgPGxpbmUgeDE9IjgiIHgyPSI4IiB5MT0iMiIgeTI9IjUiIC8+CiAgPGxpbmUgeDE9IjIiIHgyPSI1IiB5MT0iOCIgeTI9IjgiIC8+CiAgPGxpbmUgeDE9IjE2IiB4Mj0iMTYiIHkxPSIxOSIgeTI9IjIyIiAvPgogIDxsaW5lIHgxPSIxOSIgeDI9IjIyIiB5MT0iMTYiIHkyPSIxNiIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/unlink\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Unlink = createLucideIcon(__iconData);\n\nexport default Unlink;\n","import createLucideIcon from '../createLucideIcon';\nimport type { LucideIconNode, LucideIconData } from '../types';\n\nexport const __iconData: LucideIconData = {\n name: 'user',\n size: 24,\n node: [\n ['path', { d: 'M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2', key: '975kel' }],\n ['circle', { cx: '12', cy: '7', r: '4', key: '17ys0d' }],\n ],\n};\n\n/**\n * @deprecated Access `__iconData` instead.\n */\nexport const __iconNode: LucideIconNode[] = __iconData.node;\n\n/**\n * @component @name User\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTkgMjF2LTJhNCA0IDAgMCAwLTQtNEg5YTQgNCAwIDAgMC00IDR2MiIgLz4KICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjciIHI9IjQiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/user\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst User = createLucideIcon(__iconData);\n\nexport default User;\n","\"use client\"\n\nimport { useEffect, useMemo, useState } from \"react\"\nimport { useRouter } from \"next/navigation\"\nimport { BookOpen, FileText, Flag, Lightbulb, Scale } from \"lucide-react\"\nimport { useApp } from \"@/context/AppContext\"\nimport { StatusIcon } from \"@/components/shared/StatusIcon\"\nimport { displayStatus } from \"@/lib/statuses\"\nimport type { GraphNode, MemoryGraph, NodeKind } from \"@/lib/memory-graph\"\n\nexport const GROUPS: { kind: NodeKind; label: string }[] = [\n { kind: \"task\", label: \"Tasks\" },\n { kind: \"epic\", label: \"Epics\" },\n { kind: \"adr\", label: \"ADRs\" },\n { kind: \"doc\", label: \"Docs\" },\n { kind: \"entry\", label: \"Entries\" },\n]\nexport const KIND_ICON = { epic: Flag, adr: Scale, doc: FileText, entry: Lightbulb, task: BookOpen } as const\n\n/** Open a graph node where it lives: a task on /board, an epic on /roadmap, a doc or ADR in Docs, an entry here. */\nexport function useOpenNode(onOpenEntry: (id: string) => void) {\n const router = useRouter()\n const { openDoc } = useApp()\n return (n: GraphNode) => {\n if (n.kind === \"task\") router.push(`/board?task=${n.id}`)\n else if (n.kind === \"epic\") router.push(`/roadmap?item=${n.id}`)\n else if (n.kind === \"entry\") onOpenEntry(n.id)\n else void openDoc(n.path)\n }\n}\n\n/**\n * What an entry links to and what links back (R053), from GET /api/memory/graph?entry=.\n * Links are inferred from text, so the way to change them is to edit the entry.\n */\nexport function EntryRelated({ entryId, onOpenEntry }: { entryId: string; onOpenEntry: (id: string) => void }) {\n const { rootParam, summary, board } = useApp()\n const open = useOpenNode(onOpenEntry)\n const [graph, setGraph] = useState<MemoryGraph | null>(null)\n\n // refetch when the entry changes and on every memory_updated SSE event (AppContext replaces `summary`)\n useEffect(() => {\n let live = true\n fetch(`/api/memory/graph${rootParam}&entry=${encodeURIComponent(entryId)}`)\n .then((r) => r.json())\n .then((g: MemoryGraph) => { if (live) setGraph(g.nodes ? g : { nodes: [], edges: [] }) })\n .catch((e) => {\n console.warn(\"Loading entry links failed\", e)\n if (live) setGraph({ nodes: [], edges: [] })\n })\n return () => { live = false }\n }, [entryId, rootParam, summary])\n\n const tasks = useMemo(() => new Map(Object.values(board ?? {}).flat().map((t) => [t.id, t])), [board])\n const byId = useMemo(() => new Map((graph?.nodes ?? []).map((n) => [n.id, n])), [graph])\n const pick = (ids: string[]) => ids.map((id) => byId.get(id)).filter((n): n is GraphNode => !!n)\n const linksTo = pick((graph?.edges ?? []).filter((e) => e.from === entryId).map((e) => e.to))\n const linkedFrom = pick((graph?.edges ?? []).filter((e) => e.to === entryId).map((e) => e.from))\n\n // tasks from the live board, epics from the node (their roadmap status): one StatusIcon for both, as in Linked docs\n const row = (n: GraphNode & { status?: string }) => {\n const task = n.kind === \"task\" ? tasks.get(n.id) : undefined\n const status = task ? displayStatus(task) : n.kind === \"epic\" ? n.status : undefined\n const Icon = KIND_ICON[n.kind]\n return (\n <li key={n.id}>\n <button\n type=\"button\"\n onClick={() => open(n)}\n title={n.path}\n className=\"flex w-full items-center gap-2 rounded-md px-2 py-1 text-left text-sm outline-none hover:bg-surface2 focus-visible:ring-2 focus-visible:ring-accent\"\n >\n {status ? <StatusIcon status={status} className=\"size-3.5 shrink-0\" /> : <Icon className=\"size-3.5 shrink-0 text-muted\" aria-hidden />}\n {n.kind !== \"doc\" && <span className=\"shrink-0 font-mono text-[11px] text-muted\">{n.id}</span>}\n <span className=\"min-w-0 truncate text-txt\">{n.label}</span>\n </button>\n </li>\n )\n }\n\n const section = (title: string, nodes: GraphNode[]) => (\n <div className=\"flex flex-col gap-1.5\">\n <h4 className=\"text-[11px] font-semibold uppercase tracking-wider text-muted\">{title}</h4>\n {GROUPS.map(({ kind, label }) => {\n const group = nodes.filter((n) => n.kind === kind)\n if (!group.length) return null\n return (\n <div key={kind}>\n <p className=\"px-2 text-[11px] text-muted\">{label}</p>\n <ul>{group.map(row)}</ul>\n </div>\n )\n })}\n </div>\n )\n\n return (\n <section aria-label=\"Related\" className=\"mt-5 flex flex-col gap-3 border-t border-border pt-4\">\n <h3 className=\"text-xs font-semibold text-txt\">Related</h3>\n {graph === null ? (\n <p className=\"text-xs text-muted\">Loading links…</p>\n ) : !linksTo.length && !linkedFrom.length ? (\n <p className=\"text-xs text-muted\">No links yet. Mention a task, epic or doc in the entry to link it.</p>\n ) : (\n <>\n {linksTo.length > 0 && section(\"Links to\", linksTo)}\n {linkedFrom.length > 0 && section(\"Linked from\", linkedFrom)}\n </>\n )}\n </section>\n )\n}\n","\"use client\"\n\nimport { useEffect, useState, useSyncExternalStore } from \"react\"\nimport { useApp } from \"@/context/AppContext\"\nimport type { LinkRow, TargetRow } from \"@/lib/doc-links\"\n\nexport type DocLinksData = { out: LinkRow[]; in: LinkRow[]; broken: LinkRow[]; stale: LinkRow[]; targets: Record<string, TargetRow> }\n\n/** Events that can change which files exist or what they link to. */\nexport const LINK_EVENTS = new Set([\"doc_updated\", \"doc_created\", \"doc_deleted\", \"doc_renamed\", \"task_created\", \"task_updated\", \"roadmap_updated\", \"memory_updated\", \"decision_logged\"])\n\n// A burst of LINK_EVENTS (an agent moving five tasks) becomes one generation bump, so one refetch per URL\nconst DEBOUNCE_MS = 250\nlet generation = 0\nlet timer: ReturnType<typeof setTimeout> | undefined\nconst subscribers = new Set<() => void>()\nfunction onSse(e: Event) {\n if (!LINK_EVENTS.has((e as CustomEvent<{ type: string }>).detail?.type)) return\n clearTimeout(timer)\n timer = setTimeout(() => {\n generation++\n cache.clear()\n subscribers.forEach((f) => f())\n }, DEBOUNCE_MS)\n}\n// Registered once for the page's life, never removed: the cache must be cleared even while no link view is mounted\n// (a change made while the user is on /board must not be served from a stale promise on the way back).\nif (typeof window !== \"undefined\") window.addEventListener(\"vibedoc:sse\", onSse)\nfunction subscribe(cb: () => void) {\n subscribers.add(cb)\n return () => { subscribers.delete(cb) }\n}\n\n/** Bumps ~250ms after the last file-changing SSE event; use it as an effect dep to refetch link data. */\nexport function useLinkGeneration(): number {\n return useSyncExternalStore(subscribe, () => generation, () => 0)\n}\n\n// One request per URL per generation, shared by every caller (DocViewer + the preview's link handling, strict\n// mode's double effect). A failure is evicted so Retry asks again.\nconst cache = new Map<string, Promise<unknown>>()\nexport function fetchLinkJson<T>(url: string): Promise<T> {\n let p = cache.get(url)\n if (!p) {\n p = fetch(url).then(async (r) => {\n const body = await r.json().catch(() => null)\n if (!r.ok) throw new Error(body?.error ?? `${r.status} ${r.statusText}`)\n return body\n })\n const mine = p\n mine.catch(() => { if (cache.get(url) === mine) cache.delete(url) })\n cache.set(url, mine)\n }\n return p as Promise<T>\n}\n\n/**\n * Resolved links of one .md file (R056), from GET /api/docs/links; null while loading, empty for an unknown file.\n * Refetched on file-changing SSE events. The browser never resolves paths: a clicked link is matched to this data\n * by its raw target string as written in the file (`../b/y.md` without `#h`, `[[DOMAIN_MAP]]` → `DOMAIN_MAP`),\n * looked up in `targets` first, then `broken`.\n */\nexport function useDocLinks(path: string | undefined): DocLinksData | null {\n const { rootParam } = useApp()\n const [data, setData] = useState<{ path: string; links: DocLinksData } | null>(null)\n const gen = useLinkGeneration()\n\n useEffect(() => {\n if (!path) return\n let live = true\n fetchLinkJson<Partial<DocLinksData>>(`/api/docs/links${rootParam}&path=${encodeURIComponent(path)}`)\n .then((d) => {\n if (live) setData({ path, links: { out: d.out ?? [], in: d.in ?? [], broken: d.broken ?? [], stale: d.stale ?? [], targets: d.targets ?? {} } })\n })\n .catch((e) => {\n console.warn(\"Loading doc links failed\", e)\n if (live) setData({ path, links: { out: [], in: [], broken: [], stale: [], targets: {} } })\n })\n return () => { live = false }\n }, [path, rootParam, gen])\n\n // another file's links never show while this one loads\n return path && data?.path === path ? data.links : null\n}\n","import { Bot, User } from \"lucide-react\"\nimport { cn } from \"@/lib/utils\"\nimport { ownerKind, ownerLabel } from \"@/lib/owner\"\n\n/** Who is in charge: a person icon for \"human\", a bot + agent name for \"ai:<agent>\". Nothing when unset. */\nexport function OwnerChip({ owner, className }: { owner: string | null; className?: string }) {\n const kind = ownerKind(owner)\n if (kind === \"none\") return null\n const Icon = kind === \"ai\" ? Bot : User\n return (\n <span title={`Owner: ${ownerLabel(owner)}`} className={cn(\"inline-flex items-center gap-1 text-[11px] text-muted\", className)}>\n <Icon className={cn(\"size-3.5 shrink-0\", kind === \"ai\" && \"text-accent\")} aria-hidden />\n {ownerLabel(owner)}\n </span>\n )\n}\n","// Who is in charge of a task / epic (R055): `**Owner:** human` or `**Owner:** ai:<agent>`.\n// Pure (no React, no fs). Self-check: `node src/lib/owner.check.mts`.\n\nexport type OwnerKind = \"human\" | \"ai\" | \"none\"\n\nconst KNOWN_AGENTS = [\"claude\", \"cursor\", \"codex\", \"copilot\", \"gemini\", \"windsurf\", \"cline\", \"opencode\"]\n\n/** \"human\" | \"ai:<agent>\" (lowercase), or null for empty / \"—\" / anything else. A bare \"ai\" becomes \"ai:agent\". */\nexport function parseOwner(raw: string | null | undefined): string | null {\n const v = (raw ?? \"\").trim().toLowerCase()\n if (v === \"human\") return \"human\"\n const m = v.match(/^ai(?::\\s*([a-z0-9._-]+))?$/)\n return m ? `ai:${m[1] ?? \"agent\"}` : null\n}\n\nexport function ownerKind(owner: string | null): OwnerKind {\n return owner === \"human\" ? \"human\" : owner?.startsWith(\"ai:\") ? \"ai\" : \"none\"\n}\n\n/** \"Human\", \"claude\", \"No owner\". */\nexport function ownerLabel(owner: string | null): string {\n return owner === \"human\" ? \"Human\" : owner?.startsWith(\"ai:\") ? owner.slice(3) : \"No owner\"\n}\n\n/** Agent name from an MCP client's User-Agent (\"claude-code/2.1\" → \"claude\"); \"agent\" when unknown. */\nexport function agentFromUserAgent(ua: string | null | undefined): string {\n const s = (ua ?? \"\").toLowerCase()\n return KNOWN_AGENTS.find((a) => s.includes(a)) ?? \"agent\"\n}\n","// 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"],"names":["GROUPS","kind","label","KIND_ICON","epic","adr","doc","entry","task","useOpenNode","onOpenEntry","router","openDoc","n","push","id","path","EntryRelated","entryId","rootParam","summary","board","open","graph","setGraph","live","fetch","encodeURIComponent","then","r","json","g","nodes","edges","catch","e","console","warn","tasks","Map","Object","values","flat","map","t","byId","pick","ids","get","filter","linksTo","from","to","linkedFrom","row","undefined","status","Icon","type","onClick","title","className","section","group","length","KNOWN_AGENTS","parseOwner","raw","v","trim","toLowerCase","m","match","ownerKind","owner","startsWith","ownerLabel","slice","agentFromUserAgent","ua","s","find","a","includes","ID_RE","ID_ONLY_RE","BACKTICK_MD_RE","LINK_MD_RE","FENCE_RE","INLINE_CODE_RE","decode","decodeURI","plainLine","l","replace","_","b","linkContext","line","text","heading","sentence","split","rest","test","PLACEHOLDER_RE","EXAMPLE_NAMES","Set","isExampleTarget","target","name","pop","has","WIKI_RE","EXTERNAL_RE","pad3","String","Number","padStart","normalizeId","normalizePath","p","out","seg","join","dirOf","lastIndexOf","baseName","idOfPath","exec","plainText","md","alias","docNode","relPath","h1","RegExp","extractLinks","_fromPath","links","fence","forEach","i","f","prose","repeat","matchAll","index","k","context","indexCache","WeakMap","indexOf","allPaths","idx","set","byBase","bareHits","file","resolveLink","fromPath","explicitRel","tryPath","cands","c","rel","abs","hits","exact","suffix","endsWith","dir","sort","localeCompare","buildDocGraph","items","otherPaths","node","known","exists","broken","stale","targets","key","misses","GRAPH_DEFAULT_KINDS","graphHref","URLSearchParams","focus","docLinks","byPath","other","miss","in","fromEntries","entries","formatRelatedFiles","cap","more","body","TOUCH_ID_RE","DOC_EVENTS","touchedPaths","events","since","byKey","Date","parse","timestamp","keys","taskId","detail","add"],"mappings":"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","ignoreList":[0,1,2,3,4,5]}