wiki-viewer 2.6.2 → 2.7.1

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 (272) hide show
  1. package/.next/standalone/.next/BUILD_ID +1 -1
  2. package/.next/standalone/.next/app-path-routes-manifest.json +1 -0
  3. package/.next/standalone/.next/build-manifest.json +3 -3
  4. package/.next/standalone/.next/prerender-manifest.json +3 -3
  5. package/.next/standalone/.next/routes-manifest.json +8 -0
  6. package/.next/standalone/.next/server/app/_global-error.html +1 -1
  7. package/.next/standalone/.next/server/app/_global-error.rsc +1 -1
  8. package/.next/standalone/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  9. package/.next/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  10. package/.next/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  11. package/.next/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  12. package/.next/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  13. package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  14. package/.next/standalone/.next/server/app/_not-found.html +1 -1
  15. package/.next/standalone/.next/server/app/_not-found.rsc +2 -2
  16. package/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
  17. package/.next/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  18. package/.next/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
  19. package/.next/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  20. package/.next/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  21. package/.next/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  22. package/.next/standalone/.next/server/app/api/agent/activity/route.js +7 -7
  23. package/.next/standalone/.next/server/app/api/agent/activity/route.js.nft.json +1 -1
  24. package/.next/standalone/.next/server/app/api/agent/admin/agents/[agentId]/revoke/route.js +5 -5
  25. package/.next/standalone/.next/server/app/api/agent/admin/agents/[agentId]/revoke/route.js.nft.json +1 -1
  26. package/.next/standalone/.next/server/app/api/agent/admin/agents/route.js +5 -5
  27. package/.next/standalone/.next/server/app/api/agent/admin/agents/route.js.nft.json +1 -1
  28. package/.next/standalone/.next/server/app/api/agent/admin/registrations/[regId]/approve/route.js +3 -3
  29. package/.next/standalone/.next/server/app/api/agent/admin/registrations/[regId]/approve/route.js.nft.json +1 -1
  30. package/.next/standalone/.next/server/app/api/agent/admin/registrations/[regId]/deny/route.js +5 -5
  31. package/.next/standalone/.next/server/app/api/agent/admin/registrations/[regId]/deny/route.js.nft.json +1 -1
  32. package/.next/standalone/.next/server/app/api/agent/admin/registrations/route.js +5 -5
  33. package/.next/standalone/.next/server/app/api/agent/admin/registrations/route.js.nft.json +1 -1
  34. package/.next/standalone/.next/server/app/api/agent/events/[...path]/route.js +6 -6
  35. package/.next/standalone/.next/server/app/api/agent/events/[...path]/route.js.nft.json +1 -1
  36. package/.next/standalone/.next/server/app/api/agent/files/[...path]/route.js +8 -8
  37. package/.next/standalone/.next/server/app/api/agent/files/[...path]/route.js.nft.json +1 -1
  38. package/.next/standalone/.next/server/app/api/agent/fs/file/[...path]/route.js +6 -6
  39. package/.next/standalone/.next/server/app/api/agent/fs/file/[...path]/route.js.nft.json +1 -1
  40. package/.next/standalone/.next/server/app/api/agent/fs/ls/[[...path]]/route.js +7 -7
  41. package/.next/standalone/.next/server/app/api/agent/fs/ls/[[...path]]/route.js.nft.json +1 -1
  42. package/.next/standalone/.next/server/app/api/agent/fs/move/route.js +7 -7
  43. package/.next/standalone/.next/server/app/api/agent/fs/move/route.js.nft.json +1 -1
  44. package/.next/standalone/.next/server/app/api/agent/fs/search/route.js +7 -7
  45. package/.next/standalone/.next/server/app/api/agent/fs/search/route.js.nft.json +1 -1
  46. package/.next/standalone/.next/server/app/api/agent/internal/span/route.js +5 -5
  47. package/.next/standalone/.next/server/app/api/agent/internal/span/route.js.nft.json +1 -1
  48. package/.next/standalone/.next/server/app/api/agent/settings/route.js +8 -8
  49. package/.next/standalone/.next/server/app/api/agent/settings/route.js.nft.json +1 -1
  50. package/.next/standalone/.next/server/app/api/agent/sidecar/[...path]/route.js +6 -6
  51. package/.next/standalone/.next/server/app/api/agent/sidecar/[...path]/route.js.nft.json +1 -1
  52. package/.next/standalone/.next/server/app/api/app-proxy/[...path]/route.js +1 -1
  53. package/.next/standalone/.next/server/app/api/app-proxy/[...path]/route.js.nft.json +1 -1
  54. package/.next/standalone/.next/server/app/api/assets/[...path]/route.js +6 -6
  55. package/.next/standalone/.next/server/app/api/assets/[...path]/route.js.nft.json +1 -1
  56. package/.next/standalone/.next/server/app/api/auth/[...all]/route.js +3 -3
  57. package/.next/standalone/.next/server/app/api/auth/[...all]/route.js.nft.json +1 -1
  58. package/.next/standalone/.next/server/app/api/pdf/save/route.js +5 -5
  59. package/.next/standalone/.next/server/app/api/pdf/save/route.js.nft.json +1 -1
  60. package/.next/standalone/.next/server/app/api/share/[token]/asset/route/app-paths-manifest.json +3 -0
  61. package/.next/standalone/.next/server/app/api/share/[token]/asset/route/build-manifest.json +9 -0
  62. package/.next/standalone/.next/server/app/api/share/[token]/asset/route/server-reference-manifest.json +4 -0
  63. package/.next/standalone/.next/server/app/api/share/[token]/asset/route.js +9 -0
  64. package/.next/standalone/.next/server/app/api/share/[token]/asset/route.js.map +5 -0
  65. package/.next/standalone/.next/server/app/api/share/[token]/asset/route.js.nft.json +1 -0
  66. package/.next/standalone/.next/server/app/api/share/[token]/asset/route_client-reference-manifest.js +3 -0
  67. package/.next/standalone/.next/server/app/api/share/[token]/route.js +5 -5
  68. package/.next/standalone/.next/server/app/api/share/[token]/route.js.nft.json +1 -1
  69. package/.next/standalone/.next/server/app/api/share/route.js +5 -5
  70. package/.next/standalone/.next/server/app/api/share/route.js.nft.json +1 -1
  71. package/.next/standalone/.next/server/app/api/system/admins/route.js +4 -4
  72. package/.next/standalone/.next/server/app/api/system/admins/route.js.nft.json +1 -1
  73. package/.next/standalone/.next/server/app/api/system/auth-config/route.js +6 -6
  74. package/.next/standalone/.next/server/app/api/system/auth-config/route.js.nft.json +1 -1
  75. package/.next/standalone/.next/server/app/api/system/auth-settings/route.js +4 -4
  76. package/.next/standalone/.next/server/app/api/system/auth-settings/route.js.nft.json +1 -1
  77. package/.next/standalone/.next/server/app/api/system/browse/route.js +4 -4
  78. package/.next/standalone/.next/server/app/api/system/browse/route.js.nft.json +1 -1
  79. package/.next/standalone/.next/server/app/api/system/clear-root/route.js +4 -4
  80. package/.next/standalone/.next/server/app/api/system/clear-root/route.js.nft.json +1 -1
  81. package/.next/standalone/.next/server/app/api/system/config/route.js +6 -6
  82. package/.next/standalone/.next/server/app/api/system/config/route.js.nft.json +1 -1
  83. package/.next/standalone/.next/server/app/api/system/pins/route.js +4 -4
  84. package/.next/standalone/.next/server/app/api/system/pins/route.js.nft.json +1 -1
  85. package/.next/standalone/.next/server/app/api/system/reveal/route.js +5 -5
  86. package/.next/standalone/.next/server/app/api/system/reveal/route.js.nft.json +1 -1
  87. package/.next/standalone/.next/server/app/api/system/root-status/route.js +4 -4
  88. package/.next/standalone/.next/server/app/api/system/root-status/route.js.nft.json +1 -1
  89. package/.next/standalone/.next/server/app/api/system/set-root/route.js +6 -6
  90. package/.next/standalone/.next/server/app/api/system/set-root/route.js.nft.json +1 -1
  91. package/.next/standalone/.next/server/app/api/system/users/route.js +5 -5
  92. package/.next/standalone/.next/server/app/api/system/users/route.js.nft.json +1 -1
  93. package/.next/standalone/.next/server/app/api/system/workspaces/[id]/branch/route.js +4 -4
  94. package/.next/standalone/.next/server/app/api/system/workspaces/[id]/branch/route.js.nft.json +1 -1
  95. package/.next/standalone/.next/server/app/api/system/workspaces/[id]/open/route.js +6 -6
  96. package/.next/standalone/.next/server/app/api/system/workspaces/[id]/open/route.js.nft.json +1 -1
  97. package/.next/standalone/.next/server/app/api/system/workspaces/[id]/refresh/route.js +4 -4
  98. package/.next/standalone/.next/server/app/api/system/workspaces/[id]/refresh/route.js.nft.json +1 -1
  99. package/.next/standalone/.next/server/app/api/system/workspaces/[id]/route.js +6 -6
  100. package/.next/standalone/.next/server/app/api/system/workspaces/[id]/route.js.nft.json +1 -1
  101. package/.next/standalone/.next/server/app/api/system/workspaces/route.js +4 -4
  102. package/.next/standalone/.next/server/app/api/system/workspaces/route.js.nft.json +1 -1
  103. package/.next/standalone/.next/server/app/api/upload/[...path]/route.js +6 -6
  104. package/.next/standalone/.next/server/app/api/upload/[...path]/route.js.nft.json +1 -1
  105. package/.next/standalone/.next/server/app/api/wiki/app/route.js +8 -8
  106. package/.next/standalone/.next/server/app/api/wiki/app/route.js.nft.json +1 -1
  107. package/.next/standalone/.next/server/app/api/wiki/backlinks/route.js +8 -8
  108. package/.next/standalone/.next/server/app/api/wiki/backlinks/route.js.nft.json +1 -1
  109. package/.next/standalone/.next/server/app/api/wiki/content/route.js +6 -6
  110. package/.next/standalone/.next/server/app/api/wiki/content/route.js.nft.json +1 -1
  111. package/.next/standalone/.next/server/app/api/wiki/download/route.js +8 -8
  112. package/.next/standalone/.next/server/app/api/wiki/download/route.js.nft.json +1 -1
  113. package/.next/standalone/.next/server/app/api/wiki/file/route.js +6 -6
  114. package/.next/standalone/.next/server/app/api/wiki/file/route.js.nft.json +1 -1
  115. package/.next/standalone/.next/server/app/api/wiki/folder/route.js +7 -7
  116. package/.next/standalone/.next/server/app/api/wiki/folder/route.js.nft.json +1 -1
  117. package/.next/standalone/.next/server/app/api/wiki/git-branches/route.js +6 -6
  118. package/.next/standalone/.next/server/app/api/wiki/git-branches/route.js.nft.json +1 -1
  119. package/.next/standalone/.next/server/app/api/wiki/git-checkout/route.js +4 -4
  120. package/.next/standalone/.next/server/app/api/wiki/git-checkout/route.js.nft.json +1 -1
  121. package/.next/standalone/.next/server/app/api/wiki/git-diff/route.js +6 -6
  122. package/.next/standalone/.next/server/app/api/wiki/git-diff/route.js.nft.json +1 -1
  123. package/.next/standalone/.next/server/app/api/wiki/git-file-info/route.js +6 -6
  124. package/.next/standalone/.next/server/app/api/wiki/git-file-info/route.js.nft.json +1 -1
  125. package/.next/standalone/.next/server/app/api/wiki/git-history/route.js +6 -6
  126. package/.next/standalone/.next/server/app/api/wiki/git-history/route.js.nft.json +1 -1
  127. package/.next/standalone/.next/server/app/api/wiki/git-pull/route.js +6 -6
  128. package/.next/standalone/.next/server/app/api/wiki/git-pull/route.js.nft.json +1 -1
  129. package/.next/standalone/.next/server/app/api/wiki/move/route.js +5 -5
  130. package/.next/standalone/.next/server/app/api/wiki/move/route.js.nft.json +1 -1
  131. package/.next/standalone/.next/server/app/api/wiki/new-file/route.js +5 -5
  132. package/.next/standalone/.next/server/app/api/wiki/new-file/route.js.nft.json +1 -1
  133. package/.next/standalone/.next/server/app/api/wiki/outlinks/route.js +8 -8
  134. package/.next/standalone/.next/server/app/api/wiki/outlinks/route.js.nft.json +1 -1
  135. package/.next/standalone/.next/server/app/api/wiki/page/route.js +5 -5
  136. package/.next/standalone/.next/server/app/api/wiki/page/route.js.nft.json +1 -1
  137. package/.next/standalone/.next/server/app/api/wiki/presence/route.js +6 -6
  138. package/.next/standalone/.next/server/app/api/wiki/presence/route.js.nft.json +1 -1
  139. package/.next/standalone/.next/server/app/api/wiki/route.js +6 -6
  140. package/.next/standalone/.next/server/app/api/wiki/route.js.nft.json +1 -1
  141. package/.next/standalone/.next/server/app/api/wiki/search/route.js +8 -8
  142. package/.next/standalone/.next/server/app/api/wiki/search/route.js.nft.json +1 -1
  143. package/.next/standalone/.next/server/app/api/wiki/slugs/route.js +6 -6
  144. package/.next/standalone/.next/server/app/api/wiki/slugs/route.js.nft.json +1 -1
  145. package/.next/standalone/.next/server/app/api/wiki/upload/route.js +5 -5
  146. package/.next/standalone/.next/server/app/api/wiki/upload/route.js.nft.json +1 -1
  147. package/.next/standalone/.next/server/app/api/wiki/watch/route.js +5 -5
  148. package/.next/standalone/.next/server/app/api/wiki/watch/route.js.nft.json +1 -1
  149. package/.next/standalone/.next/server/app/index.html +1 -1
  150. package/.next/standalone/.next/server/app/index.rsc +3 -3
  151. package/.next/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  152. package/.next/standalone/.next/server/app/index.segments/_full.segment.rsc +3 -3
  153. package/.next/standalone/.next/server/app/index.segments/_head.segment.rsc +1 -1
  154. package/.next/standalone/.next/server/app/index.segments/_index.segment.rsc +2 -2
  155. package/.next/standalone/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  156. package/.next/standalone/.next/server/app/page/react-loadable-manifest.json +1 -1
  157. package/.next/standalone/.next/server/app/page.js.nft.json +1 -1
  158. package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  159. package/.next/standalone/.next/server/app/s/[token]/page.js.nft.json +1 -1
  160. package/.next/standalone/.next/server/app/s/[token]/page_client-reference-manifest.js +1 -1
  161. package/.next/standalone/.next/server/app/signin/page_client-reference-manifest.js +1 -1
  162. package/.next/standalone/.next/server/app-paths-manifest.json +1 -0
  163. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0zv_j05._.js → [root-of-the-server]__0-mos44._.js} +2 -2
  164. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0nmx3k2._.js → [root-of-the-server]__00xq4wx._.js} +2 -2
  165. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0ovhccp._.js → [root-of-the-server]__038~~rd._.js} +2 -2
  166. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0~rntxj._.js → [root-of-the-server]__04jklyx._.js} +2 -2
  167. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0nzlmkb._.js → [root-of-the-server]__04z5.s-._.js} +2 -2
  168. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0a6j6r4._.js → [root-of-the-server]__04~bqmd._.js} +2 -2
  169. package/.next/standalone/.next/server/chunks/[root-of-the-server]__05jd.5~._.js +3 -0
  170. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0ajw6de._.js → [root-of-the-server]__05~-fkm._.js} +2 -2
  171. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0esmskc._.js → [root-of-the-server]__06s802c._.js} +2 -2
  172. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0na11h0._.js → [root-of-the-server]__08-0m4o._.js} +4 -4
  173. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0s_8poz._.js → [root-of-the-server]__08mb7mf._.js} +2 -2
  174. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__000spch._.js → [root-of-the-server]__096dpr1._.js} +2 -2
  175. package/.next/standalone/.next/server/chunks/[root-of-the-server]__09i-r6q._.js +12 -0
  176. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0n9zdf0._.js → [root-of-the-server]__0a_c5s5._.js} +2 -2
  177. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0as-u6z._.js → [root-of-the-server]__0asy5fk._.js} +2 -2
  178. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0l-wu5u._.js → [root-of-the-server]__0bikav1._.js} +2 -2
  179. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0fshk._._.js → [root-of-the-server]__0cynf.m._.js} +2 -2
  180. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0yat~ul._.js → [root-of-the-server]__0dyghs~._.js} +2 -2
  181. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0w~__xz._.js → [root-of-the-server]__0ej__9l._.js} +2 -2
  182. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0wfv_by._.js → [root-of-the-server]__0f-y9ak._.js} +2 -2
  183. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0oruwos._.js → [root-of-the-server]__0j456kt._.js} +2 -2
  184. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0zbkgnr._.js → [root-of-the-server]__0kgev~0._.js} +2 -2
  185. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0km~c.f._.js +3 -0
  186. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0.-oq-7._.js → [root-of-the-server]__0le9en3._.js} +2 -2
  187. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0lvz22t._.js +1 -1
  188. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0uibxf_._.js → [root-of-the-server]__0lwoa8u._.js} +2 -2
  189. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0-jzw2_._.js → [root-of-the-server]__0ocu5kq._.js} +2 -2
  190. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0fu72o7._.js → [root-of-the-server]__0omu2ls._.js} +2 -2
  191. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__09t4v4r._.js → [root-of-the-server]__0ou1yo3._.js} +2 -2
  192. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0u81k~2._.js → [root-of-the-server]__0qe_pj_._.js} +2 -2
  193. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0wlj-yw._.js → [root-of-the-server]__0snmvie._.js} +2 -2
  194. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__06booxp._.js → [root-of-the-server]__0sqf51n._.js} +2 -2
  195. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0vxex1w._.js → [root-of-the-server]__0syhzuy._.js} +2 -2
  196. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__024967n._.js → [root-of-the-server]__0xblgqt._.js} +2 -2
  197. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0s38pid._.js → [root-of-the-server]__0xzvkcg._.js} +2 -2
  198. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0z3wg9x._.js → [root-of-the-server]__0y6a-84._.js} +4 -4
  199. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0ywviax._.js +20 -0
  200. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__071_pmz._.js → [root-of-the-server]__0~1k.~a._.js} +2 -2
  201. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0bvtbax._.js → [root-of-the-server]__0~dajlm._.js} +2 -2
  202. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0sggstu._.js → [root-of-the-server]__0~oj7j3._.js} +2 -2
  203. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0e_9pc5._.js → [root-of-the-server]__0~yn~7e._.js} +2 -2
  204. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0c-ee48._.js → [root-of-the-server]__10l3owp._.js} +2 -2
  205. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0o0v6hf._.js → [root-of-the-server]__10ljgl.._.js} +2 -2
  206. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0_1f2cw._.js → [root-of-the-server]__10~3r6l._.js} +2 -2
  207. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__01qcera._.js → [root-of-the-server]__11akjkm._.js} +2 -2
  208. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0aoqat-._.js → [root-of-the-server]__11fcf05._.js} +2 -2
  209. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__02.uul~._.js → [root-of-the-server]__13f0ukk._.js} +2 -2
  210. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0_0bqpg._.js → [root-of-the-server]__13hpe9q._.js} +2 -2
  211. package/.next/standalone/.next/server/chunks/_next-internal_server_app_api_share_[token]_asset_route_actions_0mxwvof.js +3 -0
  212. package/.next/standalone/.next/server/chunks/src_lib_auth_server_ts_00f4e0h._.js +452 -0
  213. package/.next/standalone/.next/server/chunks/ssr/{0~w0_katex_dist_katex_mjs_0awdhzw._.js → 0~w0_katex_dist_katex_mjs_1115d6v._.js} +1 -1
  214. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0.j71x7._.js +3 -0
  215. package/.next/standalone/.next/server/chunks/ssr/{_0sxeqi8._.js → _03xt0rl._.js} +2 -2
  216. package/.next/standalone/.next/server/chunks/ssr/{_0kcfv3r._.js → _0i3r51-._.js} +2 -2
  217. package/.next/standalone/.next/server/chunks/ssr/_0v4uz-4._.js +3 -3
  218. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0_zq~v6._.js → node_modules__pnpm_0-gfnl9._.js} +1 -1
  219. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0cy5ftq._.js → node_modules__pnpm_0.41jpn._.js} +2 -2
  220. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0~5s0h-._.js → node_modules__pnpm_00mt6nh._.js} +1 -1
  221. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_01uc1hl._.js → node_modules__pnpm_06za8g0._.js} +1 -1
  222. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0t16czj._.js → node_modules__pnpm_0752tb8._.js} +1 -1
  223. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0jywdw0._.js → node_modules__pnpm_08.egvu._.js} +1 -1
  224. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0w~3li6._.js → node_modules__pnpm_0a5jwqo._.js} +1 -1
  225. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0~xns8v._.js → node_modules__pnpm_0c-_96g._.js} +1 -1
  226. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0w3.bto._.js → node_modules__pnpm_0cxeac7._.js} +1 -1
  227. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_11-1cme._.js → node_modules__pnpm_0do9l33._.js} +1 -1
  228. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0h8t6~c._.js → node_modules__pnpm_0go8~j7._.js} +1 -1
  229. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_02vvjkq._.js → node_modules__pnpm_0h~ckqb._.js} +1 -1
  230. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0~l___j._.js → node_modules__pnpm_0knclqg._.js} +2 -2
  231. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_04hymjt._.js → node_modules__pnpm_0lne~4i._.js} +2 -2
  232. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0c5xt34._.js → node_modules__pnpm_0mrjai_._.js} +1 -1
  233. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0abi.df._.js → node_modules__pnpm_0mx7wsr._.js} +1 -1
  234. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0u3p3__._.js → node_modules__pnpm_0oi2w2s._.js} +1 -1
  235. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_131u09o._.js → node_modules__pnpm_0qiaujf._.js} +1 -1
  236. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_10y-1uw._.js → node_modules__pnpm_0r529m.._.js} +1 -1
  237. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0zt6ord._.js → node_modules__pnpm_0s8-kbr._.js} +2 -2
  238. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0j2ck16._.js → node_modules__pnpm_0uvds62._.js} +1 -1
  239. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0bwtedy._.js → node_modules__pnpm_0w7.zt6._.js} +1 -1
  240. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_13kfm1k._.js → node_modules__pnpm_0z5ch94._.js} +2 -2
  241. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0of-lo7._.js → node_modules__pnpm_0zya776._.js} +1 -1
  242. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_05py9u6._.js → node_modules__pnpm_10qgn1p._.js} +1 -1
  243. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0ve~5~d._.js → node_modules__pnpm_113-u.n._.js} +2 -2
  244. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0g7aqxf._.js → node_modules__pnpm_12v.ysz._.js} +2 -2
  245. package/.next/standalone/.next/server/chunks/ssr/src_app_s_[token]_page_tsx_0_fzrmd._.js +3 -0
  246. package/.next/standalone/.next/server/middleware-build-manifest.js +3 -3
  247. package/.next/standalone/.next/server/middleware-manifest.json +5 -5
  248. package/.next/standalone/.next/server/pages/404.html +1 -1
  249. package/.next/standalone/.next/server/pages/500.html +1 -1
  250. package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
  251. package/.next/standalone/.next/server/server-reference-manifest.json +1 -1
  252. package/.next/standalone/.next/static/chunks/{0on-0-cxvzy-7.js → 0-.cn_ir_n9jf.js} +1 -1
  253. package/.next/standalone/.next/static/chunks/{0alhqgtsl8w~~.js → 0jgcnboih8.w8.js} +1 -1
  254. package/.next/standalone/.next/static/chunks/0pd5k_eu2n6lx.js +17 -0
  255. package/.next/standalone/.next/static/chunks/{10~nefki4aqgv.js → 0pfnisq~g.lxv.js} +1 -1
  256. package/.next/standalone/.next/static/chunks/0pw6gfeuvlhiu.css +5 -0
  257. package/.next/standalone/.next/static/chunks/{0~m~l6t.25dxo.js → 10n.a147w._5n.js} +1 -1
  258. package/.next/standalone/.next/static/chunks/11_s27j_.g~44.js +1 -0
  259. package/.next/standalone/package.json +1 -1
  260. package/package.json +1 -1
  261. package/.next/standalone/.next/server/chunks/[root-of-the-server]__08n~vj1._.js +0 -12
  262. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0m6r9ip._.js +0 -3
  263. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0sfrx~.._.js +0 -3
  264. package/.next/standalone/.next/server/chunks/_0dr1r1g._.js +0 -452
  265. package/.next/standalone/.next/server/chunks/_101exke._.js +0 -452
  266. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0w2ebbx._.js +0 -3
  267. package/.next/standalone/.next/static/chunks/0.g_p6_b0v2sp.js +0 -1
  268. package/.next/standalone/.next/static/chunks/0ncw5hhg~98~p.css +0 -5
  269. package/.next/standalone/.next/static/chunks/11c7-ic7.2nku.js +0 -17
  270. /package/.next/standalone/.next/static/{67H1xYhtLYoTKKFA6Djps → JXxkzDy909cpBo90OOfiL}/_buildManifest.js +0 -0
  271. /package/.next/standalone/.next/static/{67H1xYhtLYoTKKFA6Djps → JXxkzDy909cpBo90OOfiL}/_clientMiddlewareManifest.js +0 -0
  272. /package/.next/standalone/.next/static/{67H1xYhtLYoTKKFA6Djps → JXxkzDy909cpBo90OOfiL}/_ssgManifest.js +0 -0
@@ -1,3 +1,3 @@
1
- module.exports=[583627,e=>{"use strict";var t=e.i(798003),r=e.i(254226);function s(){return(process.env.WIKI_ADMIN_EMAILS??"").split(",").map(e=>e.trim().toLowerCase()).filter(Boolean)}async function a(e,r){if(r){let e=s();if(e.length>0&&e.includes(r.toLowerCase()))return!0}return((await (0,t.readConfig)()).adminUserIds??[]).includes(e)}async function n(){return(await (0,t.readConfig)()).adminUserIds??[]}async function i(e){await (0,t.updateConfig)(t=>{let r=t.adminUserIds??[];return r.includes(e)?t:{...t,adminUserIds:[...r,e]}})}async function o(e){let r=s().length>0,a=!1;if(await (0,t.updateConfig)(t=>{let s=(t.adminUserIds??[]).filter(t=>t!==e);return 0!==s.length||r?{...t,adminUserIds:s}:(a=!0,t)}),a)throw Error("LAST_ADMIN: cannot remove the last admin with no WIKI_ADMIN_EMAILS configured")}async function l(e){if(s().length>0||((await (0,t.readConfig)()).adminUserIds??[]).length>0)return;let r=!1;await (0,t.updateConfig)(t=>(t.adminUserIds??[]).length>0?t:(r=!0,{...t,adminUserIds:[e]})),r&&console.log(`[wiki-viewer] Bootstrap: first user ${e} promoted to admin`)}async function u(e){if("1"===process.env.WIKI_NO_AUTH)return{ok:!0,user:{id:"local",email:"local@localhost",name:"local"}};let t=await (0,r.requireUser)(e);return t.ok?await a(t.user.id,t.user.email)?{ok:!0,user:t.user}:{ok:!1,status:403,code:"ADMIN_REQUIRED"}:{ok:!1,status:401,code:"UNAUTHORIZED"}}e.s(["addAdmin",0,i,"ensureBootstrapAdmin",0,l,"isAdmin",0,a,"listAdmins",0,n,"removeAdmin",0,o,"requireAdmin",0,u])},874533,(e,t,r)=>{t.exports=e.x("node:child_process",()=>require("node:child_process"))},812057,(e,t,r)=>{t.exports=e.x("node:util",()=>require("node:util"))},834938,e=>{"use strict";let t;var r=e.i(874533),s=e.i(812057),a=e.i(912714),n=e.i(750227),i=e.i(660526);let o=(0,s.promisify)(r.execFile),l=/[;|&$`<>(){}\n\r\0]/;function u(){return n.default.join(i.default.homedir(),".wiki-viewer","mounts")}async function d(){if(!0!==t)try{await o("sshfs",["--version"]),t=!0}catch{throw Error("sshfs binary not found. Install sshfs + FUSE (e.g. `apt install sshfs`, `brew install macfuse sshfs`) and ensure it is on PATH.")}}async function c(t){var r;let s=n.default.resolve(t),i=!1;try{i=(await (0,a.readFile)("/proc/mounts","utf8")).split("\n").some(e=>{let t=e.split(" ");return t[1]===s&&/fuse/.test(t[2]??"")})}catch{i=!1}return!!i&&(r=s,new Promise(t=>{let s=!1,a=setTimeout(()=>{s||(s=!0,t(!1))},4e3);e.A(687903).then(({readdir:e})=>e(r)).then(()=>{s||(s=!0,clearTimeout(a),t(!0))}).catch(()=>{s||(s=!0,clearTimeout(a),t(!1))})}))}async function p(e){await d(),await (0,a.mkdir)(e.mountpoint,{recursive:!0});let t=function(e){let{target:t,mountpoint:r,port:s,authMethod:a,keyPath:n,readOnly:i}=e,o=t.user?`${t.user}@`:"",l=[`${o}${t.host}:${t.remotePath}`,r];s&&Number.isInteger(s)&&s>0&&s<65536&&l.push("-p",String(s));let u=["reconnect","ServerAliveInterval=15","ServerAliveCountMax=3","compression=yes","cache=yes","kernel_cache","StrictHostKeyChecking=accept-new","BatchMode=yes"];if(i&&u.push("ro"),"keyfile"===a&&n&&(u.push(`IdentityFile=${n}`),u.push("IdentitiesOnly=yes")),"password"===a){let e=u.indexOf("BatchMode=yes");e>=0&&u.splice(e,1),u.push("password_stdin"),u.push("PreferredAuthentications=password,keyboard-interactive"),u.push("PubkeyAuthentication=no"),u.push("NumberOfPasswordPrompts=1")}return e.extraOptions&&u.push(...e.extraOptions),l.push("-o",u.join(",")),l}(e);if(await new Promise((s,a)=>{let n=(0,r.spawn)("sshfs",t,{stdio:["pipe","ignore","pipe"]}),i="",o=setTimeout(()=>{n.kill("SIGKILL"),a(Error("sshfs mount timed out after 25s."))},25e3);n.stderr?.on("data",e=>{i+=e.toString()}),n.on("error",e=>{clearTimeout(o),a(e.message.includes("ENOENT")?Error("sshfs binary not found on PATH."):e)}),n.on("close",e=>{clearTimeout(o),0===e?s():a(Error(`sshfs exited ${e}: ${i.trim()||"mount failed"}`))}),"password"===e.authMethod&&n.stdin?.write((e.password??"")+"\n"),n.stdin?.end()}),!await c(e.mountpoint))throw Error("sshfs reported success but the mount is not live.")}async function h(e){let t=n.default.resolve(e);for(let[e,r]of[["fusermount",["-u","-z",t]],["umount",[t]]])try{await o(e,r);break}catch{}try{await (0,a.rmdir)(t)}catch{}}e.s(["assertSshfsAvailable",0,d,"isMounted",0,c,"isValidKeyPath",0,function(e){return!(!e||l.test(e)||e.includes(".."))&&(e.startsWith("/")||e.startsWith("~/"))},"mountSshfs",0,p,"mountpointFor",0,function(e){return n.default.join(u(),e)},"mountsDir",0,u,"parseSshTarget",0,function(e){let t;if(!e||l.test(e))return null;let r=e.trim(),s=r.indexOf(":");if(s<=0)return null;let a=r.slice(0,s),n=r.slice(s+1);if(!n.startsWith("/")||n.includes(".."))return null;let i=a,o=a.indexOf("@");return o>=0&&(t=a.slice(0,o),i=a.slice(o+1),!t)?null:i&&/^[a-zA-Z0-9.\-]+$/.test(i)&&(!t||/^[a-zA-Z0-9._\-]+$/.test(t))?{user:t,host:i,remotePath:n}:null},"unmountSshfs",0,h])},504445,e=>{"use strict";var t=e.i(750227);let r=globalThis;!r.__wikiRootDir&&process.env.ROOT_DIR&&(r.__wikiRootDir=t.default.resolve(process.env.ROOT_DIR)),e.s(["clearRootDir",0,function(){r.__wikiRootDir=void 0},"getRootDir",0,function(){return r.__wikiRootDir??""},"isRootDirSet",0,function(){return!!r.__wikiRootDir},"setRootDir",0,function(e){r.__wikiRootDir=t.default.resolve(e)}])},660038,e=>{"use strict";var t=e.i(750227),r=e.i(254226),s=e.i(583627),a=e.i(504445),n=e.i(359211);async function i(e){let r;await (0,n.migrateConfigToWorkspaces)();let s=new URL(e.url).searchParams.get("ws")??e.headers.get("x-workspace")??null;if(s)r=await (0,n.getWorkspace)(s)??null;else{let e=await (0,n.listWorkspaces)();if(0===e.length){let e;r=(e=(0,a.getRootDir)())?{id:"ws_default",name:t.default.basename(e)||"workspace",rootDir:e,createdAt:new Date(0).toISOString()}:null}else r=e.slice().sort((e,t)=>{let r=e.lastOpenedAt?new Date(e.lastOpenedAt).getTime():0,s=t.lastOpenedAt?new Date(t.lastOpenedAt).getTime():0;return s!==r?s-r:e.id<t.id?-1:+(e.id>t.id)})[0]}return r?.ssh&&await (0,n.ensureWorkspaceMounted)(r),r}async function o(e,t="read"){if("1"===process.env.WIKI_NO_AUTH){let r=await i(e);return r?"write"===t&&r.readOnly?{ok:!1,status:403,code:"WORKSPACE_READ_ONLY"}:{ok:!0,ws:r,rootDir:r.rootDir,userId:"local",isAdmin:!0}:{ok:!1,status:400,code:"WORKSPACE_REQUIRED"}}let a=await (0,r.requireUser)(e);if(!a.ok)return{ok:!1,status:401,code:"UNAUTHORIZED"};let l=await (0,s.isAdmin)(a.user.id,a.user.email),u=new URL(e.url).searchParams.get("ws")??e.headers.get("x-workspace")??null,d=await i(e);return d?(0,n.userCanAccess)(d,a.user.id,l)?"write"===t&&d.readOnly?{ok:!1,status:403,code:"WORKSPACE_READ_ONLY"}:{ok:!0,ws:d,rootDir:d.rootDir,userId:a.user.id,isAdmin:l}:{ok:!1,status:403,code:"WORKSPACE_FORBIDDEN"}:{ok:!1,status:u?404:400,code:u?"WORKSPACE_NOT_FOUND":"WORKSPACE_REQUIRED"}}async function l(e,t="read"){let r=await i(e);if(!r){let t=new URL(e.url).searchParams.get("ws")??e.headers.get("x-workspace")??null;return{ok:!1,status:t?404:400,code:t?"WORKSPACE_NOT_FOUND":"WORKSPACE_REQUIRED"}}return"write"===t&&r.readOnly?{ok:!1,status:403,code:"WORKSPACE_READ_ONLY"}:{ok:!0,ws:r,rootDir:r.rootDir}}e.s(["resolveWorkspaceForAgent",0,l,"resolveWorkspaceForUser",0,o])},402662,e=>{"use strict";var t=e.i(702414);e.s(["checkOrigin",0,function(e){let r=e.method.toUpperCase();if("GET"===r||"HEAD"===r||"OPTIONS"===r)return null;let s=e.headers.get("origin"),a=e.headers.get("referer");if(!s&&!a)return null;let n=function(e){let t=Array.from(new Set(["localhost","127.0.0.1",e.split(":")[0],...(process.env.WIKI_OWNER_HOSTS??"").split(",").map(e=>e.trim()).filter(Boolean)])),r=["",":3000",":3003"];e.includes(":")&&r.push(":"+e.split(":")[1]);let s=new Set;for(let e of t)for(let t of["http","https"])for(let a of r)s.add(`${t}://${e}${a}`);return s}(e.headers.get("host")??"");if(s)return n.has(s)?null:t.NextResponse.json({error:"FORBIDDEN",message:"Bad origin"},{status:403});if(a){try{let{protocol:e,host:t}=new URL(a);if(n.has(`${e}//${t}`))return null}catch{}return t.NextResponse.json({error:"FORBIDDEN",message:"Bad referer"},{status:403})}return null}])},363906,e=>{"use strict";var t=e.i(364564),r=e.i(102095),s=e.i(691091),a=e.i(475331),n=e.i(490301),i=e.i(670943),o=e.i(690324),l=e.i(243133),u=e.i(404870),d=e.i(420180),c=e.i(867883),p=e.i(336708),h=e.i(682278),f=e.i(157569),m=e.i(844146),w=e.i(193695);e.i(105888);var v=e.i(530564),R=e.i(912714),_=e.i(750227),g=e.i(702414),A=e.i(402662),y=e.i(660038),E=e.i(359211);async function k(e){let t=(0,A.checkOrigin)(e);if(t)return t;let r=await (0,y.resolveWorkspaceForUser)(e,"write");if(!r.ok)return g.NextResponse.json({error:r.code},{status:r.status});let{rootDir:s}=r,a=new URL(e.url).searchParams.get("path");if(!a)return g.NextResponse.json({error:"Missing path"},{status:400});if(".pdf"!==_.default.extname(a).toLowerCase())return g.NextResponse.json({error:"Not a PDF"},{status:400});let n=(0,E.safeWorkspacePath)(s,a);if(!n)return g.NextResponse.json({error:"Invalid path"},{status:400});let i=Buffer.from(await e.arrayBuffer());if(0===i.length)return g.NextResponse.json({error:"Empty body"},{status:400});if(i.length>0x3200000)return g.NextResponse.json({error:"PDF exceeds 50MB limit"},{status:413});if("%PDF-"!==i.subarray(0,5).toString("latin1"))return g.NextResponse.json({error:"Not a valid PDF"},{status:400});try{return await (0,R.mkdir)(_.default.dirname(n),{recursive:!0}),await (0,R.writeFile)(n,i),g.NextResponse.json({ok:!0,size:i.length})}catch{return g.NextResponse.json({error:"Failed to save"},{status:500})}}e.s(["PUT",0,k],408171);var O=e.i(408171);let I=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/pdf/save/route",pathname:"/api/pdf/save",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/pdf/save/route.ts",nextConfigOutput:"standalone",userland:O,...{}}),{workAsyncStorage:x,workUnitAsyncStorage:D,serverHooks:P}=I;async function N(e,t,s){s.requestMeta&&(0,a.setRequestMeta)(e,s.requestMeta),I.isDev&&(0,a.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let R="/api/pdf/save/route";R=R.replace(/\/index$/,"")||"/";let _=await I.prepare(e,t,{srcPage:R,multiZoneDraftMode:!1});if(!_)return t.statusCode=400,t.end("Bad Request"),null==s.waitUntil||s.waitUntil.call(s,Promise.resolve()),null;let{buildId:g,params:A,nextConfig:y,parsedUrl:E,isDraftMode:k,prerenderManifest:O,routerServerContext:x,isOnDemandRevalidate:D,revalidateOnlyGenerated:P,resolvedPathname:N,clientReferenceManifest:C,serverActionsManifest:S}=_,T=(0,o.normalizeAppPath)(R),U=!!(O.dynamicRoutes[T]||O.routes[N]),b=async()=>((null==x?void 0:x.render404)?await x.render404(e,t,E,!1):t.end("This page could not be found"),null);if(U&&!k){let e=!!O.routes[N],t=O.dynamicRoutes[T];if(t&&!1===t.fallback&&!e){if(y.adapterPath)return await b();throw new w.NoFallbackError}}let j=null;!U||I.isDev||k||(j="/index"===(j=N)?"/":j);let q=!0===I.isDev||!U,M=U&&!q;S&&C&&(0,i.setManifestsSingleton)({page:R,clientReferenceManifest:C,serverActionsManifest:S});let W=e.method||"GET",F=(0,n.getTracer)(),H=F.getActiveScopeSpan(),K=!!(null==x?void 0:x.isWrappedByNextServer),$=!!(0,a.getRequestMeta)(e,"minimalMode"),B=(0,a.getRequestMeta)(e,"incrementalCache")||await I.getIncrementalCache(e,y,O,$);null==B||B.resetRequestCache(),globalThis.__incrementalCache=B;let L={params:A,previewProps:O.preview,renderOpts:{experimental:{authInterrupts:!!y.experimental.authInterrupts},cacheComponents:!!y.cacheComponents,supportsDynamicResponse:q,incrementalCache:B,cacheLifeProfiles:y.cacheLife,waitUntil:s.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,s,a)=>I.onRequestError(e,t,s,a,x)},sharedContext:{buildId:g}},z=new l.NodeNextRequest(e),G=new l.NodeNextResponse(t),Z=u.NextRequestAdapter.fromNodeNextRequest(z,(0,u.signalFromNodeResponse)(t));try{let a,i=async e=>I.handle(Z,L).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=F.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==d.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let s=r.get("next.route");if(s){let t=`${W} ${s}`;e.setAttributes({"next.route":s,"http.route":s,"next.span_name":t}),e.updateName(t),a&&a!==e&&(a.setAttribute("http.route",s),a.updateName(t))}else e.updateName(`${W} ${R}`)}),o=async a=>{var n,o;let l=async({previousCacheEntry:r})=>{try{if(!$&&D&&P&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let n=await i(a);e.fetchMetrics=L.renderOpts.fetchMetrics;let o=L.renderOpts.pendingWaitUntil;o&&s.waitUntil&&(s.waitUntil(o),o=void 0);let l=L.renderOpts.collectedTags;if(!U)return await (0,p.sendResponse)(z,G,n,L.renderOpts.pendingWaitUntil),null;{let e=await n.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(n.headers);l&&(t[m.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==L.renderOpts.collectedRevalidate&&!(L.renderOpts.collectedRevalidate>=m.INFINITE_CACHE)&&L.renderOpts.collectedRevalidate,s=void 0===L.renderOpts.collectedExpire||L.renderOpts.collectedExpire>=m.INFINITE_CACHE?void 0:L.renderOpts.collectedExpire;return{value:{kind:v.CachedRouteKind.APP_ROUTE,status:n.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:s}}}}catch(t){throw(null==r?void 0:r.isStale)&&await I.onRequestError(e,t,{routerKind:"App Router",routePath:R,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:M,isOnDemandRevalidate:D})},!1,x),t}},u=await I.handleResponse({req:e,nextConfig:y,cacheKey:j,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:O,isRoutePPREnabled:!1,isOnDemandRevalidate:D,revalidateOnlyGenerated:P,responseGenerator:l,waitUntil:s.waitUntil,isMinimalMode:$});if(!U)return null;if((null==u||null==(n=u.value)?void 0:n.kind)!==v.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==u||null==(o=u.value)?void 0:o.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});$||t.setHeader("x-nextjs-cache",D?"REVALIDATED":u.isMiss?"MISS":u.isStale?"STALE":"HIT"),k&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let d=(0,h.fromNodeOutgoingHttpHeaders)(u.value.headers);return $&&U||d.delete(m.NEXT_CACHE_TAGS_HEADER),!u.cacheControl||t.getHeader("Cache-Control")||d.get("Cache-Control")||d.set("Cache-Control",(0,f.getCacheControlHeader)(u.cacheControl)),await (0,p.sendResponse)(z,G,new Response(u.value.body,{headers:d,status:u.value.status||200})),null};K&&H?await o(H):(a=F.getActiveScopeSpan(),await F.withPropagatedContext(e.headers,()=>F.trace(d.BaseServerSpan.handleRequest,{spanName:`${W} ${R}`,kind:n.SpanKind.SERVER,attributes:{"http.method":W,"http.target":e.url}},o),void 0,!K))}catch(t){if(t instanceof w.NoFallbackError||await I.onRequestError(e,t,{routerKind:"App Router",routePath:T,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:M,isOnDemandRevalidate:D})},!1,x),U)throw t;return await (0,p.sendResponse)(z,G,new Response(null,{status:500})),null}}e.s(["handler",0,N,"patchFetch",0,function(){return(0,s.patchFetch)({workAsyncStorage:x,workUnitAsyncStorage:D})},"routeModule",0,I,"serverHooks",0,P,"workAsyncStorage",0,x,"workUnitAsyncStorage",0,D],363906)},168315,e=>{e.v(t=>Promise.all(["server/chunks/0sag_@better-auth_memory-adapter_dist_index_mjs_0pvj6im._.js"].map(t=>e.l(t))).then(()=>t(862112)))},317691,e=>{e.v(t=>Promise.all(["server/chunks/0dhv_better-auth_dist_adapters_kysely-adapter_index_mjs_0t4t4z8._.js"].map(t=>e.l(t))).then(()=>t(833412)))},580632,e=>{e.v(e=>Promise.resolve().then(()=>e(270406)))},947559,e=>{e.v(t=>Promise.all(["server/chunks/0ugq_@better-auth_kysely-adapter_dist_bun-sqlite-dialect-DzNwOpKv_mjs_0z1z6m4._.js"].map(t=>e.l(t))).then(()=>t(495181)))},715018,e=>{e.v(t=>Promise.all(["server/chunks/0ugq_@better-auth_kysely-adapter_dist_node-sqlite-dialect_mjs_0qqlvhl._.js"].map(t=>e.l(t))).then(()=>t(698370)))},146843,e=>{e.v(t=>Promise.all(["server/chunks/0ugq_@better-auth_kysely-adapter_dist_d1-sqlite-dialect-C2B7YsIT_mjs_0wynrz3._.js"].map(t=>e.l(t))).then(()=>t(143740)))},84040,e=>{e.v(t=>Promise.all(["server/chunks/0p91_next_0h94sj1._.js"].map(t=>e.l(t))).then(()=>t(815068)))},427669,e=>{e.v(e=>Promise.resolve().then(()=>e(177730)))},687903,e=>{e.v(e=>Promise.resolve().then(()=>e(912714)))},754121,e=>{e.v(t=>Promise.all(["server/chunks/[root-of-the-server]__0d7zxm_._.js","server/chunks/src_lib_search_0ymmp0c._.js"].map(t=>e.l(t))).then(()=>t(437856)))}];
1
+ module.exports=[874533,(e,t,r)=>{t.exports=e.x("node:child_process",()=>require("node:child_process"))},812057,(e,t,r)=>{t.exports=e.x("node:util",()=>require("node:util"))},834938,e=>{"use strict";let t;var r=e.i(874533),s=e.i(812057),a=e.i(912714),n=e.i(750227),i=e.i(660526);let o=(0,s.promisify)(r.execFile),l=/[;|&$`<>(){}\n\r\0]/;function u(){return n.default.join(i.default.homedir(),".wiki-viewer","mounts")}async function d(){if(!0!==t)try{await o("sshfs",["--version"]),t=!0}catch{throw Error("sshfs binary not found. Install sshfs + FUSE (e.g. `apt install sshfs`, `brew install macfuse sshfs`) and ensure it is on PATH.")}}async function c(t){var r;let s=n.default.resolve(t),i=!1;try{i=(await (0,a.readFile)("/proc/mounts","utf8")).split("\n").some(e=>{let t=e.split(" ");return t[1]===s&&/fuse/.test(t[2]??"")})}catch{i=!1}return!!i&&(r=s,new Promise(t=>{let s=!1,a=setTimeout(()=>{s||(s=!0,t(!1))},4e3);e.A(687903).then(({readdir:e})=>e(r)).then(()=>{s||(s=!0,clearTimeout(a),t(!0))}).catch(()=>{s||(s=!0,clearTimeout(a),t(!1))})}))}async function p(e){await d(),await (0,a.mkdir)(e.mountpoint,{recursive:!0});let t=function(e){let{target:t,mountpoint:r,port:s,authMethod:a,keyPath:n,readOnly:i}=e,o=t.user?`${t.user}@`:"",l=[`${o}${t.host}:${t.remotePath}`,r];s&&Number.isInteger(s)&&s>0&&s<65536&&l.push("-p",String(s));let u=["reconnect","ServerAliveInterval=15","ServerAliveCountMax=3","compression=yes","cache=yes","kernel_cache","StrictHostKeyChecking=accept-new","BatchMode=yes"];if(i&&u.push("ro"),"keyfile"===a&&n&&(u.push(`IdentityFile=${n}`),u.push("IdentitiesOnly=yes")),"password"===a){let e=u.indexOf("BatchMode=yes");e>=0&&u.splice(e,1),u.push("password_stdin"),u.push("PreferredAuthentications=password,keyboard-interactive"),u.push("PubkeyAuthentication=no"),u.push("NumberOfPasswordPrompts=1")}return e.extraOptions&&u.push(...e.extraOptions),l.push("-o",u.join(",")),l}(e);if(await new Promise((s,a)=>{let n=(0,r.spawn)("sshfs",t,{stdio:["pipe","ignore","pipe"]}),i="",o=setTimeout(()=>{n.kill("SIGKILL"),a(Error("sshfs mount timed out after 25s."))},25e3);n.stderr?.on("data",e=>{i+=e.toString()}),n.on("error",e=>{clearTimeout(o),a(e.message.includes("ENOENT")?Error("sshfs binary not found on PATH."):e)}),n.on("close",e=>{clearTimeout(o),0===e?s():a(Error(`sshfs exited ${e}: ${i.trim()||"mount failed"}`))}),"password"===e.authMethod&&n.stdin?.write((e.password??"")+"\n"),n.stdin?.end()}),!await c(e.mountpoint))throw Error("sshfs reported success but the mount is not live.")}async function h(e){let t=n.default.resolve(e);for(let[e,r]of[["fusermount",["-u","-z",t]],["umount",[t]]])try{await o(e,r);break}catch{}try{await (0,a.rmdir)(t)}catch{}}e.s(["assertSshfsAvailable",0,d,"isMounted",0,c,"isValidKeyPath",0,function(e){return!(!e||l.test(e)||e.includes(".."))&&(e.startsWith("/")||e.startsWith("~/"))},"mountSshfs",0,p,"mountpointFor",0,function(e){return n.default.join(u(),e)},"mountsDir",0,u,"parseSshTarget",0,function(e){let t;if(!e||l.test(e))return null;let r=e.trim(),s=r.indexOf(":");if(s<=0)return null;let a=r.slice(0,s),n=r.slice(s+1);if(!n.startsWith("/")||n.includes(".."))return null;let i=a,o=a.indexOf("@");return o>=0&&(t=a.slice(0,o),i=a.slice(o+1),!t)?null:i&&/^[a-zA-Z0-9.\-]+$/.test(i)&&(!t||/^[a-zA-Z0-9._\-]+$/.test(t))?{user:t,host:i,remotePath:n}:null},"unmountSshfs",0,h])},583627,e=>{"use strict";var t=e.i(798003),r=e.i(254226);function s(){return(process.env.WIKI_ADMIN_EMAILS??"").split(",").map(e=>e.trim().toLowerCase()).filter(Boolean)}async function a(e,r){if(r){let e=s();if(e.length>0&&e.includes(r.toLowerCase()))return!0}return((await (0,t.readConfig)()).adminUserIds??[]).includes(e)}async function n(){return(await (0,t.readConfig)()).adminUserIds??[]}async function i(e){await (0,t.updateConfig)(t=>{let r=t.adminUserIds??[];return r.includes(e)?t:{...t,adminUserIds:[...r,e]}})}async function o(e){let r=s().length>0,a=!1;if(await (0,t.updateConfig)(t=>{let s=(t.adminUserIds??[]).filter(t=>t!==e);return 0!==s.length||r?{...t,adminUserIds:s}:(a=!0,t)}),a)throw Error("LAST_ADMIN: cannot remove the last admin with no WIKI_ADMIN_EMAILS configured")}async function l(e){if(s().length>0||((await (0,t.readConfig)()).adminUserIds??[]).length>0)return;let r=!1;await (0,t.updateConfig)(t=>(t.adminUserIds??[]).length>0?t:(r=!0,{...t,adminUserIds:[e]})),r&&console.log(`[wiki-viewer] Bootstrap: first user ${e} promoted to admin`)}async function u(e){if("1"===process.env.WIKI_NO_AUTH)return{ok:!0,user:{id:"local",email:"local@localhost",name:"local"}};let t=await (0,r.requireUser)(e);return t.ok?await a(t.user.id,t.user.email)?{ok:!0,user:t.user}:{ok:!1,status:403,code:"ADMIN_REQUIRED"}:{ok:!1,status:401,code:"UNAUTHORIZED"}}e.s(["addAdmin",0,i,"ensureBootstrapAdmin",0,l,"isAdmin",0,a,"listAdmins",0,n,"removeAdmin",0,o,"requireAdmin",0,u])},504445,e=>{"use strict";var t=e.i(750227);let r=globalThis;!r.__wikiRootDir&&process.env.ROOT_DIR&&(r.__wikiRootDir=t.default.resolve(process.env.ROOT_DIR)),e.s(["clearRootDir",0,function(){r.__wikiRootDir=void 0},"getRootDir",0,function(){return r.__wikiRootDir??""},"isRootDirSet",0,function(){return!!r.__wikiRootDir},"setRootDir",0,function(e){r.__wikiRootDir=t.default.resolve(e)}])},660038,e=>{"use strict";var t=e.i(750227),r=e.i(254226),s=e.i(583627),a=e.i(504445),n=e.i(359211);async function i(e){let r;await (0,n.migrateConfigToWorkspaces)();let s=new URL(e.url).searchParams.get("ws")??e.headers.get("x-workspace")??null;if(s)r=await (0,n.getWorkspace)(s)??null;else{let e=await (0,n.listWorkspaces)();if(0===e.length){let e;r=(e=(0,a.getRootDir)())?{id:"ws_default",name:t.default.basename(e)||"workspace",rootDir:e,createdAt:new Date(0).toISOString()}:null}else r=e.slice().sort((e,t)=>{let r=e.lastOpenedAt?new Date(e.lastOpenedAt).getTime():0,s=t.lastOpenedAt?new Date(t.lastOpenedAt).getTime():0;return s!==r?s-r:e.id<t.id?-1:+(e.id>t.id)})[0]}return r?.ssh&&await (0,n.ensureWorkspaceMounted)(r),r}async function o(e,t="read"){if("1"===process.env.WIKI_NO_AUTH){let r=await i(e);return r?"write"===t&&r.readOnly?{ok:!1,status:403,code:"WORKSPACE_READ_ONLY"}:{ok:!0,ws:r,rootDir:r.rootDir,userId:"local",isAdmin:!0}:{ok:!1,status:400,code:"WORKSPACE_REQUIRED"}}let a=await (0,r.requireUser)(e);if(!a.ok)return{ok:!1,status:401,code:"UNAUTHORIZED"};let l=await (0,s.isAdmin)(a.user.id,a.user.email),u=new URL(e.url).searchParams.get("ws")??e.headers.get("x-workspace")??null,d=await i(e);return d?(0,n.userCanAccess)(d,a.user.id,l)?"write"===t&&d.readOnly?{ok:!1,status:403,code:"WORKSPACE_READ_ONLY"}:{ok:!0,ws:d,rootDir:d.rootDir,userId:a.user.id,isAdmin:l}:{ok:!1,status:403,code:"WORKSPACE_FORBIDDEN"}:{ok:!1,status:u?404:400,code:u?"WORKSPACE_NOT_FOUND":"WORKSPACE_REQUIRED"}}async function l(e,t="read"){let r=await i(e);if(!r){let t=new URL(e.url).searchParams.get("ws")??e.headers.get("x-workspace")??null;return{ok:!1,status:t?404:400,code:t?"WORKSPACE_NOT_FOUND":"WORKSPACE_REQUIRED"}}return"write"===t&&r.readOnly?{ok:!1,status:403,code:"WORKSPACE_READ_ONLY"}:{ok:!0,ws:r,rootDir:r.rootDir}}e.s(["resolveWorkspaceForAgent",0,l,"resolveWorkspaceForUser",0,o])},402662,e=>{"use strict";var t=e.i(702414);e.s(["checkOrigin",0,function(e){let r=e.method.toUpperCase();if("GET"===r||"HEAD"===r||"OPTIONS"===r)return null;let s=e.headers.get("origin"),a=e.headers.get("referer");if(!s&&!a)return null;let n=function(e){let t=Array.from(new Set(["localhost","127.0.0.1",e.split(":")[0],...(process.env.WIKI_OWNER_HOSTS??"").split(",").map(e=>e.trim()).filter(Boolean)])),r=["",":3000",":3003"];e.includes(":")&&r.push(":"+e.split(":")[1]);let s=new Set;for(let e of t)for(let t of["http","https"])for(let a of r)s.add(`${t}://${e}${a}`);return s}(e.headers.get("host")??"");if(s)return n.has(s)?null:t.NextResponse.json({error:"FORBIDDEN",message:"Bad origin"},{status:403});if(a){try{let{protocol:e,host:t}=new URL(a);if(n.has(`${e}//${t}`))return null}catch{}return t.NextResponse.json({error:"FORBIDDEN",message:"Bad referer"},{status:403})}return null}])},363906,e=>{"use strict";var t=e.i(364564),r=e.i(102095),s=e.i(691091),a=e.i(475331),n=e.i(490301),i=e.i(670943),o=e.i(690324),l=e.i(243133),u=e.i(404870),d=e.i(420180),c=e.i(867883),p=e.i(336708),h=e.i(682278),f=e.i(157569),m=e.i(844146),w=e.i(193695);e.i(105888);var v=e.i(530564),R=e.i(912714),_=e.i(750227),g=e.i(702414),A=e.i(402662),y=e.i(660038),E=e.i(359211);async function k(e){let t=(0,A.checkOrigin)(e);if(t)return t;let r=await (0,y.resolveWorkspaceForUser)(e,"write");if(!r.ok)return g.NextResponse.json({error:r.code},{status:r.status});let{rootDir:s}=r,a=new URL(e.url).searchParams.get("path");if(!a)return g.NextResponse.json({error:"Missing path"},{status:400});if(".pdf"!==_.default.extname(a).toLowerCase())return g.NextResponse.json({error:"Not a PDF"},{status:400});let n=(0,E.safeWorkspacePath)(s,a);if(!n)return g.NextResponse.json({error:"Invalid path"},{status:400});let i=Buffer.from(await e.arrayBuffer());if(0===i.length)return g.NextResponse.json({error:"Empty body"},{status:400});if(i.length>0x3200000)return g.NextResponse.json({error:"PDF exceeds 50MB limit"},{status:413});if("%PDF-"!==i.subarray(0,5).toString("latin1"))return g.NextResponse.json({error:"Not a valid PDF"},{status:400});try{return await (0,R.mkdir)(_.default.dirname(n),{recursive:!0}),await (0,R.writeFile)(n,i),g.NextResponse.json({ok:!0,size:i.length})}catch{return g.NextResponse.json({error:"Failed to save"},{status:500})}}e.s(["PUT",0,k],408171);var O=e.i(408171);let I=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/pdf/save/route",pathname:"/api/pdf/save",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/pdf/save/route.ts",nextConfigOutput:"standalone",userland:O,...{}}),{workAsyncStorage:x,workUnitAsyncStorage:D,serverHooks:P}=I;async function N(e,t,s){s.requestMeta&&(0,a.setRequestMeta)(e,s.requestMeta),I.isDev&&(0,a.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let R="/api/pdf/save/route";R=R.replace(/\/index$/,"")||"/";let _=await I.prepare(e,t,{srcPage:R,multiZoneDraftMode:!1});if(!_)return t.statusCode=400,t.end("Bad Request"),null==s.waitUntil||s.waitUntil.call(s,Promise.resolve()),null;let{buildId:g,params:A,nextConfig:y,parsedUrl:E,isDraftMode:k,prerenderManifest:O,routerServerContext:x,isOnDemandRevalidate:D,revalidateOnlyGenerated:P,resolvedPathname:N,clientReferenceManifest:C,serverActionsManifest:S}=_,T=(0,o.normalizeAppPath)(R),U=!!(O.dynamicRoutes[T]||O.routes[N]),b=async()=>((null==x?void 0:x.render404)?await x.render404(e,t,E,!1):t.end("This page could not be found"),null);if(U&&!k){let e=!!O.routes[N],t=O.dynamicRoutes[T];if(t&&!1===t.fallback&&!e){if(y.adapterPath)return await b();throw new w.NoFallbackError}}let j=null;!U||I.isDev||k||(j="/index"===(j=N)?"/":j);let q=!0===I.isDev||!U,M=U&&!q;S&&C&&(0,i.setManifestsSingleton)({page:R,clientReferenceManifest:C,serverActionsManifest:S});let W=e.method||"GET",F=(0,n.getTracer)(),H=F.getActiveScopeSpan(),K=!!(null==x?void 0:x.isWrappedByNextServer),$=!!(0,a.getRequestMeta)(e,"minimalMode"),B=(0,a.getRequestMeta)(e,"incrementalCache")||await I.getIncrementalCache(e,y,O,$);null==B||B.resetRequestCache(),globalThis.__incrementalCache=B;let L={params:A,previewProps:O.preview,renderOpts:{experimental:{authInterrupts:!!y.experimental.authInterrupts},cacheComponents:!!y.cacheComponents,supportsDynamicResponse:q,incrementalCache:B,cacheLifeProfiles:y.cacheLife,waitUntil:s.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,s,a)=>I.onRequestError(e,t,s,a,x)},sharedContext:{buildId:g}},z=new l.NodeNextRequest(e),G=new l.NodeNextResponse(t),Z=u.NextRequestAdapter.fromNodeNextRequest(z,(0,u.signalFromNodeResponse)(t));try{let a,i=async e=>I.handle(Z,L).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=F.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==d.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let s=r.get("next.route");if(s){let t=`${W} ${s}`;e.setAttributes({"next.route":s,"http.route":s,"next.span_name":t}),e.updateName(t),a&&a!==e&&(a.setAttribute("http.route",s),a.updateName(t))}else e.updateName(`${W} ${R}`)}),o=async a=>{var n,o;let l=async({previousCacheEntry:r})=>{try{if(!$&&D&&P&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let n=await i(a);e.fetchMetrics=L.renderOpts.fetchMetrics;let o=L.renderOpts.pendingWaitUntil;o&&s.waitUntil&&(s.waitUntil(o),o=void 0);let l=L.renderOpts.collectedTags;if(!U)return await (0,p.sendResponse)(z,G,n,L.renderOpts.pendingWaitUntil),null;{let e=await n.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(n.headers);l&&(t[m.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==L.renderOpts.collectedRevalidate&&!(L.renderOpts.collectedRevalidate>=m.INFINITE_CACHE)&&L.renderOpts.collectedRevalidate,s=void 0===L.renderOpts.collectedExpire||L.renderOpts.collectedExpire>=m.INFINITE_CACHE?void 0:L.renderOpts.collectedExpire;return{value:{kind:v.CachedRouteKind.APP_ROUTE,status:n.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:s}}}}catch(t){throw(null==r?void 0:r.isStale)&&await I.onRequestError(e,t,{routerKind:"App Router",routePath:R,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:M,isOnDemandRevalidate:D})},!1,x),t}},u=await I.handleResponse({req:e,nextConfig:y,cacheKey:j,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:O,isRoutePPREnabled:!1,isOnDemandRevalidate:D,revalidateOnlyGenerated:P,responseGenerator:l,waitUntil:s.waitUntil,isMinimalMode:$});if(!U)return null;if((null==u||null==(n=u.value)?void 0:n.kind)!==v.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==u||null==(o=u.value)?void 0:o.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});$||t.setHeader("x-nextjs-cache",D?"REVALIDATED":u.isMiss?"MISS":u.isStale?"STALE":"HIT"),k&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let d=(0,h.fromNodeOutgoingHttpHeaders)(u.value.headers);return $&&U||d.delete(m.NEXT_CACHE_TAGS_HEADER),!u.cacheControl||t.getHeader("Cache-Control")||d.get("Cache-Control")||d.set("Cache-Control",(0,f.getCacheControlHeader)(u.cacheControl)),await (0,p.sendResponse)(z,G,new Response(u.value.body,{headers:d,status:u.value.status||200})),null};K&&H?await o(H):(a=F.getActiveScopeSpan(),await F.withPropagatedContext(e.headers,()=>F.trace(d.BaseServerSpan.handleRequest,{spanName:`${W} ${R}`,kind:n.SpanKind.SERVER,attributes:{"http.method":W,"http.target":e.url}},o),void 0,!K))}catch(t){if(t instanceof w.NoFallbackError||await I.onRequestError(e,t,{routerKind:"App Router",routePath:T,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:M,isOnDemandRevalidate:D})},!1,x),U)throw t;return await (0,p.sendResponse)(z,G,new Response(null,{status:500})),null}}e.s(["handler",0,N,"patchFetch",0,function(){return(0,s.patchFetch)({workAsyncStorage:x,workUnitAsyncStorage:D})},"routeModule",0,I,"serverHooks",0,P,"workAsyncStorage",0,x,"workUnitAsyncStorage",0,D],363906)},168315,e=>{e.v(t=>Promise.all(["server/chunks/0sag_@better-auth_memory-adapter_dist_index_mjs_0pvj6im._.js"].map(t=>e.l(t))).then(()=>t(862112)))},317691,e=>{e.v(t=>Promise.all(["server/chunks/0dhv_better-auth_dist_adapters_kysely-adapter_index_mjs_0t4t4z8._.js"].map(t=>e.l(t))).then(()=>t(833412)))},580632,e=>{e.v(e=>Promise.resolve().then(()=>e(270406)))},947559,e=>{e.v(t=>Promise.all(["server/chunks/0ugq_@better-auth_kysely-adapter_dist_bun-sqlite-dialect-DzNwOpKv_mjs_0z1z6m4._.js"].map(t=>e.l(t))).then(()=>t(495181)))},715018,e=>{e.v(t=>Promise.all(["server/chunks/0ugq_@better-auth_kysely-adapter_dist_node-sqlite-dialect_mjs_0qqlvhl._.js"].map(t=>e.l(t))).then(()=>t(698370)))},146843,e=>{e.v(t=>Promise.all(["server/chunks/0ugq_@better-auth_kysely-adapter_dist_d1-sqlite-dialect-C2B7YsIT_mjs_0wynrz3._.js"].map(t=>e.l(t))).then(()=>t(143740)))},84040,e=>{e.v(t=>Promise.all(["server/chunks/0p91_next_0h94sj1._.js"].map(t=>e.l(t))).then(()=>t(815068)))},427669,e=>{e.v(e=>Promise.resolve().then(()=>e(177730)))},687903,e=>{e.v(e=>Promise.resolve().then(()=>e(912714)))},754121,e=>{e.v(t=>Promise.all(["server/chunks/[root-of-the-server]__0d7zxm_._.js","server/chunks/src_lib_search_0ymmp0c._.js"].map(t=>e.l(t))).then(()=>t(437856)))}];
2
2
 
3
- //# sourceMappingURL=%5Broot-of-the-server%5D__0ajw6de._.js.map
3
+ //# sourceMappingURL=%5Broot-of-the-server%5D__05~-fkm._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[583627,e=>{"use strict";var t=e.i(798003),r=e.i(254226);function a(){return(process.env.WIKI_ADMIN_EMAILS??"").split(",").map(e=>e.trim().toLowerCase()).filter(Boolean)}async function s(e,r){if(r){let e=a();if(e.length>0&&e.includes(r.toLowerCase()))return!0}return((await (0,t.readConfig)()).adminUserIds??[]).includes(e)}async function n(){return(await (0,t.readConfig)()).adminUserIds??[]}async function i(e){await (0,t.updateConfig)(t=>{let r=t.adminUserIds??[];return r.includes(e)?t:{...t,adminUserIds:[...r,e]}})}async function o(e){let r=a().length>0,s=!1;if(await (0,t.updateConfig)(t=>{let a=(t.adminUserIds??[]).filter(t=>t!==e);return 0!==a.length||r?{...t,adminUserIds:a}:(s=!0,t)}),s)throw Error("LAST_ADMIN: cannot remove the last admin with no WIKI_ADMIN_EMAILS configured")}async function l(e){if(a().length>0||((await (0,t.readConfig)()).adminUserIds??[]).length>0)return;let r=!1;await (0,t.updateConfig)(t=>(t.adminUserIds??[]).length>0?t:(r=!0,{...t,adminUserIds:[e]})),r&&console.log(`[wiki-viewer] Bootstrap: first user ${e} promoted to admin`)}async function u(e){if("1"===process.env.WIKI_NO_AUTH)return{ok:!0,user:{id:"local",email:"local@localhost",name:"local"}};let t=await (0,r.requireUser)(e);return t.ok?await s(t.user.id,t.user.email)?{ok:!0,user:t.user}:{ok:!1,status:403,code:"ADMIN_REQUIRED"}:{ok:!1,status:401,code:"UNAUTHORIZED"}}e.s(["addAdmin",0,i,"ensureBootstrapAdmin",0,l,"isAdmin",0,s,"listAdmins",0,n,"removeAdmin",0,o,"requireAdmin",0,u])},874533,(e,t,r)=>{t.exports=e.x("node:child_process",()=>require("node:child_process"))},812057,(e,t,r)=>{t.exports=e.x("node:util",()=>require("node:util"))},834938,e=>{"use strict";let t;var r=e.i(874533),a=e.i(812057),s=e.i(912714),n=e.i(750227),i=e.i(660526);let o=(0,a.promisify)(r.execFile),l=/[;|&$`<>(){}\n\r\0]/;function u(){return n.default.join(i.default.homedir(),".wiki-viewer","mounts")}async function c(){if(!0!==t)try{await o("sshfs",["--version"]),t=!0}catch{throw Error("sshfs binary not found. Install sshfs + FUSE (e.g. `apt install sshfs`, `brew install macfuse sshfs`) and ensure it is on PATH.")}}async function d(t){var r;let a=n.default.resolve(t),i=!1;try{i=(await (0,s.readFile)("/proc/mounts","utf8")).split("\n").some(e=>{let t=e.split(" ");return t[1]===a&&/fuse/.test(t[2]??"")})}catch{i=!1}return!!i&&(r=a,new Promise(t=>{let a=!1,s=setTimeout(()=>{a||(a=!0,t(!1))},4e3);e.A(687903).then(({readdir:e})=>e(r)).then(()=>{a||(a=!0,clearTimeout(s),t(!0))}).catch(()=>{a||(a=!0,clearTimeout(s),t(!1))})}))}async function p(e){await c(),await (0,s.mkdir)(e.mountpoint,{recursive:!0});let t=function(e){let{target:t,mountpoint:r,port:a,authMethod:s,keyPath:n,readOnly:i}=e,o=t.user?`${t.user}@`:"",l=[`${o}${t.host}:${t.remotePath}`,r];a&&Number.isInteger(a)&&a>0&&a<65536&&l.push("-p",String(a));let u=["reconnect","ServerAliveInterval=15","ServerAliveCountMax=3","compression=yes","cache=yes","kernel_cache","StrictHostKeyChecking=accept-new","BatchMode=yes"];if(i&&u.push("ro"),"keyfile"===s&&n&&(u.push(`IdentityFile=${n}`),u.push("IdentitiesOnly=yes")),"password"===s){let e=u.indexOf("BatchMode=yes");e>=0&&u.splice(e,1),u.push("password_stdin"),u.push("PreferredAuthentications=password,keyboard-interactive"),u.push("PubkeyAuthentication=no"),u.push("NumberOfPasswordPrompts=1")}return e.extraOptions&&u.push(...e.extraOptions),l.push("-o",u.join(",")),l}(e);if(await new Promise((a,s)=>{let n=(0,r.spawn)("sshfs",t,{stdio:["pipe","ignore","pipe"]}),i="",o=setTimeout(()=>{n.kill("SIGKILL"),s(Error("sshfs mount timed out after 25s."))},25e3);n.stderr?.on("data",e=>{i+=e.toString()}),n.on("error",e=>{clearTimeout(o),s(e.message.includes("ENOENT")?Error("sshfs binary not found on PATH."):e)}),n.on("close",e=>{clearTimeout(o),0===e?a():s(Error(`sshfs exited ${e}: ${i.trim()||"mount failed"}`))}),"password"===e.authMethod&&n.stdin?.write((e.password??"")+"\n"),n.stdin?.end()}),!await d(e.mountpoint))throw Error("sshfs reported success but the mount is not live.")}async function h(e){let t=n.default.resolve(e);for(let[e,r]of[["fusermount",["-u","-z",t]],["umount",[t]]])try{await o(e,r);break}catch{}try{await (0,s.rmdir)(t)}catch{}}e.s(["assertSshfsAvailable",0,c,"isMounted",0,d,"isValidKeyPath",0,function(e){return!(!e||l.test(e)||e.includes(".."))&&(e.startsWith("/")||e.startsWith("~/"))},"mountSshfs",0,p,"mountpointFor",0,function(e){return n.default.join(u(),e)},"mountsDir",0,u,"parseSshTarget",0,function(e){let t;if(!e||l.test(e))return null;let r=e.trim(),a=r.indexOf(":");if(a<=0)return null;let s=r.slice(0,a),n=r.slice(a+1);if(!n.startsWith("/")||n.includes(".."))return null;let i=s,o=s.indexOf("@");return o>=0&&(t=s.slice(0,o),i=s.slice(o+1),!t)?null:i&&/^[a-zA-Z0-9.\-]+$/.test(i)&&(!t||/^[a-zA-Z0-9._\-]+$/.test(t))?{user:t,host:i,remotePath:n}:null},"unmountSshfs",0,h])},504445,e=>{"use strict";var t=e.i(750227);let r=globalThis;!r.__wikiRootDir&&process.env.ROOT_DIR&&(r.__wikiRootDir=t.default.resolve(process.env.ROOT_DIR)),e.s(["clearRootDir",0,function(){r.__wikiRootDir=void 0},"getRootDir",0,function(){return r.__wikiRootDir??""},"isRootDirSet",0,function(){return!!r.__wikiRootDir},"setRootDir",0,function(e){r.__wikiRootDir=t.default.resolve(e)}])},660038,e=>{"use strict";var t=e.i(750227),r=e.i(254226),a=e.i(583627),s=e.i(504445),n=e.i(359211);async function i(e){let r;await (0,n.migrateConfigToWorkspaces)();let a=new URL(e.url).searchParams.get("ws")??e.headers.get("x-workspace")??null;if(a)r=await (0,n.getWorkspace)(a)??null;else{let e=await (0,n.listWorkspaces)();if(0===e.length){let e;r=(e=(0,s.getRootDir)())?{id:"ws_default",name:t.default.basename(e)||"workspace",rootDir:e,createdAt:new Date(0).toISOString()}:null}else r=e.slice().sort((e,t)=>{let r=e.lastOpenedAt?new Date(e.lastOpenedAt).getTime():0,a=t.lastOpenedAt?new Date(t.lastOpenedAt).getTime():0;return a!==r?a-r:e.id<t.id?-1:+(e.id>t.id)})[0]}return r?.ssh&&await (0,n.ensureWorkspaceMounted)(r),r}async function o(e,t="read"){if("1"===process.env.WIKI_NO_AUTH){let r=await i(e);return r?"write"===t&&r.readOnly?{ok:!1,status:403,code:"WORKSPACE_READ_ONLY"}:{ok:!0,ws:r,rootDir:r.rootDir,userId:"local",isAdmin:!0}:{ok:!1,status:400,code:"WORKSPACE_REQUIRED"}}let s=await (0,r.requireUser)(e);if(!s.ok)return{ok:!1,status:401,code:"UNAUTHORIZED"};let l=await (0,a.isAdmin)(s.user.id,s.user.email),u=new URL(e.url).searchParams.get("ws")??e.headers.get("x-workspace")??null,c=await i(e);return c?(0,n.userCanAccess)(c,s.user.id,l)?"write"===t&&c.readOnly?{ok:!1,status:403,code:"WORKSPACE_READ_ONLY"}:{ok:!0,ws:c,rootDir:c.rootDir,userId:s.user.id,isAdmin:l}:{ok:!1,status:403,code:"WORKSPACE_FORBIDDEN"}:{ok:!1,status:u?404:400,code:u?"WORKSPACE_NOT_FOUND":"WORKSPACE_REQUIRED"}}async function l(e,t="read"){let r=await i(e);if(!r){let t=new URL(e.url).searchParams.get("ws")??e.headers.get("x-workspace")??null;return{ok:!1,status:t?404:400,code:t?"WORKSPACE_NOT_FOUND":"WORKSPACE_REQUIRED"}}return"write"===t&&r.readOnly?{ok:!1,status:403,code:"WORKSPACE_READ_ONLY"}:{ok:!0,ws:r,rootDir:r.rootDir}}e.s(["resolveWorkspaceForAgent",0,l,"resolveWorkspaceForUser",0,o])},719126,e=>{"use strict";var t=e.i(666680),r=e.i(912714),a=e.i(750227);function s(e){let t=e.replace(/\\/g,"/");return".proof"===t||t.startsWith(".proof/")||".git"===t||t.startsWith(".git/")}async function n(e,t){if(!e)return null;let n=a.default.normalize(t);if(n.startsWith("..")||a.default.isAbsolute(n)||s(n))return null;let i=a.default.join(e,n);if(i!==e&&!i.startsWith(e+a.default.sep))return null;try{let t=await (0,r.realpath)(i);if(t!==e&&!t.startsWith(e+a.default.sep))return null}catch{let t=a.default.dirname(i);if(t!==i)try{let s=await (0,r.realpath)(t);if(s!==e&&!s.startsWith(e+a.default.sep))return null}catch{}}return i}let i={".md":"text/markdown; charset=utf-8",".markdown":"text/markdown; charset=utf-8",".txt":"text/plain; charset=utf-8",".json":"application/json; charset=utf-8",".jsonc":"application/json; charset=utf-8",".ts":"text/typescript; charset=utf-8",".tsx":"text/typescript; charset=utf-8",".mts":"text/typescript; charset=utf-8",".js":"text/javascript; charset=utf-8",".jsx":"text/javascript; charset=utf-8",".mjs":"text/javascript; charset=utf-8",".html":"text/html; charset=utf-8",".htm":"text/html; charset=utf-8",".css":"text/css; charset=utf-8",".yaml":"text/yaml; charset=utf-8",".yml":"text/yaml; charset=utf-8",".toml":"text/toml; charset=utf-8",".xml":"application/xml; charset=utf-8",".svg":"image/svg+xml",".png":"image/png",".jpg":"image/jpeg",".jpeg":"image/jpeg",".gif":"image/gif",".webp":"image/webp",".pdf":"application/pdf",".zip":"application/zip",".tar":"application/x-tar",".gz":"application/gzip",".py":"text/x-python; charset=utf-8",".rs":"text/x-rustsrc; charset=utf-8",".go":"text/x-go; charset=utf-8",".sh":"text/x-shellscript; charset=utf-8",".csv":"text/csv; charset=utf-8",".env":"text/plain; charset=utf-8"};async function o(e,t){let a=420;try{let t=await (0,r.stat)(e);a=511&t.mode}catch{}let s=e+".~"+process.pid+"."+Date.now()+".tmp",n=await (0,r.open)(s,"w",a);try{await n.write(t),await n.datasync()}finally{await n.close()}await (0,r.rename)(s,e)}async function l(e,t){let s=a.default.dirname(e);if(t)return await (0,r.mkdir)(s,{recursive:!0}),!0;try{return await (0,r.stat)(s),!0}catch{return!1}}e.s(["atomicWrite",0,o,"ensureParentDir",0,l,"extractShaHex",0,function(e){return e.replace(/^"/,"").replace(/"$/,"").replace(/^sha256:/,"")},"isDeniedRelPath",0,s,"isMarkdown",0,function(e){return e.endsWith(".md")||e.endsWith(".markdown")},"looksLikeBinary",0,function(e){return e.slice(0,Math.min(e.length,8192)).includes(0)},"mimeByExt",0,function(e){return i[a.default.extname(e).toLowerCase()]??"application/octet-stream"},"safeAbsPath",0,n,"sha256ofBuf",0,function(e){return"sha256:"+(0,t.createHash)("sha256").update(e).digest("hex")}])},814747,(e,t,r)=>{t.exports=e.x("path",()=>require("path"))},224361,(e,t,r)=>{t.exports=e.x("util",()=>require("util"))},688947,(e,t,r)=>{t.exports=e.x("stream",()=>require("stream"))},427699,(e,t,r)=>{t.exports=e.x("events",()=>require("events"))},228064,e=>{"use strict";var t=e.i(666680),r=e.i(912714),a=e.i(660526),s=e.i(750227),n=e.i(832852);let i="__registry__",o=new Map;function l(){let e=process.env.HOME??a.default.homedir();return s.default.join(e,".wiki-viewer")}function u(){return s.default.join(l(),"agents.json")}function c(e){return(0,t.createHash)("sha256").update(e,"utf8").digest("hex")}async function d(){try{let e=await (0,r.readFile)(u(),"utf8"),t=JSON.parse(e);return{version:1,agents:Array.isArray(t.agents)?t.agents:[]}}catch{return null}}async function p(e){await (0,r.mkdir)(l(),{recursive:!0});let t=u()+".tmp";await (0,r.writeFile)(t,JSON.stringify(e,null,2),{encoding:"utf8",mode:384});try{await (0,r.chmod)(t,384)}catch{}await (0,r.rename)(t,u())}async function h(){let e=await d();if(e)return e;let t={version:1,agents:[]};return await p(t),t}async function f(e){let r=await d();if(!r)return null;let a=c(e);for(let e of r.agents)if(function(e,r){let a=Buffer.from(e.padEnd(64,"0"),"utf8"),s=Buffer.from(r.padEnd(64,"0"),"utf8");return a.length===s.length&&(0,t.timingSafeEqual)(a,s)&&e.length===r.length}(e.tokenHash,a))return e;return null}async function m(e){await (0,n.withFileMutex)(i,async()=>{let t=await h(),r=t.agents.findIndex(t=>t.id===e.id);r>=0?t.agents[r]=e:t.agents.push(e),await p(t)})}async function w(e){return(0,n.withFileMutex)(i,async()=>{let t=await d();if(!t)return!1;let r=t.agents.length;return t.agents=t.agents.filter(t=>t.id!==e),t.agents.length!==r&&(await p(t),!0)})}async function g(e){Date.now()-(o.get(e)??0)<3e4||await (0,n.withFileMutex)(i,async()=>{let t=await d();if(!t)return;let r=t.agents.find(t=>t.id===e);r&&(r.lastSeen=new Date().toISOString(),o.set(e,Date.now()),await p(t))})}e.s(["addAgent",0,m,"hashToken",0,c,"lookupAgentByToken",0,f,"readRegistry",0,d,"removeAgent",0,w,"updateLastSeen",0,g])},215043,552350,e=>{"use strict";var t=e.i(228064);function r(e,t){return(function(e){let t="^",r=0;for(;r<e.length;)"*"===e[r]&&"*"===e[r+1]?(t+=".*","/"===e[r+=2]&&(t+="(?:.+/)?",r++)):("*"===e[r]?t+="[^/]*":"?"===e[r]?t+="[^/]":t+=e[r].replace(/[.+^${}()|[\]\\]/g,"\\$&"),r++);return new RegExp(t+="$")})(e).test(t)}e.s(["matchGlob",0,r],552350);var a=e.i(254226);async function s(e){let r=await (0,a.getSessionFromRequest)(e);if(r?.user){let e=r.user;return{ok:!0,agent:{id:`user:${e.id}`,displayName:e.name,tokenHash:"",scope:{paths:["**/*"],ops:["read","mutate","delete"]},createdAt:"",lastSeen:""}}}let s=e.headers.get("authorization")??"",n=s.startsWith("Bearer ")?s.slice(7).trim():"";if(!n)return{ok:!1,code:"UNAUTHORIZED",message:"No credentials"};let i=await (0,t.lookupAgentByToken)(n);if(!i)return{ok:!1,code:"UNAUTHORIZED",message:"Unknown or invalid token"};let o=e.headers.get("x-agent-id")??"";return o?o!==i.id?{ok:!1,code:"UNAUTHORIZED",message:"X-Agent-Id does not match token owner"}:((0,t.updateLastSeen)(i.id),{ok:!0,agent:i}):{ok:!1,code:"UNAUTHORIZED",message:"X-Agent-Id header required"}}process.env.AGENT_BEARER_TOKEN&&console.warn("[wiki-viewer] AGENT_BEARER_TOKEN is no longer used; manage agents via the AI Panel."),e.s(["checkAuth",0,s,"enforceScope",0,function(e,t){let{scope:a}=e;return void 0!==a.workspaceId&&void 0!==t.workspaceId&&a.workspaceId!==t.workspaceId?{ok:!1,code:"FORBIDDEN",message:`Agent scope does not cover workspace "${t.workspaceId}" (granted: "${a.workspaceId}")`}:a.ops.includes(t.op)?t.filePath&&!a.paths.some(e=>r(e,t.filePath))?{ok:!1,code:"FORBIDDEN",message:`Agent scope does not cover path "${t.filePath}"`}:{ok:!0}:{ok:!1,code:"FORBIDDEN",message:`Agent scope does not allow "${t.op}"`}},"verifyBy",0,function(e,t){return e.id.startsWith("user:")?!t||"owner"===t||"human"===t||t.startsWith("human:")||t===e.id?{ok:!0}:{ok:!1,code:"FORBIDDEN",message:'User agent must use "human", "owner", or own id in "by" field'}:t!==e.id?{ok:!1,code:"FORBIDDEN",message:`"by" field must equal agent id "${e.id}"`}:{ok:!0}}],215043)},713738,e=>{"use strict";var t=e.i(364564),r=e.i(102095),a=e.i(691091),s=e.i(475331),n=e.i(490301),i=e.i(670943),o=e.i(690324),l=e.i(243133),u=e.i(404870),c=e.i(420180),d=e.i(867883),p=e.i(336708),h=e.i(682278),f=e.i(157569),m=e.i(844146),w=e.i(193695);e.i(105888);var g=e.i(530564),v=e.i(912714),y=e.i(750227),_=e.i(702414),R=e.i(215043),k=e.i(660038),A=e.i(359211),x=e.i(719126);function E(e,t,r){return _.NextResponse.json({error:e,message:t},{status:r})}let I=new Set([".proof",".git"]);async function O(e,t,r,a,s,n,i,o,l){let u;if(s>n||o.length>=i)return;let c=y.default.join(e,t);try{u=await (0,v.readdir)(c,{withFileTypes:!0})}catch{return}for(let c of u){let u,d,p;if(o.length>=i)break;if(I.has(c.name))continue;let h=t?`${t}/${c.name}`:c.name;if((0,R.enforceScope)(r,{filePath:h,op:"read",workspaceId:l}).ok){if(c.isSymbolicLink())u="symlink";else if(c.isDirectory())u="dir";else{u="file";try{let t=await (0,v.stat)(y.default.join(e,h));d=t.size,p=t.mtime.toISOString()}catch{}}o.push({name:c.name,path:h,type:u,size:d,mtime:p}),a&&"dir"===u&&await O(e,h,r,a,s+1,n,i,o,l)}}}async function D(e,{params:t}){let r=await (0,R.checkAuth)(e);if(!r.ok)return E("UNAUTHORIZED",r.message??"Unauthorized",401);let{path:a}=await t,s=a?a.join("/"):"",n=await (0,k.resolveWorkspaceForAgent)(e);if(!n.ok)return E(n.code,n.code,n.status);let{ws:i,rootDir:o}=n;if(s){if(!(0,A.safeWorkspacePath)(o,s))return E("INVALID_PATH","Path traversal rejected",400);if(!await (0,x.safeAbsPath)(o,s))return E("INVALID_PATH","Path rejected (symlink escape or denied)",400)}let l=new URL(e.url),u=l.searchParams.has("recursive"),c=Math.min(parseInt(l.searchParams.get("limit")??"1000",10)||1e3,1e4),d=Math.min(parseInt(l.searchParams.get("depth")??"10",10)||10,20),p=s?y.default.join(o,s):o;try{if(!(await (0,v.stat)(p)).isDirectory())return E("NOT_A_DIRECTORY","Path is not a directory",400)}catch(e){if("ENOENT"===e.code)return E("NOT_FOUND","Directory not found",404);throw e}let h=[];return await O(o,s,r.agent,u,0,d,c,h,i.id),_.NextResponse.json({path:s,entries:h,truncated:h.length>=c})}e.s(["GET",0,D,"runtime",0,"nodejs"],897755);var P=e.i(897755);let N=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/agent/fs/ls/[[...path]]/route",pathname:"/api/agent/fs/ls/[[...path]]",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/agent/fs/ls/[[...path]]/route.ts",nextConfigOutput:"standalone",userland:P,...{}}),{workAsyncStorage:T,workUnitAsyncStorage:S,serverHooks:C}=N;async function U(e,t,a){a.requestMeta&&(0,s.setRequestMeta)(e,a.requestMeta),N.isDev&&(0,s.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let v="/api/agent/fs/ls/[[...path]]/route";v=v.replace(/\/index$/,"")||"/";let y=await N.prepare(e,t,{srcPage:v,multiZoneDraftMode:!1});if(!y)return t.statusCode=400,t.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve()),null;let{buildId:_,params:R,nextConfig:k,parsedUrl:A,isDraftMode:x,prerenderManifest:E,routerServerContext:I,isOnDemandRevalidate:O,revalidateOnlyGenerated:D,resolvedPathname:P,clientReferenceManifest:T,serverActionsManifest:S}=y,C=(0,o.normalizeAppPath)(v),U=!!(E.dynamicRoutes[C]||E.routes[P]),b=async()=>((null==I?void 0:I.render404)?await I.render404(e,t,A,!1):t.end("This page could not be found"),null);if(U&&!x){let e=!!E.routes[P],t=E.dynamicRoutes[C];if(t&&!1===t.fallback&&!e){if(k.adapterPath)return await b();throw new w.NoFallbackError}}let j=null;!U||N.isDev||x||(j="/index"===(j=P)?"/":j);let q=!0===N.isDev||!U,W=U&&!q;S&&T&&(0,i.setManifestsSingleton)({page:v,clientReferenceManifest:T,serverActionsManifest:S});let H=e.method||"GET",M=(0,n.getTracer)(),F=M.getActiveScopeSpan(),$=!!(null==I?void 0:I.isWrappedByNextServer),B=!!(0,s.getRequestMeta)(e,"minimalMode"),K=(0,s.getRequestMeta)(e,"incrementalCache")||await N.getIncrementalCache(e,k,E,B);null==K||K.resetRequestCache(),globalThis.__incrementalCache=K;let L={params:R,previewProps:E.preview,renderOpts:{experimental:{authInterrupts:!!k.experimental.authInterrupts},cacheComponents:!!k.cacheComponents,supportsDynamicResponse:q,incrementalCache:K,cacheLifeProfiles:k.cacheLife,waitUntil:a.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,a,s)=>N.onRequestError(e,t,a,s,I)},sharedContext:{buildId:_}},z=new l.NodeNextRequest(e),Z=new l.NodeNextResponse(t),G=u.NextRequestAdapter.fromNodeNextRequest(z,(0,u.signalFromNodeResponse)(t));try{let s,i=async e=>N.handle(G,L).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=M.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==c.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let a=r.get("next.route");if(a){let t=`${H} ${a}`;e.setAttributes({"next.route":a,"http.route":a,"next.span_name":t}),e.updateName(t),s&&s!==e&&(s.setAttribute("http.route",a),s.updateName(t))}else e.updateName(`${H} ${v}`)}),o=async s=>{var n,o;let l=async({previousCacheEntry:r})=>{try{if(!B&&O&&D&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let n=await i(s);e.fetchMetrics=L.renderOpts.fetchMetrics;let o=L.renderOpts.pendingWaitUntil;o&&a.waitUntil&&(a.waitUntil(o),o=void 0);let l=L.renderOpts.collectedTags;if(!U)return await (0,p.sendResponse)(z,Z,n,L.renderOpts.pendingWaitUntil),null;{let e=await n.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(n.headers);l&&(t[m.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==L.renderOpts.collectedRevalidate&&!(L.renderOpts.collectedRevalidate>=m.INFINITE_CACHE)&&L.renderOpts.collectedRevalidate,a=void 0===L.renderOpts.collectedExpire||L.renderOpts.collectedExpire>=m.INFINITE_CACHE?void 0:L.renderOpts.collectedExpire;return{value:{kind:g.CachedRouteKind.APP_ROUTE,status:n.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:a}}}}catch(t){throw(null==r?void 0:r.isStale)&&await N.onRequestError(e,t,{routerKind:"App Router",routePath:v,routeType:"route",revalidateReason:(0,d.getRevalidateReason)({isStaticGeneration:W,isOnDemandRevalidate:O})},!1,I),t}},u=await N.handleResponse({req:e,nextConfig:k,cacheKey:j,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:E,isRoutePPREnabled:!1,isOnDemandRevalidate:O,revalidateOnlyGenerated:D,responseGenerator:l,waitUntil:a.waitUntil,isMinimalMode:B});if(!U)return null;if((null==u||null==(n=u.value)?void 0:n.kind)!==g.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==u||null==(o=u.value)?void 0:o.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});B||t.setHeader("x-nextjs-cache",O?"REVALIDATED":u.isMiss?"MISS":u.isStale?"STALE":"HIT"),x&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let c=(0,h.fromNodeOutgoingHttpHeaders)(u.value.headers);return B&&U||c.delete(m.NEXT_CACHE_TAGS_HEADER),!u.cacheControl||t.getHeader("Cache-Control")||c.get("Cache-Control")||c.set("Cache-Control",(0,f.getCacheControlHeader)(u.cacheControl)),await (0,p.sendResponse)(z,Z,new Response(u.value.body,{headers:c,status:u.value.status||200})),null};$&&F?await o(F):(s=M.getActiveScopeSpan(),await M.withPropagatedContext(e.headers,()=>M.trace(c.BaseServerSpan.handleRequest,{spanName:`${H} ${v}`,kind:n.SpanKind.SERVER,attributes:{"http.method":H,"http.target":e.url}},o),void 0,!$))}catch(t){if(t instanceof w.NoFallbackError||await N.onRequestError(e,t,{routerKind:"App Router",routePath:C,routeType:"route",revalidateReason:(0,d.getRevalidateReason)({isStaticGeneration:W,isOnDemandRevalidate:O})},!1,I),U)throw t;return await (0,p.sendResponse)(z,Z,new Response(null,{status:500})),null}}e.s(["handler",0,U,"patchFetch",0,function(){return(0,a.patchFetch)({workAsyncStorage:T,workUnitAsyncStorage:S})},"routeModule",0,N,"serverHooks",0,C,"workAsyncStorage",0,T,"workUnitAsyncStorage",0,S],713738)},168315,e=>{e.v(t=>Promise.all(["server/chunks/0sag_@better-auth_memory-adapter_dist_index_mjs_0pvj6im._.js"].map(t=>e.l(t))).then(()=>t(862112)))},317691,e=>{e.v(t=>Promise.all(["server/chunks/0dhv_better-auth_dist_adapters_kysely-adapter_index_mjs_0t4t4z8._.js"].map(t=>e.l(t))).then(()=>t(833412)))},580632,e=>{e.v(e=>Promise.resolve().then(()=>e(270406)))},947559,e=>{e.v(t=>Promise.all(["server/chunks/0ugq_@better-auth_kysely-adapter_dist_bun-sqlite-dialect-DzNwOpKv_mjs_0z1z6m4._.js"].map(t=>e.l(t))).then(()=>t(495181)))},715018,e=>{e.v(t=>Promise.all(["server/chunks/0ugq_@better-auth_kysely-adapter_dist_node-sqlite-dialect_mjs_0qqlvhl._.js"].map(t=>e.l(t))).then(()=>t(698370)))},146843,e=>{e.v(t=>Promise.all(["server/chunks/0ugq_@better-auth_kysely-adapter_dist_d1-sqlite-dialect-C2B7YsIT_mjs_0wynrz3._.js"].map(t=>e.l(t))).then(()=>t(143740)))},84040,e=>{e.v(t=>Promise.all(["server/chunks/0p91_next_0h94sj1._.js"].map(t=>e.l(t))).then(()=>t(815068)))},427669,e=>{e.v(e=>Promise.resolve().then(()=>e(177730)))},687903,e=>{e.v(e=>Promise.resolve().then(()=>e(912714)))},754121,e=>{e.v(t=>Promise.all(["server/chunks/[root-of-the-server]__00mtevo._.js","server/chunks/src_lib_search_0ymmp0c._.js"].map(t=>e.l(t))).then(()=>t(437856)))}];
1
+ module.exports=[874533,(e,t,r)=>{t.exports=e.x("node:child_process",()=>require("node:child_process"))},812057,(e,t,r)=>{t.exports=e.x("node:util",()=>require("node:util"))},834938,e=>{"use strict";let t;var r=e.i(874533),a=e.i(812057),s=e.i(912714),n=e.i(750227),i=e.i(660526);let o=(0,a.promisify)(r.execFile),l=/[;|&$`<>(){}\n\r\0]/;function u(){return n.default.join(i.default.homedir(),".wiki-viewer","mounts")}async function c(){if(!0!==t)try{await o("sshfs",["--version"]),t=!0}catch{throw Error("sshfs binary not found. Install sshfs + FUSE (e.g. `apt install sshfs`, `brew install macfuse sshfs`) and ensure it is on PATH.")}}async function d(t){var r;let a=n.default.resolve(t),i=!1;try{i=(await (0,s.readFile)("/proc/mounts","utf8")).split("\n").some(e=>{let t=e.split(" ");return t[1]===a&&/fuse/.test(t[2]??"")})}catch{i=!1}return!!i&&(r=a,new Promise(t=>{let a=!1,s=setTimeout(()=>{a||(a=!0,t(!1))},4e3);e.A(687903).then(({readdir:e})=>e(r)).then(()=>{a||(a=!0,clearTimeout(s),t(!0))}).catch(()=>{a||(a=!0,clearTimeout(s),t(!1))})}))}async function p(e){await c(),await (0,s.mkdir)(e.mountpoint,{recursive:!0});let t=function(e){let{target:t,mountpoint:r,port:a,authMethod:s,keyPath:n,readOnly:i}=e,o=t.user?`${t.user}@`:"",l=[`${o}${t.host}:${t.remotePath}`,r];a&&Number.isInteger(a)&&a>0&&a<65536&&l.push("-p",String(a));let u=["reconnect","ServerAliveInterval=15","ServerAliveCountMax=3","compression=yes","cache=yes","kernel_cache","StrictHostKeyChecking=accept-new","BatchMode=yes"];if(i&&u.push("ro"),"keyfile"===s&&n&&(u.push(`IdentityFile=${n}`),u.push("IdentitiesOnly=yes")),"password"===s){let e=u.indexOf("BatchMode=yes");e>=0&&u.splice(e,1),u.push("password_stdin"),u.push("PreferredAuthentications=password,keyboard-interactive"),u.push("PubkeyAuthentication=no"),u.push("NumberOfPasswordPrompts=1")}return e.extraOptions&&u.push(...e.extraOptions),l.push("-o",u.join(",")),l}(e);if(await new Promise((a,s)=>{let n=(0,r.spawn)("sshfs",t,{stdio:["pipe","ignore","pipe"]}),i="",o=setTimeout(()=>{n.kill("SIGKILL"),s(Error("sshfs mount timed out after 25s."))},25e3);n.stderr?.on("data",e=>{i+=e.toString()}),n.on("error",e=>{clearTimeout(o),s(e.message.includes("ENOENT")?Error("sshfs binary not found on PATH."):e)}),n.on("close",e=>{clearTimeout(o),0===e?a():s(Error(`sshfs exited ${e}: ${i.trim()||"mount failed"}`))}),"password"===e.authMethod&&n.stdin?.write((e.password??"")+"\n"),n.stdin?.end()}),!await d(e.mountpoint))throw Error("sshfs reported success but the mount is not live.")}async function h(e){let t=n.default.resolve(e);for(let[e,r]of[["fusermount",["-u","-z",t]],["umount",[t]]])try{await o(e,r);break}catch{}try{await (0,s.rmdir)(t)}catch{}}e.s(["assertSshfsAvailable",0,c,"isMounted",0,d,"isValidKeyPath",0,function(e){return!(!e||l.test(e)||e.includes(".."))&&(e.startsWith("/")||e.startsWith("~/"))},"mountSshfs",0,p,"mountpointFor",0,function(e){return n.default.join(u(),e)},"mountsDir",0,u,"parseSshTarget",0,function(e){let t;if(!e||l.test(e))return null;let r=e.trim(),a=r.indexOf(":");if(a<=0)return null;let s=r.slice(0,a),n=r.slice(a+1);if(!n.startsWith("/")||n.includes(".."))return null;let i=s,o=s.indexOf("@");return o>=0&&(t=s.slice(0,o),i=s.slice(o+1),!t)?null:i&&/^[a-zA-Z0-9.\-]+$/.test(i)&&(!t||/^[a-zA-Z0-9._\-]+$/.test(t))?{user:t,host:i,remotePath:n}:null},"unmountSshfs",0,h])},583627,e=>{"use strict";var t=e.i(798003),r=e.i(254226);function a(){return(process.env.WIKI_ADMIN_EMAILS??"").split(",").map(e=>e.trim().toLowerCase()).filter(Boolean)}async function s(e,r){if(r){let e=a();if(e.length>0&&e.includes(r.toLowerCase()))return!0}return((await (0,t.readConfig)()).adminUserIds??[]).includes(e)}async function n(){return(await (0,t.readConfig)()).adminUserIds??[]}async function i(e){await (0,t.updateConfig)(t=>{let r=t.adminUserIds??[];return r.includes(e)?t:{...t,adminUserIds:[...r,e]}})}async function o(e){let r=a().length>0,s=!1;if(await (0,t.updateConfig)(t=>{let a=(t.adminUserIds??[]).filter(t=>t!==e);return 0!==a.length||r?{...t,adminUserIds:a}:(s=!0,t)}),s)throw Error("LAST_ADMIN: cannot remove the last admin with no WIKI_ADMIN_EMAILS configured")}async function l(e){if(a().length>0||((await (0,t.readConfig)()).adminUserIds??[]).length>0)return;let r=!1;await (0,t.updateConfig)(t=>(t.adminUserIds??[]).length>0?t:(r=!0,{...t,adminUserIds:[e]})),r&&console.log(`[wiki-viewer] Bootstrap: first user ${e} promoted to admin`)}async function u(e){if("1"===process.env.WIKI_NO_AUTH)return{ok:!0,user:{id:"local",email:"local@localhost",name:"local"}};let t=await (0,r.requireUser)(e);return t.ok?await s(t.user.id,t.user.email)?{ok:!0,user:t.user}:{ok:!1,status:403,code:"ADMIN_REQUIRED"}:{ok:!1,status:401,code:"UNAUTHORIZED"}}e.s(["addAdmin",0,i,"ensureBootstrapAdmin",0,l,"isAdmin",0,s,"listAdmins",0,n,"removeAdmin",0,o,"requireAdmin",0,u])},504445,e=>{"use strict";var t=e.i(750227);let r=globalThis;!r.__wikiRootDir&&process.env.ROOT_DIR&&(r.__wikiRootDir=t.default.resolve(process.env.ROOT_DIR)),e.s(["clearRootDir",0,function(){r.__wikiRootDir=void 0},"getRootDir",0,function(){return r.__wikiRootDir??""},"isRootDirSet",0,function(){return!!r.__wikiRootDir},"setRootDir",0,function(e){r.__wikiRootDir=t.default.resolve(e)}])},660038,e=>{"use strict";var t=e.i(750227),r=e.i(254226),a=e.i(583627),s=e.i(504445),n=e.i(359211);async function i(e){let r;await (0,n.migrateConfigToWorkspaces)();let a=new URL(e.url).searchParams.get("ws")??e.headers.get("x-workspace")??null;if(a)r=await (0,n.getWorkspace)(a)??null;else{let e=await (0,n.listWorkspaces)();if(0===e.length){let e;r=(e=(0,s.getRootDir)())?{id:"ws_default",name:t.default.basename(e)||"workspace",rootDir:e,createdAt:new Date(0).toISOString()}:null}else r=e.slice().sort((e,t)=>{let r=e.lastOpenedAt?new Date(e.lastOpenedAt).getTime():0,a=t.lastOpenedAt?new Date(t.lastOpenedAt).getTime():0;return a!==r?a-r:e.id<t.id?-1:+(e.id>t.id)})[0]}return r?.ssh&&await (0,n.ensureWorkspaceMounted)(r),r}async function o(e,t="read"){if("1"===process.env.WIKI_NO_AUTH){let r=await i(e);return r?"write"===t&&r.readOnly?{ok:!1,status:403,code:"WORKSPACE_READ_ONLY"}:{ok:!0,ws:r,rootDir:r.rootDir,userId:"local",isAdmin:!0}:{ok:!1,status:400,code:"WORKSPACE_REQUIRED"}}let s=await (0,r.requireUser)(e);if(!s.ok)return{ok:!1,status:401,code:"UNAUTHORIZED"};let l=await (0,a.isAdmin)(s.user.id,s.user.email),u=new URL(e.url).searchParams.get("ws")??e.headers.get("x-workspace")??null,c=await i(e);return c?(0,n.userCanAccess)(c,s.user.id,l)?"write"===t&&c.readOnly?{ok:!1,status:403,code:"WORKSPACE_READ_ONLY"}:{ok:!0,ws:c,rootDir:c.rootDir,userId:s.user.id,isAdmin:l}:{ok:!1,status:403,code:"WORKSPACE_FORBIDDEN"}:{ok:!1,status:u?404:400,code:u?"WORKSPACE_NOT_FOUND":"WORKSPACE_REQUIRED"}}async function l(e,t="read"){let r=await i(e);if(!r){let t=new URL(e.url).searchParams.get("ws")??e.headers.get("x-workspace")??null;return{ok:!1,status:t?404:400,code:t?"WORKSPACE_NOT_FOUND":"WORKSPACE_REQUIRED"}}return"write"===t&&r.readOnly?{ok:!1,status:403,code:"WORKSPACE_READ_ONLY"}:{ok:!0,ws:r,rootDir:r.rootDir}}e.s(["resolveWorkspaceForAgent",0,l,"resolveWorkspaceForUser",0,o])},719126,e=>{"use strict";var t=e.i(666680),r=e.i(912714),a=e.i(750227);function s(e){let t=e.replace(/\\/g,"/");return".proof"===t||t.startsWith(".proof/")||".git"===t||t.startsWith(".git/")}async function n(e,t){if(!e)return null;let n=a.default.normalize(t);if(n.startsWith("..")||a.default.isAbsolute(n)||s(n))return null;let i=a.default.join(e,n);if(i!==e&&!i.startsWith(e+a.default.sep))return null;try{let t=await (0,r.realpath)(i);if(t!==e&&!t.startsWith(e+a.default.sep))return null}catch{let t=a.default.dirname(i);if(t!==i)try{let s=await (0,r.realpath)(t);if(s!==e&&!s.startsWith(e+a.default.sep))return null}catch{}}return i}let i={".md":"text/markdown; charset=utf-8",".markdown":"text/markdown; charset=utf-8",".txt":"text/plain; charset=utf-8",".json":"application/json; charset=utf-8",".jsonc":"application/json; charset=utf-8",".ts":"text/typescript; charset=utf-8",".tsx":"text/typescript; charset=utf-8",".mts":"text/typescript; charset=utf-8",".js":"text/javascript; charset=utf-8",".jsx":"text/javascript; charset=utf-8",".mjs":"text/javascript; charset=utf-8",".html":"text/html; charset=utf-8",".htm":"text/html; charset=utf-8",".css":"text/css; charset=utf-8",".yaml":"text/yaml; charset=utf-8",".yml":"text/yaml; charset=utf-8",".toml":"text/toml; charset=utf-8",".xml":"application/xml; charset=utf-8",".svg":"image/svg+xml",".png":"image/png",".jpg":"image/jpeg",".jpeg":"image/jpeg",".gif":"image/gif",".webp":"image/webp",".pdf":"application/pdf",".zip":"application/zip",".tar":"application/x-tar",".gz":"application/gzip",".py":"text/x-python; charset=utf-8",".rs":"text/x-rustsrc; charset=utf-8",".go":"text/x-go; charset=utf-8",".sh":"text/x-shellscript; charset=utf-8",".csv":"text/csv; charset=utf-8",".env":"text/plain; charset=utf-8"};async function o(e,t){let a=420;try{let t=await (0,r.stat)(e);a=511&t.mode}catch{}let s=e+".~"+process.pid+"."+Date.now()+".tmp",n=await (0,r.open)(s,"w",a);try{await n.write(t),await n.datasync()}finally{await n.close()}await (0,r.rename)(s,e)}async function l(e,t){let s=a.default.dirname(e);if(t)return await (0,r.mkdir)(s,{recursive:!0}),!0;try{return await (0,r.stat)(s),!0}catch{return!1}}e.s(["atomicWrite",0,o,"ensureParentDir",0,l,"extractShaHex",0,function(e){return e.replace(/^"/,"").replace(/"$/,"").replace(/^sha256:/,"")},"isDeniedRelPath",0,s,"isMarkdown",0,function(e){return e.endsWith(".md")||e.endsWith(".markdown")},"looksLikeBinary",0,function(e){return e.slice(0,Math.min(e.length,8192)).includes(0)},"mimeByExt",0,function(e){return i[a.default.extname(e).toLowerCase()]??"application/octet-stream"},"safeAbsPath",0,n,"sha256ofBuf",0,function(e){return"sha256:"+(0,t.createHash)("sha256").update(e).digest("hex")}])},814747,(e,t,r)=>{t.exports=e.x("path",()=>require("path"))},224361,(e,t,r)=>{t.exports=e.x("util",()=>require("util"))},688947,(e,t,r)=>{t.exports=e.x("stream",()=>require("stream"))},427699,(e,t,r)=>{t.exports=e.x("events",()=>require("events"))},228064,e=>{"use strict";var t=e.i(666680),r=e.i(912714),a=e.i(660526),s=e.i(750227),n=e.i(832852);let i="__registry__",o=new Map;function l(){let e=process.env.HOME??a.default.homedir();return s.default.join(e,".wiki-viewer")}function u(){return s.default.join(l(),"agents.json")}function c(e){return(0,t.createHash)("sha256").update(e,"utf8").digest("hex")}async function d(){try{let e=await (0,r.readFile)(u(),"utf8"),t=JSON.parse(e);return{version:1,agents:Array.isArray(t.agents)?t.agents:[]}}catch{return null}}async function p(e){await (0,r.mkdir)(l(),{recursive:!0});let t=u()+".tmp";await (0,r.writeFile)(t,JSON.stringify(e,null,2),{encoding:"utf8",mode:384});try{await (0,r.chmod)(t,384)}catch{}await (0,r.rename)(t,u())}async function h(){let e=await d();if(e)return e;let t={version:1,agents:[]};return await p(t),t}async function f(e){let r=await d();if(!r)return null;let a=c(e);for(let e of r.agents)if(function(e,r){let a=Buffer.from(e.padEnd(64,"0"),"utf8"),s=Buffer.from(r.padEnd(64,"0"),"utf8");return a.length===s.length&&(0,t.timingSafeEqual)(a,s)&&e.length===r.length}(e.tokenHash,a))return e;return null}async function m(e){await (0,n.withFileMutex)(i,async()=>{let t=await h(),r=t.agents.findIndex(t=>t.id===e.id);r>=0?t.agents[r]=e:t.agents.push(e),await p(t)})}async function w(e){return(0,n.withFileMutex)(i,async()=>{let t=await d();if(!t)return!1;let r=t.agents.length;return t.agents=t.agents.filter(t=>t.id!==e),t.agents.length!==r&&(await p(t),!0)})}async function g(e){Date.now()-(o.get(e)??0)<3e4||await (0,n.withFileMutex)(i,async()=>{let t=await d();if(!t)return;let r=t.agents.find(t=>t.id===e);r&&(r.lastSeen=new Date().toISOString(),o.set(e,Date.now()),await p(t))})}e.s(["addAgent",0,m,"hashToken",0,c,"lookupAgentByToken",0,f,"readRegistry",0,d,"removeAgent",0,w,"updateLastSeen",0,g])},215043,552350,e=>{"use strict";var t=e.i(228064);function r(e,t){return(function(e){let t="^",r=0;for(;r<e.length;)"*"===e[r]&&"*"===e[r+1]?(t+=".*","/"===e[r+=2]&&(t+="(?:.+/)?",r++)):("*"===e[r]?t+="[^/]*":"?"===e[r]?t+="[^/]":t+=e[r].replace(/[.+^${}()|[\]\\]/g,"\\$&"),r++);return new RegExp(t+="$")})(e).test(t)}e.s(["matchGlob",0,r],552350);var a=e.i(254226);async function s(e){let r=await (0,a.getSessionFromRequest)(e);if(r?.user){let e=r.user;return{ok:!0,agent:{id:`user:${e.id}`,displayName:e.name,tokenHash:"",scope:{paths:["**/*"],ops:["read","mutate","delete"]},createdAt:"",lastSeen:""}}}let s=e.headers.get("authorization")??"",n=s.startsWith("Bearer ")?s.slice(7).trim():"";if(!n)return{ok:!1,code:"UNAUTHORIZED",message:"No credentials"};let i=await (0,t.lookupAgentByToken)(n);if(!i)return{ok:!1,code:"UNAUTHORIZED",message:"Unknown or invalid token"};let o=e.headers.get("x-agent-id")??"";return o?o!==i.id?{ok:!1,code:"UNAUTHORIZED",message:"X-Agent-Id does not match token owner"}:((0,t.updateLastSeen)(i.id),{ok:!0,agent:i}):{ok:!1,code:"UNAUTHORIZED",message:"X-Agent-Id header required"}}process.env.AGENT_BEARER_TOKEN&&console.warn("[wiki-viewer] AGENT_BEARER_TOKEN is no longer used; manage agents via the AI Panel."),e.s(["checkAuth",0,s,"enforceScope",0,function(e,t){let{scope:a}=e;return void 0!==a.workspaceId&&void 0!==t.workspaceId&&a.workspaceId!==t.workspaceId?{ok:!1,code:"FORBIDDEN",message:`Agent scope does not cover workspace "${t.workspaceId}" (granted: "${a.workspaceId}")`}:a.ops.includes(t.op)?t.filePath&&!a.paths.some(e=>r(e,t.filePath))?{ok:!1,code:"FORBIDDEN",message:`Agent scope does not cover path "${t.filePath}"`}:{ok:!0}:{ok:!1,code:"FORBIDDEN",message:`Agent scope does not allow "${t.op}"`}},"verifyBy",0,function(e,t){return e.id.startsWith("user:")?!t||"owner"===t||"human"===t||t.startsWith("human:")||t===e.id?{ok:!0}:{ok:!1,code:"FORBIDDEN",message:'User agent must use "human", "owner", or own id in "by" field'}:t!==e.id?{ok:!1,code:"FORBIDDEN",message:`"by" field must equal agent id "${e.id}"`}:{ok:!0}}],215043)},713738,e=>{"use strict";var t=e.i(364564),r=e.i(102095),a=e.i(691091),s=e.i(475331),n=e.i(490301),i=e.i(670943),o=e.i(690324),l=e.i(243133),u=e.i(404870),c=e.i(420180),d=e.i(867883),p=e.i(336708),h=e.i(682278),f=e.i(157569),m=e.i(844146),w=e.i(193695);e.i(105888);var g=e.i(530564),v=e.i(912714),y=e.i(750227),_=e.i(702414),R=e.i(215043),k=e.i(660038),A=e.i(359211),x=e.i(719126);function E(e,t,r){return _.NextResponse.json({error:e,message:t},{status:r})}let I=new Set([".proof",".git"]);async function O(e,t,r,a,s,n,i,o,l){let u;if(s>n||o.length>=i)return;let c=y.default.join(e,t);try{u=await (0,v.readdir)(c,{withFileTypes:!0})}catch{return}for(let c of u){let u,d,p;if(o.length>=i)break;if(I.has(c.name))continue;let h=t?`${t}/${c.name}`:c.name;if((0,R.enforceScope)(r,{filePath:h,op:"read",workspaceId:l}).ok){if(c.isSymbolicLink())u="symlink";else if(c.isDirectory())u="dir";else{u="file";try{let t=await (0,v.stat)(y.default.join(e,h));d=t.size,p=t.mtime.toISOString()}catch{}}o.push({name:c.name,path:h,type:u,size:d,mtime:p}),a&&"dir"===u&&await O(e,h,r,a,s+1,n,i,o,l)}}}async function D(e,{params:t}){let r=await (0,R.checkAuth)(e);if(!r.ok)return E("UNAUTHORIZED",r.message??"Unauthorized",401);let{path:a}=await t,s=a?a.join("/"):"",n=await (0,k.resolveWorkspaceForAgent)(e);if(!n.ok)return E(n.code,n.code,n.status);let{ws:i,rootDir:o}=n;if(s){if(!(0,A.safeWorkspacePath)(o,s))return E("INVALID_PATH","Path traversal rejected",400);if(!await (0,x.safeAbsPath)(o,s))return E("INVALID_PATH","Path rejected (symlink escape or denied)",400)}let l=new URL(e.url),u=l.searchParams.has("recursive"),c=Math.min(parseInt(l.searchParams.get("limit")??"1000",10)||1e3,1e4),d=Math.min(parseInt(l.searchParams.get("depth")??"10",10)||10,20),p=s?y.default.join(o,s):o;try{if(!(await (0,v.stat)(p)).isDirectory())return E("NOT_A_DIRECTORY","Path is not a directory",400)}catch(e){if("ENOENT"===e.code)return E("NOT_FOUND","Directory not found",404);throw e}let h=[];return await O(o,s,r.agent,u,0,d,c,h,i.id),_.NextResponse.json({path:s,entries:h,truncated:h.length>=c})}e.s(["GET",0,D,"runtime",0,"nodejs"],897755);var P=e.i(897755);let N=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/agent/fs/ls/[[...path]]/route",pathname:"/api/agent/fs/ls/[[...path]]",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/agent/fs/ls/[[...path]]/route.ts",nextConfigOutput:"standalone",userland:P,...{}}),{workAsyncStorage:T,workUnitAsyncStorage:S,serverHooks:C}=N;async function U(e,t,a){a.requestMeta&&(0,s.setRequestMeta)(e,a.requestMeta),N.isDev&&(0,s.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let v="/api/agent/fs/ls/[[...path]]/route";v=v.replace(/\/index$/,"")||"/";let y=await N.prepare(e,t,{srcPage:v,multiZoneDraftMode:!1});if(!y)return t.statusCode=400,t.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve()),null;let{buildId:_,params:R,nextConfig:k,parsedUrl:A,isDraftMode:x,prerenderManifest:E,routerServerContext:I,isOnDemandRevalidate:O,revalidateOnlyGenerated:D,resolvedPathname:P,clientReferenceManifest:T,serverActionsManifest:S}=y,C=(0,o.normalizeAppPath)(v),U=!!(E.dynamicRoutes[C]||E.routes[P]),b=async()=>((null==I?void 0:I.render404)?await I.render404(e,t,A,!1):t.end("This page could not be found"),null);if(U&&!x){let e=!!E.routes[P],t=E.dynamicRoutes[C];if(t&&!1===t.fallback&&!e){if(k.adapterPath)return await b();throw new w.NoFallbackError}}let j=null;!U||N.isDev||x||(j="/index"===(j=P)?"/":j);let q=!0===N.isDev||!U,W=U&&!q;S&&T&&(0,i.setManifestsSingleton)({page:v,clientReferenceManifest:T,serverActionsManifest:S});let H=e.method||"GET",M=(0,n.getTracer)(),F=M.getActiveScopeSpan(),$=!!(null==I?void 0:I.isWrappedByNextServer),B=!!(0,s.getRequestMeta)(e,"minimalMode"),K=(0,s.getRequestMeta)(e,"incrementalCache")||await N.getIncrementalCache(e,k,E,B);null==K||K.resetRequestCache(),globalThis.__incrementalCache=K;let L={params:R,previewProps:E.preview,renderOpts:{experimental:{authInterrupts:!!k.experimental.authInterrupts},cacheComponents:!!k.cacheComponents,supportsDynamicResponse:q,incrementalCache:K,cacheLifeProfiles:k.cacheLife,waitUntil:a.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,a,s)=>N.onRequestError(e,t,a,s,I)},sharedContext:{buildId:_}},z=new l.NodeNextRequest(e),Z=new l.NodeNextResponse(t),G=u.NextRequestAdapter.fromNodeNextRequest(z,(0,u.signalFromNodeResponse)(t));try{let s,i=async e=>N.handle(G,L).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=M.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==c.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let a=r.get("next.route");if(a){let t=`${H} ${a}`;e.setAttributes({"next.route":a,"http.route":a,"next.span_name":t}),e.updateName(t),s&&s!==e&&(s.setAttribute("http.route",a),s.updateName(t))}else e.updateName(`${H} ${v}`)}),o=async s=>{var n,o;let l=async({previousCacheEntry:r})=>{try{if(!B&&O&&D&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let n=await i(s);e.fetchMetrics=L.renderOpts.fetchMetrics;let o=L.renderOpts.pendingWaitUntil;o&&a.waitUntil&&(a.waitUntil(o),o=void 0);let l=L.renderOpts.collectedTags;if(!U)return await (0,p.sendResponse)(z,Z,n,L.renderOpts.pendingWaitUntil),null;{let e=await n.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(n.headers);l&&(t[m.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==L.renderOpts.collectedRevalidate&&!(L.renderOpts.collectedRevalidate>=m.INFINITE_CACHE)&&L.renderOpts.collectedRevalidate,a=void 0===L.renderOpts.collectedExpire||L.renderOpts.collectedExpire>=m.INFINITE_CACHE?void 0:L.renderOpts.collectedExpire;return{value:{kind:g.CachedRouteKind.APP_ROUTE,status:n.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:a}}}}catch(t){throw(null==r?void 0:r.isStale)&&await N.onRequestError(e,t,{routerKind:"App Router",routePath:v,routeType:"route",revalidateReason:(0,d.getRevalidateReason)({isStaticGeneration:W,isOnDemandRevalidate:O})},!1,I),t}},u=await N.handleResponse({req:e,nextConfig:k,cacheKey:j,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:E,isRoutePPREnabled:!1,isOnDemandRevalidate:O,revalidateOnlyGenerated:D,responseGenerator:l,waitUntil:a.waitUntil,isMinimalMode:B});if(!U)return null;if((null==u||null==(n=u.value)?void 0:n.kind)!==g.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==u||null==(o=u.value)?void 0:o.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});B||t.setHeader("x-nextjs-cache",O?"REVALIDATED":u.isMiss?"MISS":u.isStale?"STALE":"HIT"),x&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let c=(0,h.fromNodeOutgoingHttpHeaders)(u.value.headers);return B&&U||c.delete(m.NEXT_CACHE_TAGS_HEADER),!u.cacheControl||t.getHeader("Cache-Control")||c.get("Cache-Control")||c.set("Cache-Control",(0,f.getCacheControlHeader)(u.cacheControl)),await (0,p.sendResponse)(z,Z,new Response(u.value.body,{headers:c,status:u.value.status||200})),null};$&&F?await o(F):(s=M.getActiveScopeSpan(),await M.withPropagatedContext(e.headers,()=>M.trace(c.BaseServerSpan.handleRequest,{spanName:`${H} ${v}`,kind:n.SpanKind.SERVER,attributes:{"http.method":H,"http.target":e.url}},o),void 0,!$))}catch(t){if(t instanceof w.NoFallbackError||await N.onRequestError(e,t,{routerKind:"App Router",routePath:C,routeType:"route",revalidateReason:(0,d.getRevalidateReason)({isStaticGeneration:W,isOnDemandRevalidate:O})},!1,I),U)throw t;return await (0,p.sendResponse)(z,Z,new Response(null,{status:500})),null}}e.s(["handler",0,U,"patchFetch",0,function(){return(0,a.patchFetch)({workAsyncStorage:T,workUnitAsyncStorage:S})},"routeModule",0,N,"serverHooks",0,C,"workAsyncStorage",0,T,"workUnitAsyncStorage",0,S],713738)},168315,e=>{e.v(t=>Promise.all(["server/chunks/0sag_@better-auth_memory-adapter_dist_index_mjs_0pvj6im._.js"].map(t=>e.l(t))).then(()=>t(862112)))},317691,e=>{e.v(t=>Promise.all(["server/chunks/0dhv_better-auth_dist_adapters_kysely-adapter_index_mjs_0t4t4z8._.js"].map(t=>e.l(t))).then(()=>t(833412)))},580632,e=>{e.v(e=>Promise.resolve().then(()=>e(270406)))},947559,e=>{e.v(t=>Promise.all(["server/chunks/0ugq_@better-auth_kysely-adapter_dist_bun-sqlite-dialect-DzNwOpKv_mjs_0z1z6m4._.js"].map(t=>e.l(t))).then(()=>t(495181)))},715018,e=>{e.v(t=>Promise.all(["server/chunks/0ugq_@better-auth_kysely-adapter_dist_node-sqlite-dialect_mjs_0qqlvhl._.js"].map(t=>e.l(t))).then(()=>t(698370)))},146843,e=>{e.v(t=>Promise.all(["server/chunks/0ugq_@better-auth_kysely-adapter_dist_d1-sqlite-dialect-C2B7YsIT_mjs_0wynrz3._.js"].map(t=>e.l(t))).then(()=>t(143740)))},84040,e=>{e.v(t=>Promise.all(["server/chunks/0p91_next_0h94sj1._.js"].map(t=>e.l(t))).then(()=>t(815068)))},427669,e=>{e.v(e=>Promise.resolve().then(()=>e(177730)))},687903,e=>{e.v(e=>Promise.resolve().then(()=>e(912714)))},754121,e=>{e.v(t=>Promise.all(["server/chunks/[root-of-the-server]__00mtevo._.js","server/chunks/src_lib_search_0ymmp0c._.js"].map(t=>e.l(t))).then(()=>t(437856)))}];
2
2
 
3
- //# sourceMappingURL=%5Broot-of-the-server%5D__0esmskc._.js.map
3
+ //# sourceMappingURL=%5Broot-of-the-server%5D__06s802c._.js.map
@@ -1,12 +1,12 @@
1
- module.exports=[918622,(e,t,r)=>{t.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},556704,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},832319,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},324725,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},270406,(e,t,r)=>{t.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},193695,(e,t,r)=>{t.exports=e.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},959801,(e,t,r)=>{"use strict";t.exports=e.r(918622)},637142,(e,t,r)=>{"use strict";t.exports=e.r(959801).vendored["react-rsc"].React},186791,(e,t,r)=>{"use strict";var s=Object.defineProperty,n=Object.getOwnPropertyDescriptor,i=Object.getOwnPropertyNames,a=Object.prototype.hasOwnProperty,o={},l={RequestCookies:()=>g,ResponseCookies:()=>h,parseCookie:()=>p,parseSetCookie:()=>c,stringifyCookie:()=>d};for(var u in l)s(o,u,{get:l[u],enumerable:!0});function d(e){var t;let r=["path"in e&&e.path&&`Path=${e.path}`,"expires"in e&&(e.expires||0===e.expires)&&`Expires=${("number"==typeof e.expires?new Date(e.expires):e.expires).toUTCString()}`,"maxAge"in e&&"number"==typeof e.maxAge&&`Max-Age=${e.maxAge}`,"domain"in e&&e.domain&&`Domain=${e.domain}`,"secure"in e&&e.secure&&"Secure","httpOnly"in e&&e.httpOnly&&"HttpOnly","sameSite"in e&&e.sameSite&&`SameSite=${e.sameSite}`,"partitioned"in e&&e.partitioned&&"Partitioned","priority"in e&&e.priority&&`Priority=${e.priority}`].filter(Boolean),s=`${e.name}=${encodeURIComponent(null!=(t=e.value)?t:"")}`;return 0===r.length?s:`${s}; ${r.join("; ")}`}function p(e){let t=new Map;for(let r of e.split(/; */)){if(!r)continue;let e=r.indexOf("=");if(-1===e){t.set(r,"true");continue}let[s,n]=[r.slice(0,e),r.slice(e+1)];try{t.set(s,decodeURIComponent(null!=n?n:"true"))}catch{}}return t}function c(e){if(!e)return;let[[t,r],...s]=p(e),{domain:n,expires:i,httponly:a,maxage:o,path:l,samesite:u,secure:d,partitioned:c,priority:g}=Object.fromEntries(s.map(([e,t])=>[e.toLowerCase().replace(/-/g,""),t]));{var h,y,b={name:t,value:decodeURIComponent(r),domain:n,...i&&{expires:new Date(i)},...a&&{httpOnly:!0},..."string"==typeof o&&{maxAge:Number(o)},path:l,...u&&{sameSite:m.includes(h=(h=u).toLowerCase())?h:void 0},...d&&{secure:!0},...g&&{priority:f.includes(y=(y=g).toLowerCase())?y:void 0},...c&&{partitioned:!0}};let e={};for(let t in b)b[t]&&(e[t]=b[t]);return e}}t.exports=((e,t,r)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let o of i(t))a.call(e,o)||void 0===o||s(e,o,{get:()=>t[o],enumerable:!(r=n(t,o))||r.enumerable});return e})(s({},"__esModule",{value:!0}),o);var m=["strict","lax","none"],f=["low","medium","high"],g=class{constructor(e){this._parsed=new Map,this._headers=e;const t=e.get("cookie");if(t)for(const[e,r]of p(t))this._parsed.set(e,{name:e,value:r})}[Symbol.iterator](){return this._parsed[Symbol.iterator]()}get size(){return this._parsed.size}get(...e){let t="string"==typeof e[0]?e[0]:e[0].name;return this._parsed.get(t)}getAll(...e){var t;let r=Array.from(this._parsed);if(!e.length)return r.map(([e,t])=>t);let s="string"==typeof e[0]?e[0]:null==(t=e[0])?void 0:t.name;return r.filter(([e])=>e===s).map(([e,t])=>t)}has(e){return this._parsed.has(e)}set(...e){let[t,r]=1===e.length?[e[0].name,e[0].value]:e,s=this._parsed;return s.set(t,{name:t,value:r}),this._headers.set("cookie",Array.from(s).map(([e,t])=>d(t)).join("; ")),this}delete(e){let t=this._parsed,r=Array.isArray(e)?e.map(e=>t.delete(e)):t.delete(e);return this._headers.set("cookie",Array.from(t).map(([e,t])=>d(t)).join("; ")),r}clear(){return this.delete(Array.from(this._parsed.keys())),this}[Symbol.for("edge-runtime.inspect.custom")](){return`RequestCookies ${JSON.stringify(Object.fromEntries(this._parsed))}`}toString(){return[...this._parsed.values()].map(e=>`${e.name}=${encodeURIComponent(e.value)}`).join("; ")}},h=class{constructor(e){var t,r,s;this._parsed=new Map,this._headers=e;const n=null!=(s=null!=(r=null==(t=e.getSetCookie)?void 0:t.call(e))?r:e.get("set-cookie"))?s:[];for(const e of Array.isArray(n)?n:function(e){if(!e)return[];var t,r,s,n,i,a=[],o=0;function l(){for(;o<e.length&&/\s/.test(e.charAt(o));)o+=1;return o<e.length}for(;o<e.length;){for(t=o,i=!1;l();)if(","===(r=e.charAt(o))){for(s=o,o+=1,l(),n=o;o<e.length&&"="!==(r=e.charAt(o))&&";"!==r&&","!==r;)o+=1;o<e.length&&"="===e.charAt(o)?(i=!0,o=n,a.push(e.substring(t,s)),t=o):o=s+1}else o+=1;(!i||o>=e.length)&&a.push(e.substring(t,e.length))}return a}(n)){const t=c(e);t&&this._parsed.set(t.name,t)}}get(...e){let t="string"==typeof e[0]?e[0]:e[0].name;return this._parsed.get(t)}getAll(...e){var t;let r=Array.from(this._parsed.values());if(!e.length)return r;let s="string"==typeof e[0]?e[0]:null==(t=e[0])?void 0:t.name;return r.filter(e=>e.name===s)}has(e){return this._parsed.has(e)}set(...e){let[t,r,s]=1===e.length?[e[0].name,e[0].value,e[0]]:e,n=this._parsed;return n.set(t,function(e={name:"",value:""}){return"number"==typeof e.expires&&(e.expires=new Date(e.expires)),e.maxAge&&(e.expires=new Date(Date.now()+1e3*e.maxAge)),(null===e.path||void 0===e.path)&&(e.path="/"),e}({name:t,value:r,...s})),function(e,t){for(let[,r]of(t.delete("set-cookie"),e)){let e=d(r);t.append("set-cookie",e)}}(n,this._headers),this}delete(...e){let[t,r]="string"==typeof e[0]?[e[0]]:[e[0].name,e[0]];return this.set({...r,name:t,value:"",expires:new Date(0)})}[Symbol.for("edge-runtime.inspect.custom")](){return`ResponseCookies ${JSON.stringify(Object.fromEntries(this._parsed))}`}toString(){return[...this._parsed.values()].map(d).join("; ")}}},478500,(e,t,r)=>{t.exports=e.x("node:async_hooks",()=>require("node:async_hooks"))},750227,(e,t,r)=>{t.exports=e.x("node:path",()=>require("node:path"))},912714,(e,t,r)=>{t.exports=e.x("node:fs/promises",()=>require("node:fs/promises"))},666680,(e,t,r)=>{t.exports=e.x("node:crypto",()=>require("node:crypto"))},902157,(e,t,r)=>{t.exports=e.x("node:fs",()=>require("node:fs"))},286607,(e,t,r)=>{t.exports=e.x("better-sqlite3",()=>require("better-sqlite3"))},660526,(e,t,r)=>{t.exports=e.x("node:os",()=>require("node:os"))},588772,e=>{"use strict";e.s(["DialectAdapterBase",0,class{get supportsCreateIfNotExists(){return!0}get supportsTransactionalDdl(){return!1}get supportsReturning(){return!1}get supportsOutput(){return!1}}])},733162,e=>{"use strict";var t=e.i(264116);let r=/"/g;class s extends t.DefaultQueryCompiler{visitOrAction(e){this.append("or "),this.append(e.action)}getCurrentParameterPlaceholder(){return"?"}getLeftExplainOptionsWrapper(){return""}getRightExplainOptionsWrapper(){return""}getLeftIdentifierWrapper(){return'"'}getRightIdentifierWrapper(){return'"'}getAutoIncrement(){return"autoincrement"}sanitizeIdentifier(e){return e.replace(r,'""')}visitDefaultInsertValue(e){this.append("null")}}e.s(["SqliteQueryCompiler",0,s])},285675,e=>{"use strict";var t=e.i(588772);class r extends t.DialectAdapterBase{get supportsTransactionalDdl(){return!1}get supportsReturning(){return!0}async acquireMigrationLock(e,t){}async releaseMigrationLock(e,t){}}e.s(["SqliteAdapter",0,r])},177730,e=>{"use strict";var t=e.i(563811),r=e.i(560912),s=e.i(877727),n=e.i(429513),i=e.i(169726),a=e.i(547756);let o={postgres:{string:["character varying","varchar","text","uuid"],number:["int4","integer","bigint","smallint","numeric","real","double precision"],boolean:["bool","boolean"],date:["timestamptz","timestamp","date"],json:["json","jsonb"]},mysql:{string:["varchar","text","uuid"],number:["integer","int","bigint","smallint","decimal","float","double"],boolean:["boolean","tinyint"],date:["timestamp","datetime","date"],json:["json"]},sqlite:{string:["TEXT"],number:["INTEGER","REAL"],boolean:["INTEGER","BOOLEAN"],date:["DATE","INTEGER"],json:["TEXT"]},mssql:{string:["varchar","nvarchar","uniqueidentifier"],number:["int","bigint","smallint","decimal","float","double"],boolean:["bit","smallint"],date:["datetime2","date","datetime"],json:["varchar","nvarchar"]}};function l(e,t,r){if("string[]"===t||"number[]"===t)return e.toLowerCase().includes("json");let s=o[r];return(Array.isArray(t)?s.string.map(e=>e.toLowerCase()):s[t].map(e=>e.toLowerCase())).includes(e.toLowerCase().split("(")[0].trim())}async function u(e){try{let t=await a.sql`SHOW search_path`.execute(e),r=t.rows[0]?.search_path??t.rows[0]?.searchPath;if(r)return r.split(",").map(e=>e.trim()).map(e=>e.replace(/^["']|["']$/g,"")).filter(e=>!e.startsWith("$")&&!e.startsWith("\\$"))[0]||"public"}catch{}return"public"}async function d(e){let o=function(e){let r=(0,t.getAuthTables)(e),s={};for(let e in r){let t=r[e],n=t.fields,i={};if(Object.entries(n).forEach(([e,t])=>{if(i[t.fieldName||e]=t,t.references){let s=r[t.references.model];s&&(i[t.fieldName||e].references={...t.references,model:s.modelName,field:t.references.field})}}),s[t.modelName]){s[t.modelName].fields={...s[t.modelName].fields,...i};continue}s[t.modelName]={fields:i,order:t.order||1/0}}return s}(e),d=(0,r.createLogger)(e.logger),{kysely:p,databaseType:c}=await (0,s.createKyselyAdapter)(e);c||(d.warn("Could not determine database type, defaulting to sqlite. Please provide a type in the database options to avoid this."),c="sqlite"),p||(d.error("Only kysely adapter is supported for migrations. You can use `generate` command to generate the schema, if you're using a different adapter."),process.exit(1));let m="public";if("postgres"===c){m=await u(p),d.debug(`PostgreSQL migration: Using schema '${m}' (from search_path)`);try{let e=await a.sql`
1
+ module.exports=[918622,(e,t,r)=>{t.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},556704,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},832319,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},324725,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},270406,(e,t,r)=>{t.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},193695,(e,t,r)=>{t.exports=e.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},959801,(e,t,r)=>{"use strict";t.exports=e.r(918622)},637142,(e,t,r)=>{"use strict";t.exports=e.r(959801).vendored["react-rsc"].React},186791,(e,t,r)=>{"use strict";var s=Object.defineProperty,n=Object.getOwnPropertyDescriptor,i=Object.getOwnPropertyNames,a=Object.prototype.hasOwnProperty,o={},l={RequestCookies:()=>g,ResponseCookies:()=>h,parseCookie:()=>c,parseSetCookie:()=>p,stringifyCookie:()=>d};for(var u in l)s(o,u,{get:l[u],enumerable:!0});function d(e){var t;let r=["path"in e&&e.path&&`Path=${e.path}`,"expires"in e&&(e.expires||0===e.expires)&&`Expires=${("number"==typeof e.expires?new Date(e.expires):e.expires).toUTCString()}`,"maxAge"in e&&"number"==typeof e.maxAge&&`Max-Age=${e.maxAge}`,"domain"in e&&e.domain&&`Domain=${e.domain}`,"secure"in e&&e.secure&&"Secure","httpOnly"in e&&e.httpOnly&&"HttpOnly","sameSite"in e&&e.sameSite&&`SameSite=${e.sameSite}`,"partitioned"in e&&e.partitioned&&"Partitioned","priority"in e&&e.priority&&`Priority=${e.priority}`].filter(Boolean),s=`${e.name}=${encodeURIComponent(null!=(t=e.value)?t:"")}`;return 0===r.length?s:`${s}; ${r.join("; ")}`}function c(e){let t=new Map;for(let r of e.split(/; */)){if(!r)continue;let e=r.indexOf("=");if(-1===e){t.set(r,"true");continue}let[s,n]=[r.slice(0,e),r.slice(e+1)];try{t.set(s,decodeURIComponent(null!=n?n:"true"))}catch{}}return t}function p(e){if(!e)return;let[[t,r],...s]=c(e),{domain:n,expires:i,httponly:a,maxage:o,path:l,samesite:u,secure:d,partitioned:p,priority:g}=Object.fromEntries(s.map(([e,t])=>[e.toLowerCase().replace(/-/g,""),t]));{var h,y,b={name:t,value:decodeURIComponent(r),domain:n,...i&&{expires:new Date(i)},...a&&{httpOnly:!0},..."string"==typeof o&&{maxAge:Number(o)},path:l,...u&&{sameSite:m.includes(h=(h=u).toLowerCase())?h:void 0},...d&&{secure:!0},...g&&{priority:f.includes(y=(y=g).toLowerCase())?y:void 0},...p&&{partitioned:!0}};let e={};for(let t in b)b[t]&&(e[t]=b[t]);return e}}t.exports=((e,t,r)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let o of i(t))a.call(e,o)||void 0===o||s(e,o,{get:()=>t[o],enumerable:!(r=n(t,o))||r.enumerable});return e})(s({},"__esModule",{value:!0}),o);var m=["strict","lax","none"],f=["low","medium","high"],g=class{constructor(e){this._parsed=new Map,this._headers=e;const t=e.get("cookie");if(t)for(const[e,r]of c(t))this._parsed.set(e,{name:e,value:r})}[Symbol.iterator](){return this._parsed[Symbol.iterator]()}get size(){return this._parsed.size}get(...e){let t="string"==typeof e[0]?e[0]:e[0].name;return this._parsed.get(t)}getAll(...e){var t;let r=Array.from(this._parsed);if(!e.length)return r.map(([e,t])=>t);let s="string"==typeof e[0]?e[0]:null==(t=e[0])?void 0:t.name;return r.filter(([e])=>e===s).map(([e,t])=>t)}has(e){return this._parsed.has(e)}set(...e){let[t,r]=1===e.length?[e[0].name,e[0].value]:e,s=this._parsed;return s.set(t,{name:t,value:r}),this._headers.set("cookie",Array.from(s).map(([e,t])=>d(t)).join("; ")),this}delete(e){let t=this._parsed,r=Array.isArray(e)?e.map(e=>t.delete(e)):t.delete(e);return this._headers.set("cookie",Array.from(t).map(([e,t])=>d(t)).join("; ")),r}clear(){return this.delete(Array.from(this._parsed.keys())),this}[Symbol.for("edge-runtime.inspect.custom")](){return`RequestCookies ${JSON.stringify(Object.fromEntries(this._parsed))}`}toString(){return[...this._parsed.values()].map(e=>`${e.name}=${encodeURIComponent(e.value)}`).join("; ")}},h=class{constructor(e){var t,r,s;this._parsed=new Map,this._headers=e;const n=null!=(s=null!=(r=null==(t=e.getSetCookie)?void 0:t.call(e))?r:e.get("set-cookie"))?s:[];for(const e of Array.isArray(n)?n:function(e){if(!e)return[];var t,r,s,n,i,a=[],o=0;function l(){for(;o<e.length&&/\s/.test(e.charAt(o));)o+=1;return o<e.length}for(;o<e.length;){for(t=o,i=!1;l();)if(","===(r=e.charAt(o))){for(s=o,o+=1,l(),n=o;o<e.length&&"="!==(r=e.charAt(o))&&";"!==r&&","!==r;)o+=1;o<e.length&&"="===e.charAt(o)?(i=!0,o=n,a.push(e.substring(t,s)),t=o):o=s+1}else o+=1;(!i||o>=e.length)&&a.push(e.substring(t,e.length))}return a}(n)){const t=p(e);t&&this._parsed.set(t.name,t)}}get(...e){let t="string"==typeof e[0]?e[0]:e[0].name;return this._parsed.get(t)}getAll(...e){var t;let r=Array.from(this._parsed.values());if(!e.length)return r;let s="string"==typeof e[0]?e[0]:null==(t=e[0])?void 0:t.name;return r.filter(e=>e.name===s)}has(e){return this._parsed.has(e)}set(...e){let[t,r,s]=1===e.length?[e[0].name,e[0].value,e[0]]:e,n=this._parsed;return n.set(t,function(e={name:"",value:""}){return"number"==typeof e.expires&&(e.expires=new Date(e.expires)),e.maxAge&&(e.expires=new Date(Date.now()+1e3*e.maxAge)),(null===e.path||void 0===e.path)&&(e.path="/"),e}({name:t,value:r,...s})),function(e,t){for(let[,r]of(t.delete("set-cookie"),e)){let e=d(r);t.append("set-cookie",e)}}(n,this._headers),this}delete(...e){let[t,r]="string"==typeof e[0]?[e[0]]:[e[0].name,e[0]];return this.set({...r,name:t,value:"",expires:new Date(0)})}[Symbol.for("edge-runtime.inspect.custom")](){return`ResponseCookies ${JSON.stringify(Object.fromEntries(this._parsed))}`}toString(){return[...this._parsed.values()].map(d).join("; ")}}},478500,(e,t,r)=>{t.exports=e.x("node:async_hooks",()=>require("node:async_hooks"))},750227,(e,t,r)=>{t.exports=e.x("node:path",()=>require("node:path"))},912714,(e,t,r)=>{t.exports=e.x("node:fs/promises",()=>require("node:fs/promises"))},666680,(e,t,r)=>{t.exports=e.x("node:crypto",()=>require("node:crypto"))},902157,(e,t,r)=>{t.exports=e.x("node:fs",()=>require("node:fs"))},286607,(e,t,r)=>{t.exports=e.x("better-sqlite3",()=>require("better-sqlite3"))},660526,(e,t,r)=>{t.exports=e.x("node:os",()=>require("node:os"))},798003,e=>{"use strict";var t=e.i(912714),r=e.i(660526),s=e.i(750227);function n(){return s.default.join(r.default.homedir(),".wiki-viewer","config.json")}async function i(){await (0,t.mkdir)(s.default.join(r.default.homedir(),".wiki-viewer"),{recursive:!0})}async function a(){try{let e=await (0,t.readFile)(n(),"utf8");return JSON.parse(e)}catch{return{}}}let o=Promise.resolve();function l(e){let t=o.then(e,e);return o=t.then(()=>void 0,()=>void 0),t}async function u(e){await i(),await (0,t.writeFile)(n(),JSON.stringify(e,null,2),"utf8")}async function d(e){return l(async()=>{let t=await a();await u({...t,...e})})}async function c(e){return l(async()=>{let t=e({...await a()});return await u(t),t})}e.s(["readConfig",0,a,"reposDir",0,function(){return s.default.join(r.default.homedir(),".wiki-viewer","repos")},"updateConfig",0,c,"writeConfig",0,d])},588772,e=>{"use strict";e.s(["DialectAdapterBase",0,class{get supportsCreateIfNotExists(){return!0}get supportsTransactionalDdl(){return!1}get supportsReturning(){return!1}get supportsOutput(){return!1}}])},733162,e=>{"use strict";var t=e.i(264116);let r=/"/g;class s extends t.DefaultQueryCompiler{visitOrAction(e){this.append("or "),this.append(e.action)}getCurrentParameterPlaceholder(){return"?"}getLeftExplainOptionsWrapper(){return""}getRightExplainOptionsWrapper(){return""}getLeftIdentifierWrapper(){return'"'}getRightIdentifierWrapper(){return'"'}getAutoIncrement(){return"autoincrement"}sanitizeIdentifier(e){return e.replace(r,'""')}visitDefaultInsertValue(e){this.append("null")}}e.s(["SqliteQueryCompiler",0,s])},285675,e=>{"use strict";var t=e.i(588772);class r extends t.DialectAdapterBase{get supportsTransactionalDdl(){return!1}get supportsReturning(){return!0}async acquireMigrationLock(e,t){}async releaseMigrationLock(e,t){}}e.s(["SqliteAdapter",0,r])},177730,e=>{"use strict";var t=e.i(563811),r=e.i(560912),s=e.i(877727),n=e.i(429513),i=e.i(169726),a=e.i(547756);let o={postgres:{string:["character varying","varchar","text","uuid"],number:["int4","integer","bigint","smallint","numeric","real","double precision"],boolean:["bool","boolean"],date:["timestamptz","timestamp","date"],json:["json","jsonb"]},mysql:{string:["varchar","text","uuid"],number:["integer","int","bigint","smallint","decimal","float","double"],boolean:["boolean","tinyint"],date:["timestamp","datetime","date"],json:["json"]},sqlite:{string:["TEXT"],number:["INTEGER","REAL"],boolean:["INTEGER","BOOLEAN"],date:["DATE","INTEGER"],json:["TEXT"]},mssql:{string:["varchar","nvarchar","uniqueidentifier"],number:["int","bigint","smallint","decimal","float","double"],boolean:["bit","smallint"],date:["datetime2","date","datetime"],json:["varchar","nvarchar"]}};function l(e,t,r){if("string[]"===t||"number[]"===t)return e.toLowerCase().includes("json");let s=o[r];return(Array.isArray(t)?s.string.map(e=>e.toLowerCase()):s[t].map(e=>e.toLowerCase())).includes(e.toLowerCase().split("(")[0].trim())}async function u(e){try{let t=await a.sql`SHOW search_path`.execute(e),r=t.rows[0]?.search_path??t.rows[0]?.searchPath;if(r)return r.split(",").map(e=>e.trim()).map(e=>e.replace(/^["']|["']$/g,"")).filter(e=>!e.startsWith("$")&&!e.startsWith("\\$"))[0]||"public"}catch{}return"public"}async function d(e){let o=function(e){let r=(0,t.getAuthTables)(e),s={};for(let e in r){let t=r[e],n=t.fields,i={};if(Object.entries(n).forEach(([e,t])=>{if(i[t.fieldName||e]=t,t.references){let s=r[t.references.model];s&&(i[t.fieldName||e].references={...t.references,model:s.modelName,field:t.references.field})}}),s[t.modelName]){s[t.modelName].fields={...s[t.modelName].fields,...i};continue}s[t.modelName]={fields:i,order:t.order||1/0}}return s}(e),d=(0,r.createLogger)(e.logger),{kysely:c,databaseType:p}=await (0,s.createKyselyAdapter)(e);p||(d.warn("Could not determine database type, defaulting to sqlite. Please provide a type in the database options to avoid this."),p="sqlite"),c||(d.error("Only kysely adapter is supported for migrations. You can use `generate` command to generate the schema, if you're using a different adapter."),process.exit(1));let m="public";if("postgres"===p){m=await u(c),d.debug(`PostgreSQL migration: Using schema '${m}' (from search_path)`);try{let e=await a.sql`
2
2
  SELECT schema_name
3
3
  FROM information_schema.schemata
4
4
  WHERE schema_name = ${m}
5
- `.execute(p);(e.rows[0]?.schema_name??e.rows[0]?.schemaName)||d.warn(`Schema '${m}' does not exist. Tables will be inspected from available schemas. Consider creating the schema first or checking your database configuration.`)}catch(e){d.debug(`Could not verify schema existence: ${e instanceof Error?e.message:String(e)}`)}}let f=await p.introspection.getTables(),g=f;if("postgres"===c)try{let e=await a.sql`
5
+ `.execute(c);(e.rows[0]?.schema_name??e.rows[0]?.schemaName)||d.warn(`Schema '${m}' does not exist. Tables will be inspected from available schemas. Consider creating the schema first or checking your database configuration.`)}catch(e){d.debug(`Could not verify schema existence: ${e instanceof Error?e.message:String(e)}`)}}let f=await c.introspection.getTables(),g=f;if("postgres"===p)try{let e=await a.sql`
6
6
  SELECT table_name
7
7
  FROM information_schema.tables
8
8
  WHERE table_schema = ${m}
9
9
  AND table_type = 'BASE TABLE'
10
- `.execute(p),t=new Set(e.rows.map(e=>e.table_name??e.tableName));g=f.filter(e=>e.schema===m&&t.has(e.name)),d.debug(`Found ${g.length} table(s) in schema '${m}': ${g.map(e=>e.name).join(", ")||"(none)"}`)}catch(e){d.warn(`Could not filter tables by schema. Using all discovered tables. Error: ${e instanceof Error?e.message:String(e)}`)}let h=[],y=[];for(let[e,t]of Object.entries(o)){let r=g.find(t=>t.name===e);if(!r){let r=h.findIndex(t=>t.table===e),s={table:e,fields:t.fields,order:t.order||1/0},n=h.findIndex(e=>(e.order||1/0)>s.order);-1===n?-1===r?h.push(s):h[r].fields={...h[r].fields,...t.fields}:h.splice(n,0,s);continue}let s={};for(let[n,i]of Object.entries(t.fields)){let t=r.columns.find(e=>e.name===n);if(!t){s[n]=i;continue}l(t.dataType,i.type,c)||d.warn(`Field ${n} in table ${e} has a different type in the database. Expected ${i.type} but got ${t.dataType}.`)}Object.keys(s).length>0&&y.push({table:e,fields:s,order:t.order||1/0})}let b=[],x=e.advanced?.database?.generateId==="uuid",q=e.advanced?.database?.generateId==="serial";function v(e,t){let r=e.type,s=c||"sqlite",n={string:{sqlite:"text",postgres:"text",mysql:e.unique?"varchar(255)":e.references?"varchar(36)":e.sortable||e.index?"varchar(255)":"text",mssql:e.unique||e.sortable?"varchar(255)":e.references?"varchar(36)":"varchar(8000)"},boolean:{sqlite:"integer",postgres:"boolean",mysql:"boolean",mssql:"smallint"},number:{sqlite:e.bigint?"bigint":"integer",postgres:e.bigint?"bigint":"integer",mysql:e.bigint?"bigint":"integer",mssql:e.bigint?"bigint":"integer"},date:{sqlite:"date",postgres:"timestamptz",mysql:"timestamp(3)",mssql:a.sql`datetime2(3)`},json:{sqlite:"text",postgres:"jsonb",mysql:"json",mssql:"varchar(8000)"},id:{postgres:q?a.sql`integer GENERATED BY DEFAULT AS IDENTITY`:x?"uuid":"text",mysql:q?"integer":"varchar(36)",mssql:q?"integer":"varchar(36)",sqlite:q?"integer":"text"},foreignKeyId:{postgres:q?"integer":x?"uuid":"text",mysql:q?"integer":"varchar(36)",mssql:q?"integer":"varchar(36)",sqlite:q?"integer":"text"},"string[]":{sqlite:"text",postgres:"jsonb",mysql:"json",mssql:"varchar(8000)"},"number[]":{sqlite:"text",postgres:"jsonb",mysql:"json",mssql:"varchar(8000)"}};if("id"===t||e.references?.field==="id")return"id"===t?n.id[s]:n.foreignKeyId[s];if(Array.isArray(r))return"text";if(!(r in n))throw Error(`Unsupported field type '${String(r)}' for field '${t}'. Allowed types are: string, number, boolean, date, string[], number[]. If you need to store structured data, store it as a JSON string (type: "string") or split it into primitive fields. See https://better-auth.com/docs/advanced/schema#additional-fields`);return n[r][s]}let _=(0,i.initGetModelName)({schema:(0,t.getAuthTables)(e),usePlural:!1}),A=(0,n.initGetFieldName)({schema:(0,t.getAuthTables)(e),usePlural:!1});function E(e,t){try{return`${_(e)}.${A({model:e,field:t})}`}catch{return`${e}.${t}`}}let j=[];if(y.length)for(let e of y)for(let[t,r]of Object.entries(e.fields)){let s=v(r,t),n=p.schema.alterTable(e.table);if(r.index){let s=`${e.table}_${t}_${r.unique?"uidx":"idx"}`,n=p.schema.createIndex(s).on(e.table).columns([t]);j.push(r.unique?n.unique():n)}let i=n.addColumn(t,s,e=>(e=!1!==r.required?e.notNull():e,r.references&&(e=e.references(E(r.references.model,r.references.field)).onDelete(r.references.onDelete||"cascade")),r.unique&&(e=e.unique()),"date"===r.type&&"function"==typeof r.defaultValue&&("postgres"===c||"mysql"===c||"mssql"===c)&&(e="mysql"===c?e.defaultTo(a.sql`CURRENT_TIMESTAMP(3)`):e.defaultTo(a.sql`CURRENT_TIMESTAMP`)),e));b.push(i)}if(h.length)for(let e of h){let t=v({type:q?"number":"string"},"id"),r=p.schema.createTable(e.table).addColumn("id",t,e=>{if(q)return"postgres"===c?e.primaryKey().notNull():"sqlite"===c?e.primaryKey().notNull():"mssql"===c?e.identity().primaryKey().notNull():e.autoIncrement().primaryKey().notNull();return x&&"postgres"===c?e.primaryKey().defaultTo(a.sql`pg_catalog.gen_random_uuid()`).notNull():e.primaryKey().notNull()});for(let[t,s]of Object.entries(e.fields)){let n=v(s,t);if(r=r.addColumn(t,n,e=>(e=!1!==s.required?e.notNull():e,s.references&&(e=e.references(E(s.references.model,s.references.field)).onDelete(s.references.onDelete||"cascade")),s.unique&&(e=e.unique()),"date"===s.type&&"function"==typeof s.defaultValue&&("postgres"===c||"mysql"===c||"mssql"===c)&&(e="mysql"===c?e.defaultTo(a.sql`CURRENT_TIMESTAMP(3)`):e.defaultTo(a.sql`CURRENT_TIMESTAMP`)),e)),s.index){let r=p.schema.createIndex(`${e.table}_${t}_${s.unique?"uidx":"idx"}`).on(e.table).columns([t]);j.push(s.unique?r.unique():r)}}b.push(r)}for(let e of j)b.push(e);return{toBeCreated:h,toBeAdded:y,runMigrations:async function(){for(let e of b)await e.execute()},compileMigrations:async function(){return b.map(e=>e.compile().sql).join(";\n\n")+";"}}}e.s(["getMigrations",0,d,"matchType",0,l],177730)}];
10
+ `.execute(c),t=new Set(e.rows.map(e=>e.table_name??e.tableName));g=f.filter(e=>e.schema===m&&t.has(e.name)),d.debug(`Found ${g.length} table(s) in schema '${m}': ${g.map(e=>e.name).join(", ")||"(none)"}`)}catch(e){d.warn(`Could not filter tables by schema. Using all discovered tables. Error: ${e instanceof Error?e.message:String(e)}`)}let h=[],y=[];for(let[e,t]of Object.entries(o)){let r=g.find(t=>t.name===e);if(!r){let r=h.findIndex(t=>t.table===e),s={table:e,fields:t.fields,order:t.order||1/0},n=h.findIndex(e=>(e.order||1/0)>s.order);-1===n?-1===r?h.push(s):h[r].fields={...h[r].fields,...t.fields}:h.splice(n,0,s);continue}let s={};for(let[n,i]of Object.entries(t.fields)){let t=r.columns.find(e=>e.name===n);if(!t){s[n]=i;continue}l(t.dataType,i.type,p)||d.warn(`Field ${n} in table ${e} has a different type in the database. Expected ${i.type} but got ${t.dataType}.`)}Object.keys(s).length>0&&y.push({table:e,fields:s,order:t.order||1/0})}let b=[],x=e.advanced?.database?.generateId==="uuid",q=e.advanced?.database?.generateId==="serial";function v(e,t){let r=e.type,s=p||"sqlite",n={string:{sqlite:"text",postgres:"text",mysql:e.unique?"varchar(255)":e.references?"varchar(36)":e.sortable||e.index?"varchar(255)":"text",mssql:e.unique||e.sortable?"varchar(255)":e.references?"varchar(36)":"varchar(8000)"},boolean:{sqlite:"integer",postgres:"boolean",mysql:"boolean",mssql:"smallint"},number:{sqlite:e.bigint?"bigint":"integer",postgres:e.bigint?"bigint":"integer",mysql:e.bigint?"bigint":"integer",mssql:e.bigint?"bigint":"integer"},date:{sqlite:"date",postgres:"timestamptz",mysql:"timestamp(3)",mssql:a.sql`datetime2(3)`},json:{sqlite:"text",postgres:"jsonb",mysql:"json",mssql:"varchar(8000)"},id:{postgres:q?a.sql`integer GENERATED BY DEFAULT AS IDENTITY`:x?"uuid":"text",mysql:q?"integer":"varchar(36)",mssql:q?"integer":"varchar(36)",sqlite:q?"integer":"text"},foreignKeyId:{postgres:q?"integer":x?"uuid":"text",mysql:q?"integer":"varchar(36)",mssql:q?"integer":"varchar(36)",sqlite:q?"integer":"text"},"string[]":{sqlite:"text",postgres:"jsonb",mysql:"json",mssql:"varchar(8000)"},"number[]":{sqlite:"text",postgres:"jsonb",mysql:"json",mssql:"varchar(8000)"}};if("id"===t||e.references?.field==="id")return"id"===t?n.id[s]:n.foreignKeyId[s];if(Array.isArray(r))return"text";if(!(r in n))throw Error(`Unsupported field type '${String(r)}' for field '${t}'. Allowed types are: string, number, boolean, date, string[], number[]. If you need to store structured data, store it as a JSON string (type: "string") or split it into primitive fields. See https://better-auth.com/docs/advanced/schema#additional-fields`);return n[r][s]}let w=(0,i.initGetModelName)({schema:(0,t.getAuthTables)(e),usePlural:!1}),_=(0,n.initGetFieldName)({schema:(0,t.getAuthTables)(e),usePlural:!1});function j(e,t){try{return`${w(e)}.${_({model:e,field:t})}`}catch{return`${e}.${t}`}}let A=[];if(y.length)for(let e of y)for(let[t,r]of Object.entries(e.fields)){let s=v(r,t),n=c.schema.alterTable(e.table);if(r.index){let s=`${e.table}_${t}_${r.unique?"uidx":"idx"}`,n=c.schema.createIndex(s).on(e.table).columns([t]);A.push(r.unique?n.unique():n)}let i=n.addColumn(t,s,e=>(e=!1!==r.required?e.notNull():e,r.references&&(e=e.references(j(r.references.model,r.references.field)).onDelete(r.references.onDelete||"cascade")),r.unique&&(e=e.unique()),"date"===r.type&&"function"==typeof r.defaultValue&&("postgres"===p||"mysql"===p||"mssql"===p)&&(e="mysql"===p?e.defaultTo(a.sql`CURRENT_TIMESTAMP(3)`):e.defaultTo(a.sql`CURRENT_TIMESTAMP`)),e));b.push(i)}if(h.length)for(let e of h){let t=v({type:q?"number":"string"},"id"),r=c.schema.createTable(e.table).addColumn("id",t,e=>{if(q)return"postgres"===p?e.primaryKey().notNull():"sqlite"===p?e.primaryKey().notNull():"mssql"===p?e.identity().primaryKey().notNull():e.autoIncrement().primaryKey().notNull();return x&&"postgres"===p?e.primaryKey().defaultTo(a.sql`pg_catalog.gen_random_uuid()`).notNull():e.primaryKey().notNull()});for(let[t,s]of Object.entries(e.fields)){let n=v(s,t);if(r=r.addColumn(t,n,e=>(e=!1!==s.required?e.notNull():e,s.references&&(e=e.references(j(s.references.model,s.references.field)).onDelete(s.references.onDelete||"cascade")),s.unique&&(e=e.unique()),"date"===s.type&&"function"==typeof s.defaultValue&&("postgres"===p||"mysql"===p||"mssql"===p)&&(e="mysql"===p?e.defaultTo(a.sql`CURRENT_TIMESTAMP(3)`):e.defaultTo(a.sql`CURRENT_TIMESTAMP`)),e)),s.index){let r=c.schema.createIndex(`${e.table}_${t}_${s.unique?"uidx":"idx"}`).on(e.table).columns([t]);A.push(s.unique?r.unique():r)}}b.push(r)}for(let e of A)b.push(e);return{toBeCreated:h,toBeAdded:y,runMigrations:async function(){for(let e of b)await e.execute()},compileMigrations:async function(){return b.map(e=>e.compile().sql).join(";\n\n")+";"}}}e.s(["getMigrations",0,d,"matchType",0,l],177730)}];
11
11
 
12
- //# sourceMappingURL=%5Broot-of-the-server%5D__0na11h0._.js.map
12
+ //# sourceMappingURL=%5Broot-of-the-server%5D__08-0m4o._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[583627,e=>{"use strict";var t=e.i(798003),r=e.i(254226);function s(){return(process.env.WIKI_ADMIN_EMAILS??"").split(",").map(e=>e.trim().toLowerCase()).filter(Boolean)}async function n(e,r){if(r){let e=s();if(e.length>0&&e.includes(r.toLowerCase()))return!0}return((await (0,t.readConfig)()).adminUserIds??[]).includes(e)}async function a(){return(await (0,t.readConfig)()).adminUserIds??[]}async function i(e){await (0,t.updateConfig)(t=>{let r=t.adminUserIds??[];return r.includes(e)?t:{...t,adminUserIds:[...r,e]}})}async function o(e){let r=s().length>0,n=!1;if(await (0,t.updateConfig)(t=>{let s=(t.adminUserIds??[]).filter(t=>t!==e);return 0!==s.length||r?{...t,adminUserIds:s}:(n=!0,t)}),n)throw Error("LAST_ADMIN: cannot remove the last admin with no WIKI_ADMIN_EMAILS configured")}async function l(e){if(s().length>0||((await (0,t.readConfig)()).adminUserIds??[]).length>0)return;let r=!1;await (0,t.updateConfig)(t=>(t.adminUserIds??[]).length>0?t:(r=!0,{...t,adminUserIds:[e]})),r&&console.log(`[wiki-viewer] Bootstrap: first user ${e} promoted to admin`)}async function u(e){if("1"===process.env.WIKI_NO_AUTH)return{ok:!0,user:{id:"local",email:"local@localhost",name:"local"}};let t=await (0,r.requireUser)(e);return t.ok?await n(t.user.id,t.user.email)?{ok:!0,user:t.user}:{ok:!1,status:403,code:"ADMIN_REQUIRED"}:{ok:!1,status:401,code:"UNAUTHORIZED"}}e.s(["addAdmin",0,i,"ensureBootstrapAdmin",0,l,"isAdmin",0,n,"listAdmins",0,a,"removeAdmin",0,o,"requireAdmin",0,u])},874533,(e,t,r)=>{t.exports=e.x("node:child_process",()=>require("node:child_process"))},812057,(e,t,r)=>{t.exports=e.x("node:util",()=>require("node:util"))},834938,e=>{"use strict";let t;var r=e.i(874533),s=e.i(812057),n=e.i(912714),a=e.i(750227),i=e.i(660526);let o=(0,s.promisify)(r.execFile),l=/[;|&$`<>(){}\n\r\0]/;function u(){return a.default.join(i.default.homedir(),".wiki-viewer","mounts")}async function d(){if(!0!==t)try{await o("sshfs",["--version"]),t=!0}catch{throw Error("sshfs binary not found. Install sshfs + FUSE (e.g. `apt install sshfs`, `brew install macfuse sshfs`) and ensure it is on PATH.")}}async function c(t){var r;let s=a.default.resolve(t),i=!1;try{i=(await (0,n.readFile)("/proc/mounts","utf8")).split("\n").some(e=>{let t=e.split(" ");return t[1]===s&&/fuse/.test(t[2]??"")})}catch{i=!1}return!!i&&(r=s,new Promise(t=>{let s=!1,n=setTimeout(()=>{s||(s=!0,t(!1))},4e3);e.A(687903).then(({readdir:e})=>e(r)).then(()=>{s||(s=!0,clearTimeout(n),t(!0))}).catch(()=>{s||(s=!0,clearTimeout(n),t(!1))})}))}async function p(e){await d(),await (0,n.mkdir)(e.mountpoint,{recursive:!0});let t=function(e){let{target:t,mountpoint:r,port:s,authMethod:n,keyPath:a,readOnly:i}=e,o=t.user?`${t.user}@`:"",l=[`${o}${t.host}:${t.remotePath}`,r];s&&Number.isInteger(s)&&s>0&&s<65536&&l.push("-p",String(s));let u=["reconnect","ServerAliveInterval=15","ServerAliveCountMax=3","compression=yes","cache=yes","kernel_cache","StrictHostKeyChecking=accept-new","BatchMode=yes"];if(i&&u.push("ro"),"keyfile"===n&&a&&(u.push(`IdentityFile=${a}`),u.push("IdentitiesOnly=yes")),"password"===n){let e=u.indexOf("BatchMode=yes");e>=0&&u.splice(e,1),u.push("password_stdin"),u.push("PreferredAuthentications=password,keyboard-interactive"),u.push("PubkeyAuthentication=no"),u.push("NumberOfPasswordPrompts=1")}return e.extraOptions&&u.push(...e.extraOptions),l.push("-o",u.join(",")),l}(e);if(await new Promise((s,n)=>{let a=(0,r.spawn)("sshfs",t,{stdio:["pipe","ignore","pipe"]}),i="",o=setTimeout(()=>{a.kill("SIGKILL"),n(Error("sshfs mount timed out after 25s."))},25e3);a.stderr?.on("data",e=>{i+=e.toString()}),a.on("error",e=>{clearTimeout(o),n(e.message.includes("ENOENT")?Error("sshfs binary not found on PATH."):e)}),a.on("close",e=>{clearTimeout(o),0===e?s():n(Error(`sshfs exited ${e}: ${i.trim()||"mount failed"}`))}),"password"===e.authMethod&&a.stdin?.write((e.password??"")+"\n"),a.stdin?.end()}),!await c(e.mountpoint))throw Error("sshfs reported success but the mount is not live.")}async function h(e){let t=a.default.resolve(e);for(let[e,r]of[["fusermount",["-u","-z",t]],["umount",[t]]])try{await o(e,r);break}catch{}try{await (0,n.rmdir)(t)}catch{}}e.s(["assertSshfsAvailable",0,d,"isMounted",0,c,"isValidKeyPath",0,function(e){return!(!e||l.test(e)||e.includes(".."))&&(e.startsWith("/")||e.startsWith("~/"))},"mountSshfs",0,p,"mountpointFor",0,function(e){return a.default.join(u(),e)},"mountsDir",0,u,"parseSshTarget",0,function(e){let t;if(!e||l.test(e))return null;let r=e.trim(),s=r.indexOf(":");if(s<=0)return null;let n=r.slice(0,s),a=r.slice(s+1);if(!a.startsWith("/")||a.includes(".."))return null;let i=n,o=n.indexOf("@");return o>=0&&(t=n.slice(0,o),i=n.slice(o+1),!t)?null:i&&/^[a-zA-Z0-9.\-]+$/.test(i)&&(!t||/^[a-zA-Z0-9._\-]+$/.test(t))?{user:t,host:i,remotePath:a}:null},"unmountSshfs",0,h])},402662,e=>{"use strict";var t=e.i(702414);e.s(["checkOrigin",0,function(e){let r=e.method.toUpperCase();if("GET"===r||"HEAD"===r||"OPTIONS"===r)return null;let s=e.headers.get("origin"),n=e.headers.get("referer");if(!s&&!n)return null;let a=function(e){let t=Array.from(new Set(["localhost","127.0.0.1",e.split(":")[0],...(process.env.WIKI_OWNER_HOSTS??"").split(",").map(e=>e.trim()).filter(Boolean)])),r=["",":3000",":3003"];e.includes(":")&&r.push(":"+e.split(":")[1]);let s=new Set;for(let e of t)for(let t of["http","https"])for(let n of r)s.add(`${t}://${e}${n}`);return s}(e.headers.get("host")??"");if(s)return a.has(s)?null:t.NextResponse.json({error:"FORBIDDEN",message:"Bad origin"},{status:403});if(n){try{let{protocol:e,host:t}=new URL(n);if(a.has(`${e}//${t}`))return null}catch{}return t.NextResponse.json({error:"FORBIDDEN",message:"Bad referer"},{status:403})}return null}])},365293,e=>{"use strict";var t=e.i(364564),r=e.i(102095),s=e.i(691091),n=e.i(475331),a=e.i(490301),i=e.i(670943),o=e.i(690324),l=e.i(243133),u=e.i(404870),d=e.i(420180),c=e.i(867883),p=e.i(336708),h=e.i(682278),m=e.i(157569),f=e.i(844146),v=e.i(193695);e.i(105888);var w=e.i(530564),g=e.i(912714),y=e.i(702414),R=e.i(402662),_=e.i(254226),k=e.i(583627),A=e.i(798003),x=e.i(359211);async function E(e){if("1"===process.env.WIKI_NO_AUTH){await (0,x.migrateConfigToWorkspaces)();let e=(await (0,x.listWorkspaces)()).map(x.sanitizeWorkspace);return y.NextResponse.json({workspaces:e,isAdmin:!0})}let t=await (0,_.requireUser)(e);if(!t.ok)return y.NextResponse.json({error:"UNAUTHORIZED"},{status:401});await (0,k.ensureBootstrapAdmin)(t.user.id),await (0,x.migrateConfigToWorkspaces)();let r=await (0,k.isAdmin)(t.user.id,t.user.email),s=(await (0,x.listWorkspaces)()).filter(e=>(0,x.userCanAccess)(e,t.user.id,r)).map(x.sanitizeWorkspace);return y.NextResponse.json({workspaces:s,isAdmin:r})}async function N(e){let t=(0,R.checkOrigin)(e);if(t)return t;let r=await (0,k.requireAdmin)(e);if(!r.ok)return y.NextResponse.json({error:r.code},{status:r.status});let s=await e.json();if(s.sshTarget){let e,t=s.sshAuthMethod??"agent";if(!["agent","keyfile","password"].includes(t))return y.NextResponse.json({error:"Invalid auth method"},{status:400});if(void 0!==s.sshPort&&(!Number.isInteger(e=Number(s.sshPort))||e<1||e>65535))return y.NextResponse.json({error:"Invalid port"},{status:400});try{let n=await (0,x.createSshWorkspace)({target:s.sshTarget,port:e,authMethod:t,keyPath:s.sshKeyPath?.trim()||void 0,password:s.sshPassword||void 0,readOnly:!0===s.sshReadOnly,name:s.name?.trim()||void 0,createdBy:r.user.id});return y.NextResponse.json({ok:!0,workspace:(0,x.sanitizeWorkspace)(n)})}catch(t){let e=t instanceof Error?t.message:String(t);return y.NextResponse.json({error:e},{status:400})}}if(s.remoteUrl){if(void 0!==s.subpath&&"string"!=typeof s.subpath)return y.NextResponse.json({error:"Invalid subpath"},{status:400});let e=s.subpath?.trim()||void 0;if(e&&(e.startsWith("/")||e.includes("..")||/[;|&$`<>(){}\n\0]/.test(e)))return y.NextResponse.json({error:"Invalid subpath"},{status:400});let t=await (0,A.readConfig)();try{let n=await (0,x.createGitWorkspace)({remoteUrl:s.remoteUrl,branch:s.branch?.trim()||void 0,token:s.token||void 0,username:s.username?.trim()||void 0,name:s.name?.trim()||void 0,createdBy:r.user.id,allowedHosts:t.git?.allowedHosts,allowInsecureHttp:t.git?.allowInsecureHttp,subpath:e});return y.NextResponse.json({ok:!0,workspace:(0,x.sanitizeWorkspace)(n)})}catch(t){let e=t instanceof Error?t.message:String(t);return y.NextResponse.json({error:e},{status:400})}}let n=s.rootDir?.trim();if(!n)return y.NextResponse.json({error:"Missing rootDir"},{status:400});try{if(!(await (0,g.stat)(n)).isDirectory())return y.NextResponse.json({error:"Not a directory"},{status:400})}catch{return y.NextResponse.json({error:"Directory not found"},{status:404})}let a=await (0,x.createWorkspace)({rootDir:n,name:s.name?.trim()||void 0,createdBy:r.user.id});return y.NextResponse.json({ok:!0,workspace:(0,x.sanitizeWorkspace)(a)})}e.s(["GET",0,E,"POST",0,N,"runtime",0,"nodejs"],401923);var I=e.i(401923);let C=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/system/workspaces/route",pathname:"/api/system/workspaces",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/system/workspaces/route.ts",nextConfigOutput:"standalone",userland:I,...{}}),{workAsyncStorage:P,workUnitAsyncStorage:b,serverHooks:T}=C;async function j(e,t,s){s.requestMeta&&(0,n.setRequestMeta)(e,s.requestMeta),C.isDev&&(0,n.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let g="/api/system/workspaces/route";g=g.replace(/\/index$/,"")||"/";let y=await C.prepare(e,t,{srcPage:g,multiZoneDraftMode:!1});if(!y)return t.statusCode=400,t.end("Bad Request"),null==s.waitUntil||s.waitUntil.call(s,Promise.resolve()),null;let{buildId:R,params:_,nextConfig:k,parsedUrl:A,isDraftMode:x,prerenderManifest:E,routerServerContext:N,isOnDemandRevalidate:I,revalidateOnlyGenerated:P,resolvedPathname:b,clientReferenceManifest:T,serverActionsManifest:j}=y,O=(0,o.normalizeAppPath)(g),S=!!(E.dynamicRoutes[O]||E.routes[b]),U=async()=>((null==N?void 0:N.render404)?await N.render404(e,t,A,!1):t.end("This page could not be found"),null);if(S&&!x){let e=!!E.routes[b],t=E.dynamicRoutes[O];if(t&&!1===t.fallback&&!e){if(k.adapterPath)return await U();throw new v.NoFallbackError}}let q=null;!S||C.isDev||x||(q="/index"===(q=b)?"/":q);let D=!0===C.isDev||!S,H=S&&!D;j&&T&&(0,i.setManifestsSingleton)({page:g,clientReferenceManifest:T,serverActionsManifest:j});let M=e.method||"GET",$=(0,a.getTracer)(),W=$.getActiveScopeSpan(),B=!!(null==N?void 0:N.isWrappedByNextServer),K=!!(0,n.getRequestMeta)(e,"minimalMode"),z=(0,n.getRequestMeta)(e,"incrementalCache")||await C.getIncrementalCache(e,k,E,K);null==z||z.resetRequestCache(),globalThis.__incrementalCache=z;let F={params:_,previewProps:E.preview,renderOpts:{experimental:{authInterrupts:!!k.experimental.authInterrupts},cacheComponents:!!k.cacheComponents,supportsDynamicResponse:D,incrementalCache:z,cacheLifeProfiles:k.cacheLife,waitUntil:s.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,s,n)=>C.onRequestError(e,t,s,n,N)},sharedContext:{buildId:R}},L=new l.NodeNextRequest(e),G=new l.NodeNextResponse(t),Z=u.NextRequestAdapter.fromNodeNextRequest(L,(0,u.signalFromNodeResponse)(t));try{let n,i=async e=>C.handle(Z,F).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=$.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==d.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let s=r.get("next.route");if(s){let t=`${M} ${s}`;e.setAttributes({"next.route":s,"http.route":s,"next.span_name":t}),e.updateName(t),n&&n!==e&&(n.setAttribute("http.route",s),n.updateName(t))}else e.updateName(`${M} ${g}`)}),o=async n=>{var a,o;let l=async({previousCacheEntry:r})=>{try{if(!K&&I&&P&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let a=await i(n);e.fetchMetrics=F.renderOpts.fetchMetrics;let o=F.renderOpts.pendingWaitUntil;o&&s.waitUntil&&(s.waitUntil(o),o=void 0);let l=F.renderOpts.collectedTags;if(!S)return await (0,p.sendResponse)(L,G,a,F.renderOpts.pendingWaitUntil),null;{let e=await a.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(a.headers);l&&(t[f.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==F.renderOpts.collectedRevalidate&&!(F.renderOpts.collectedRevalidate>=f.INFINITE_CACHE)&&F.renderOpts.collectedRevalidate,s=void 0===F.renderOpts.collectedExpire||F.renderOpts.collectedExpire>=f.INFINITE_CACHE?void 0:F.renderOpts.collectedExpire;return{value:{kind:w.CachedRouteKind.APP_ROUTE,status:a.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:s}}}}catch(t){throw(null==r?void 0:r.isStale)&&await C.onRequestError(e,t,{routerKind:"App Router",routePath:g,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:H,isOnDemandRevalidate:I})},!1,N),t}},u=await C.handleResponse({req:e,nextConfig:k,cacheKey:q,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:E,isRoutePPREnabled:!1,isOnDemandRevalidate:I,revalidateOnlyGenerated:P,responseGenerator:l,waitUntil:s.waitUntil,isMinimalMode:K});if(!S)return null;if((null==u||null==(a=u.value)?void 0:a.kind)!==w.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==u||null==(o=u.value)?void 0:o.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});K||t.setHeader("x-nextjs-cache",I?"REVALIDATED":u.isMiss?"MISS":u.isStale?"STALE":"HIT"),x&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let d=(0,h.fromNodeOutgoingHttpHeaders)(u.value.headers);return K&&S||d.delete(f.NEXT_CACHE_TAGS_HEADER),!u.cacheControl||t.getHeader("Cache-Control")||d.get("Cache-Control")||d.set("Cache-Control",(0,m.getCacheControlHeader)(u.cacheControl)),await (0,p.sendResponse)(L,G,new Response(u.value.body,{headers:d,status:u.value.status||200})),null};B&&W?await o(W):(n=$.getActiveScopeSpan(),await $.withPropagatedContext(e.headers,()=>$.trace(d.BaseServerSpan.handleRequest,{spanName:`${M} ${g}`,kind:a.SpanKind.SERVER,attributes:{"http.method":M,"http.target":e.url}},o),void 0,!B))}catch(t){if(t instanceof v.NoFallbackError||await C.onRequestError(e,t,{routerKind:"App Router",routePath:O,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:H,isOnDemandRevalidate:I})},!1,N),S)throw t;return await (0,p.sendResponse)(L,G,new Response(null,{status:500})),null}}e.s(["handler",0,j,"patchFetch",0,function(){return(0,s.patchFetch)({workAsyncStorage:P,workUnitAsyncStorage:b})},"routeModule",0,C,"serverHooks",0,T,"workAsyncStorage",0,P,"workUnitAsyncStorage",0,b],365293)},168315,e=>{e.v(t=>Promise.all(["server/chunks/0sag_@better-auth_memory-adapter_dist_index_mjs_0pvj6im._.js"].map(t=>e.l(t))).then(()=>t(862112)))},317691,e=>{e.v(t=>Promise.all(["server/chunks/0dhv_better-auth_dist_adapters_kysely-adapter_index_mjs_0t4t4z8._.js"].map(t=>e.l(t))).then(()=>t(833412)))},580632,e=>{e.v(e=>Promise.resolve().then(()=>e(270406)))},947559,e=>{e.v(t=>Promise.all(["server/chunks/0ugq_@better-auth_kysely-adapter_dist_bun-sqlite-dialect-DzNwOpKv_mjs_0z1z6m4._.js"].map(t=>e.l(t))).then(()=>t(495181)))},715018,e=>{e.v(t=>Promise.all(["server/chunks/0ugq_@better-auth_kysely-adapter_dist_node-sqlite-dialect_mjs_0qqlvhl._.js"].map(t=>e.l(t))).then(()=>t(698370)))},146843,e=>{e.v(t=>Promise.all(["server/chunks/0ugq_@better-auth_kysely-adapter_dist_d1-sqlite-dialect-C2B7YsIT_mjs_0wynrz3._.js"].map(t=>e.l(t))).then(()=>t(143740)))},84040,e=>{e.v(t=>Promise.all(["server/chunks/0p91_next_0h94sj1._.js"].map(t=>e.l(t))).then(()=>t(815068)))},427669,e=>{e.v(e=>Promise.resolve().then(()=>e(177730)))},687903,e=>{e.v(e=>Promise.resolve().then(()=>e(912714)))},754121,e=>{e.v(t=>Promise.all(["server/chunks/[root-of-the-server]__0d7zxm_._.js","server/chunks/src_lib_search_0ymmp0c._.js"].map(t=>e.l(t))).then(()=>t(437856)))}];
1
+ module.exports=[874533,(e,t,r)=>{t.exports=e.x("node:child_process",()=>require("node:child_process"))},812057,(e,t,r)=>{t.exports=e.x("node:util",()=>require("node:util"))},834938,e=>{"use strict";let t;var r=e.i(874533),s=e.i(812057),n=e.i(912714),a=e.i(750227),i=e.i(660526);let o=(0,s.promisify)(r.execFile),l=/[;|&$`<>(){}\n\r\0]/;function u(){return a.default.join(i.default.homedir(),".wiki-viewer","mounts")}async function d(){if(!0!==t)try{await o("sshfs",["--version"]),t=!0}catch{throw Error("sshfs binary not found. Install sshfs + FUSE (e.g. `apt install sshfs`, `brew install macfuse sshfs`) and ensure it is on PATH.")}}async function c(t){var r;let s=a.default.resolve(t),i=!1;try{i=(await (0,n.readFile)("/proc/mounts","utf8")).split("\n").some(e=>{let t=e.split(" ");return t[1]===s&&/fuse/.test(t[2]??"")})}catch{i=!1}return!!i&&(r=s,new Promise(t=>{let s=!1,n=setTimeout(()=>{s||(s=!0,t(!1))},4e3);e.A(687903).then(({readdir:e})=>e(r)).then(()=>{s||(s=!0,clearTimeout(n),t(!0))}).catch(()=>{s||(s=!0,clearTimeout(n),t(!1))})}))}async function p(e){await d(),await (0,n.mkdir)(e.mountpoint,{recursive:!0});let t=function(e){let{target:t,mountpoint:r,port:s,authMethod:n,keyPath:a,readOnly:i}=e,o=t.user?`${t.user}@`:"",l=[`${o}${t.host}:${t.remotePath}`,r];s&&Number.isInteger(s)&&s>0&&s<65536&&l.push("-p",String(s));let u=["reconnect","ServerAliveInterval=15","ServerAliveCountMax=3","compression=yes","cache=yes","kernel_cache","StrictHostKeyChecking=accept-new","BatchMode=yes"];if(i&&u.push("ro"),"keyfile"===n&&a&&(u.push(`IdentityFile=${a}`),u.push("IdentitiesOnly=yes")),"password"===n){let e=u.indexOf("BatchMode=yes");e>=0&&u.splice(e,1),u.push("password_stdin"),u.push("PreferredAuthentications=password,keyboard-interactive"),u.push("PubkeyAuthentication=no"),u.push("NumberOfPasswordPrompts=1")}return e.extraOptions&&u.push(...e.extraOptions),l.push("-o",u.join(",")),l}(e);if(await new Promise((s,n)=>{let a=(0,r.spawn)("sshfs",t,{stdio:["pipe","ignore","pipe"]}),i="",o=setTimeout(()=>{a.kill("SIGKILL"),n(Error("sshfs mount timed out after 25s."))},25e3);a.stderr?.on("data",e=>{i+=e.toString()}),a.on("error",e=>{clearTimeout(o),n(e.message.includes("ENOENT")?Error("sshfs binary not found on PATH."):e)}),a.on("close",e=>{clearTimeout(o),0===e?s():n(Error(`sshfs exited ${e}: ${i.trim()||"mount failed"}`))}),"password"===e.authMethod&&a.stdin?.write((e.password??"")+"\n"),a.stdin?.end()}),!await c(e.mountpoint))throw Error("sshfs reported success but the mount is not live.")}async function h(e){let t=a.default.resolve(e);for(let[e,r]of[["fusermount",["-u","-z",t]],["umount",[t]]])try{await o(e,r);break}catch{}try{await (0,n.rmdir)(t)}catch{}}e.s(["assertSshfsAvailable",0,d,"isMounted",0,c,"isValidKeyPath",0,function(e){return!(!e||l.test(e)||e.includes(".."))&&(e.startsWith("/")||e.startsWith("~/"))},"mountSshfs",0,p,"mountpointFor",0,function(e){return a.default.join(u(),e)},"mountsDir",0,u,"parseSshTarget",0,function(e){let t;if(!e||l.test(e))return null;let r=e.trim(),s=r.indexOf(":");if(s<=0)return null;let n=r.slice(0,s),a=r.slice(s+1);if(!a.startsWith("/")||a.includes(".."))return null;let i=n,o=n.indexOf("@");return o>=0&&(t=n.slice(0,o),i=n.slice(o+1),!t)?null:i&&/^[a-zA-Z0-9.\-]+$/.test(i)&&(!t||/^[a-zA-Z0-9._\-]+$/.test(t))?{user:t,host:i,remotePath:a}:null},"unmountSshfs",0,h])},583627,e=>{"use strict";var t=e.i(798003),r=e.i(254226);function s(){return(process.env.WIKI_ADMIN_EMAILS??"").split(",").map(e=>e.trim().toLowerCase()).filter(Boolean)}async function n(e,r){if(r){let e=s();if(e.length>0&&e.includes(r.toLowerCase()))return!0}return((await (0,t.readConfig)()).adminUserIds??[]).includes(e)}async function a(){return(await (0,t.readConfig)()).adminUserIds??[]}async function i(e){await (0,t.updateConfig)(t=>{let r=t.adminUserIds??[];return r.includes(e)?t:{...t,adminUserIds:[...r,e]}})}async function o(e){let r=s().length>0,n=!1;if(await (0,t.updateConfig)(t=>{let s=(t.adminUserIds??[]).filter(t=>t!==e);return 0!==s.length||r?{...t,adminUserIds:s}:(n=!0,t)}),n)throw Error("LAST_ADMIN: cannot remove the last admin with no WIKI_ADMIN_EMAILS configured")}async function l(e){if(s().length>0||((await (0,t.readConfig)()).adminUserIds??[]).length>0)return;let r=!1;await (0,t.updateConfig)(t=>(t.adminUserIds??[]).length>0?t:(r=!0,{...t,adminUserIds:[e]})),r&&console.log(`[wiki-viewer] Bootstrap: first user ${e} promoted to admin`)}async function u(e){if("1"===process.env.WIKI_NO_AUTH)return{ok:!0,user:{id:"local",email:"local@localhost",name:"local"}};let t=await (0,r.requireUser)(e);return t.ok?await n(t.user.id,t.user.email)?{ok:!0,user:t.user}:{ok:!1,status:403,code:"ADMIN_REQUIRED"}:{ok:!1,status:401,code:"UNAUTHORIZED"}}e.s(["addAdmin",0,i,"ensureBootstrapAdmin",0,l,"isAdmin",0,n,"listAdmins",0,a,"removeAdmin",0,o,"requireAdmin",0,u])},402662,e=>{"use strict";var t=e.i(702414);e.s(["checkOrigin",0,function(e){let r=e.method.toUpperCase();if("GET"===r||"HEAD"===r||"OPTIONS"===r)return null;let s=e.headers.get("origin"),n=e.headers.get("referer");if(!s&&!n)return null;let a=function(e){let t=Array.from(new Set(["localhost","127.0.0.1",e.split(":")[0],...(process.env.WIKI_OWNER_HOSTS??"").split(",").map(e=>e.trim()).filter(Boolean)])),r=["",":3000",":3003"];e.includes(":")&&r.push(":"+e.split(":")[1]);let s=new Set;for(let e of t)for(let t of["http","https"])for(let n of r)s.add(`${t}://${e}${n}`);return s}(e.headers.get("host")??"");if(s)return a.has(s)?null:t.NextResponse.json({error:"FORBIDDEN",message:"Bad origin"},{status:403});if(n){try{let{protocol:e,host:t}=new URL(n);if(a.has(`${e}//${t}`))return null}catch{}return t.NextResponse.json({error:"FORBIDDEN",message:"Bad referer"},{status:403})}return null}])},365293,e=>{"use strict";var t=e.i(364564),r=e.i(102095),s=e.i(691091),n=e.i(475331),a=e.i(490301),i=e.i(670943),o=e.i(690324),l=e.i(243133),u=e.i(404870),d=e.i(420180),c=e.i(867883),p=e.i(336708),h=e.i(682278),m=e.i(157569),f=e.i(844146),v=e.i(193695);e.i(105888);var w=e.i(530564),g=e.i(912714),y=e.i(702414),R=e.i(402662),_=e.i(254226),k=e.i(583627),A=e.i(798003),x=e.i(359211);async function E(e){if("1"===process.env.WIKI_NO_AUTH){await (0,x.migrateConfigToWorkspaces)();let e=(await (0,x.listWorkspaces)()).map(x.sanitizeWorkspace);return y.NextResponse.json({workspaces:e,isAdmin:!0})}let t=await (0,_.requireUser)(e);if(!t.ok)return y.NextResponse.json({error:"UNAUTHORIZED"},{status:401});await (0,k.ensureBootstrapAdmin)(t.user.id),await (0,x.migrateConfigToWorkspaces)();let r=await (0,k.isAdmin)(t.user.id,t.user.email),s=(await (0,x.listWorkspaces)()).filter(e=>(0,x.userCanAccess)(e,t.user.id,r)).map(x.sanitizeWorkspace);return y.NextResponse.json({workspaces:s,isAdmin:r})}async function N(e){let t=(0,R.checkOrigin)(e);if(t)return t;let r=await (0,k.requireAdmin)(e);if(!r.ok)return y.NextResponse.json({error:r.code},{status:r.status});let s=await e.json();if(s.sshTarget){let e,t=s.sshAuthMethod??"agent";if(!["agent","keyfile","password"].includes(t))return y.NextResponse.json({error:"Invalid auth method"},{status:400});if(void 0!==s.sshPort&&(!Number.isInteger(e=Number(s.sshPort))||e<1||e>65535))return y.NextResponse.json({error:"Invalid port"},{status:400});try{let n=await (0,x.createSshWorkspace)({target:s.sshTarget,port:e,authMethod:t,keyPath:s.sshKeyPath?.trim()||void 0,password:s.sshPassword||void 0,readOnly:!0===s.sshReadOnly,name:s.name?.trim()||void 0,createdBy:r.user.id});return y.NextResponse.json({ok:!0,workspace:(0,x.sanitizeWorkspace)(n)})}catch(t){let e=t instanceof Error?t.message:String(t);return y.NextResponse.json({error:e},{status:400})}}if(s.remoteUrl){if(void 0!==s.subpath&&"string"!=typeof s.subpath)return y.NextResponse.json({error:"Invalid subpath"},{status:400});let e=s.subpath?.trim()||void 0;if(e&&(e.startsWith("/")||e.includes("..")||/[;|&$`<>(){}\n\0]/.test(e)))return y.NextResponse.json({error:"Invalid subpath"},{status:400});let t=await (0,A.readConfig)();try{let n=await (0,x.createGitWorkspace)({remoteUrl:s.remoteUrl,branch:s.branch?.trim()||void 0,token:s.token||void 0,username:s.username?.trim()||void 0,name:s.name?.trim()||void 0,createdBy:r.user.id,allowedHosts:t.git?.allowedHosts,allowInsecureHttp:t.git?.allowInsecureHttp,subpath:e});return y.NextResponse.json({ok:!0,workspace:(0,x.sanitizeWorkspace)(n)})}catch(t){let e=t instanceof Error?t.message:String(t);return y.NextResponse.json({error:e},{status:400})}}let n=s.rootDir?.trim();if(!n)return y.NextResponse.json({error:"Missing rootDir"},{status:400});try{if(!(await (0,g.stat)(n)).isDirectory())return y.NextResponse.json({error:"Not a directory"},{status:400})}catch{return y.NextResponse.json({error:"Directory not found"},{status:404})}let a=await (0,x.createWorkspace)({rootDir:n,name:s.name?.trim()||void 0,createdBy:r.user.id});return y.NextResponse.json({ok:!0,workspace:(0,x.sanitizeWorkspace)(a)})}e.s(["GET",0,E,"POST",0,N,"runtime",0,"nodejs"],401923);var I=e.i(401923);let C=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/system/workspaces/route",pathname:"/api/system/workspaces",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/system/workspaces/route.ts",nextConfigOutput:"standalone",userland:I,...{}}),{workAsyncStorage:P,workUnitAsyncStorage:b,serverHooks:T}=C;async function j(e,t,s){s.requestMeta&&(0,n.setRequestMeta)(e,s.requestMeta),C.isDev&&(0,n.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let g="/api/system/workspaces/route";g=g.replace(/\/index$/,"")||"/";let y=await C.prepare(e,t,{srcPage:g,multiZoneDraftMode:!1});if(!y)return t.statusCode=400,t.end("Bad Request"),null==s.waitUntil||s.waitUntil.call(s,Promise.resolve()),null;let{buildId:R,params:_,nextConfig:k,parsedUrl:A,isDraftMode:x,prerenderManifest:E,routerServerContext:N,isOnDemandRevalidate:I,revalidateOnlyGenerated:P,resolvedPathname:b,clientReferenceManifest:T,serverActionsManifest:j}=y,O=(0,o.normalizeAppPath)(g),S=!!(E.dynamicRoutes[O]||E.routes[b]),U=async()=>((null==N?void 0:N.render404)?await N.render404(e,t,A,!1):t.end("This page could not be found"),null);if(S&&!x){let e=!!E.routes[b],t=E.dynamicRoutes[O];if(t&&!1===t.fallback&&!e){if(k.adapterPath)return await U();throw new v.NoFallbackError}}let q=null;!S||C.isDev||x||(q="/index"===(q=b)?"/":q);let D=!0===C.isDev||!S,H=S&&!D;j&&T&&(0,i.setManifestsSingleton)({page:g,clientReferenceManifest:T,serverActionsManifest:j});let M=e.method||"GET",$=(0,a.getTracer)(),W=$.getActiveScopeSpan(),B=!!(null==N?void 0:N.isWrappedByNextServer),K=!!(0,n.getRequestMeta)(e,"minimalMode"),z=(0,n.getRequestMeta)(e,"incrementalCache")||await C.getIncrementalCache(e,k,E,K);null==z||z.resetRequestCache(),globalThis.__incrementalCache=z;let F={params:_,previewProps:E.preview,renderOpts:{experimental:{authInterrupts:!!k.experimental.authInterrupts},cacheComponents:!!k.cacheComponents,supportsDynamicResponse:D,incrementalCache:z,cacheLifeProfiles:k.cacheLife,waitUntil:s.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,s,n)=>C.onRequestError(e,t,s,n,N)},sharedContext:{buildId:R}},L=new l.NodeNextRequest(e),G=new l.NodeNextResponse(t),Z=u.NextRequestAdapter.fromNodeNextRequest(L,(0,u.signalFromNodeResponse)(t));try{let n,i=async e=>C.handle(Z,F).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=$.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==d.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let s=r.get("next.route");if(s){let t=`${M} ${s}`;e.setAttributes({"next.route":s,"http.route":s,"next.span_name":t}),e.updateName(t),n&&n!==e&&(n.setAttribute("http.route",s),n.updateName(t))}else e.updateName(`${M} ${g}`)}),o=async n=>{var a,o;let l=async({previousCacheEntry:r})=>{try{if(!K&&I&&P&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let a=await i(n);e.fetchMetrics=F.renderOpts.fetchMetrics;let o=F.renderOpts.pendingWaitUntil;o&&s.waitUntil&&(s.waitUntil(o),o=void 0);let l=F.renderOpts.collectedTags;if(!S)return await (0,p.sendResponse)(L,G,a,F.renderOpts.pendingWaitUntil),null;{let e=await a.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(a.headers);l&&(t[f.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==F.renderOpts.collectedRevalidate&&!(F.renderOpts.collectedRevalidate>=f.INFINITE_CACHE)&&F.renderOpts.collectedRevalidate,s=void 0===F.renderOpts.collectedExpire||F.renderOpts.collectedExpire>=f.INFINITE_CACHE?void 0:F.renderOpts.collectedExpire;return{value:{kind:w.CachedRouteKind.APP_ROUTE,status:a.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:s}}}}catch(t){throw(null==r?void 0:r.isStale)&&await C.onRequestError(e,t,{routerKind:"App Router",routePath:g,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:H,isOnDemandRevalidate:I})},!1,N),t}},u=await C.handleResponse({req:e,nextConfig:k,cacheKey:q,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:E,isRoutePPREnabled:!1,isOnDemandRevalidate:I,revalidateOnlyGenerated:P,responseGenerator:l,waitUntil:s.waitUntil,isMinimalMode:K});if(!S)return null;if((null==u||null==(a=u.value)?void 0:a.kind)!==w.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==u||null==(o=u.value)?void 0:o.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});K||t.setHeader("x-nextjs-cache",I?"REVALIDATED":u.isMiss?"MISS":u.isStale?"STALE":"HIT"),x&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let d=(0,h.fromNodeOutgoingHttpHeaders)(u.value.headers);return K&&S||d.delete(f.NEXT_CACHE_TAGS_HEADER),!u.cacheControl||t.getHeader("Cache-Control")||d.get("Cache-Control")||d.set("Cache-Control",(0,m.getCacheControlHeader)(u.cacheControl)),await (0,p.sendResponse)(L,G,new Response(u.value.body,{headers:d,status:u.value.status||200})),null};B&&W?await o(W):(n=$.getActiveScopeSpan(),await $.withPropagatedContext(e.headers,()=>$.trace(d.BaseServerSpan.handleRequest,{spanName:`${M} ${g}`,kind:a.SpanKind.SERVER,attributes:{"http.method":M,"http.target":e.url}},o),void 0,!B))}catch(t){if(t instanceof v.NoFallbackError||await C.onRequestError(e,t,{routerKind:"App Router",routePath:O,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:H,isOnDemandRevalidate:I})},!1,N),S)throw t;return await (0,p.sendResponse)(L,G,new Response(null,{status:500})),null}}e.s(["handler",0,j,"patchFetch",0,function(){return(0,s.patchFetch)({workAsyncStorage:P,workUnitAsyncStorage:b})},"routeModule",0,C,"serverHooks",0,T,"workAsyncStorage",0,P,"workUnitAsyncStorage",0,b],365293)},168315,e=>{e.v(t=>Promise.all(["server/chunks/0sag_@better-auth_memory-adapter_dist_index_mjs_0pvj6im._.js"].map(t=>e.l(t))).then(()=>t(862112)))},317691,e=>{e.v(t=>Promise.all(["server/chunks/0dhv_better-auth_dist_adapters_kysely-adapter_index_mjs_0t4t4z8._.js"].map(t=>e.l(t))).then(()=>t(833412)))},580632,e=>{e.v(e=>Promise.resolve().then(()=>e(270406)))},947559,e=>{e.v(t=>Promise.all(["server/chunks/0ugq_@better-auth_kysely-adapter_dist_bun-sqlite-dialect-DzNwOpKv_mjs_0z1z6m4._.js"].map(t=>e.l(t))).then(()=>t(495181)))},715018,e=>{e.v(t=>Promise.all(["server/chunks/0ugq_@better-auth_kysely-adapter_dist_node-sqlite-dialect_mjs_0qqlvhl._.js"].map(t=>e.l(t))).then(()=>t(698370)))},146843,e=>{e.v(t=>Promise.all(["server/chunks/0ugq_@better-auth_kysely-adapter_dist_d1-sqlite-dialect-C2B7YsIT_mjs_0wynrz3._.js"].map(t=>e.l(t))).then(()=>t(143740)))},84040,e=>{e.v(t=>Promise.all(["server/chunks/0p91_next_0h94sj1._.js"].map(t=>e.l(t))).then(()=>t(815068)))},427669,e=>{e.v(e=>Promise.resolve().then(()=>e(177730)))},687903,e=>{e.v(e=>Promise.resolve().then(()=>e(912714)))},754121,e=>{e.v(t=>Promise.all(["server/chunks/[root-of-the-server]__0d7zxm_._.js","server/chunks/src_lib_search_0ymmp0c._.js"].map(t=>e.l(t))).then(()=>t(437856)))}];
2
2
 
3
- //# sourceMappingURL=%5Broot-of-the-server%5D__0s_8poz._.js.map
3
+ //# sourceMappingURL=%5Broot-of-the-server%5D__08mb7mf._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[583627,e=>{"use strict";var t=e.i(798003),r=e.i(254226);function n(){return(process.env.WIKI_ADMIN_EMAILS??"").split(",").map(e=>e.trim().toLowerCase()).filter(Boolean)}async function s(e,r){if(r){let e=n();if(e.length>0&&e.includes(r.toLowerCase()))return!0}return((await (0,t.readConfig)()).adminUserIds??[]).includes(e)}async function a(){return(await (0,t.readConfig)()).adminUserIds??[]}async function i(e){await (0,t.updateConfig)(t=>{let r=t.adminUserIds??[];return r.includes(e)?t:{...t,adminUserIds:[...r,e]}})}async function o(e){let r=n().length>0,s=!1;if(await (0,t.updateConfig)(t=>{let n=(t.adminUserIds??[]).filter(t=>t!==e);return 0!==n.length||r?{...t,adminUserIds:n}:(s=!0,t)}),s)throw Error("LAST_ADMIN: cannot remove the last admin with no WIKI_ADMIN_EMAILS configured")}async function l(e){if(n().length>0||((await (0,t.readConfig)()).adminUserIds??[]).length>0)return;let r=!1;await (0,t.updateConfig)(t=>(t.adminUserIds??[]).length>0?t:(r=!0,{...t,adminUserIds:[e]})),r&&console.log(`[wiki-viewer] Bootstrap: first user ${e} promoted to admin`)}async function u(e){if("1"===process.env.WIKI_NO_AUTH)return{ok:!0,user:{id:"local",email:"local@localhost",name:"local"}};let t=await (0,r.requireUser)(e);return t.ok?await s(t.user.id,t.user.email)?{ok:!0,user:t.user}:{ok:!1,status:403,code:"ADMIN_REQUIRED"}:{ok:!1,status:401,code:"UNAUTHORIZED"}}e.s(["addAdmin",0,i,"ensureBootstrapAdmin",0,l,"isAdmin",0,s,"listAdmins",0,a,"removeAdmin",0,o,"requireAdmin",0,u])},874533,(e,t,r)=>{t.exports=e.x("node:child_process",()=>require("node:child_process"))},812057,(e,t,r)=>{t.exports=e.x("node:util",()=>require("node:util"))},834938,e=>{"use strict";let t;var r=e.i(874533),n=e.i(812057),s=e.i(912714),a=e.i(750227),i=e.i(660526);let o=(0,n.promisify)(r.execFile),l=/[;|&$`<>(){}\n\r\0]/;function u(){return a.default.join(i.default.homedir(),".wiki-viewer","mounts")}async function d(){if(!0!==t)try{await o("sshfs",["--version"]),t=!0}catch{throw Error("sshfs binary not found. Install sshfs + FUSE (e.g. `apt install sshfs`, `brew install macfuse sshfs`) and ensure it is on PATH.")}}async function c(t){var r;let n=a.default.resolve(t),i=!1;try{i=(await (0,s.readFile)("/proc/mounts","utf8")).split("\n").some(e=>{let t=e.split(" ");return t[1]===n&&/fuse/.test(t[2]??"")})}catch{i=!1}return!!i&&(r=n,new Promise(t=>{let n=!1,s=setTimeout(()=>{n||(n=!0,t(!1))},4e3);e.A(687903).then(({readdir:e})=>e(r)).then(()=>{n||(n=!0,clearTimeout(s),t(!0))}).catch(()=>{n||(n=!0,clearTimeout(s),t(!1))})}))}async function p(e){await d(),await (0,s.mkdir)(e.mountpoint,{recursive:!0});let t=function(e){let{target:t,mountpoint:r,port:n,authMethod:s,keyPath:a,readOnly:i}=e,o=t.user?`${t.user}@`:"",l=[`${o}${t.host}:${t.remotePath}`,r];n&&Number.isInteger(n)&&n>0&&n<65536&&l.push("-p",String(n));let u=["reconnect","ServerAliveInterval=15","ServerAliveCountMax=3","compression=yes","cache=yes","kernel_cache","StrictHostKeyChecking=accept-new","BatchMode=yes"];if(i&&u.push("ro"),"keyfile"===s&&a&&(u.push(`IdentityFile=${a}`),u.push("IdentitiesOnly=yes")),"password"===s){let e=u.indexOf("BatchMode=yes");e>=0&&u.splice(e,1),u.push("password_stdin"),u.push("PreferredAuthentications=password,keyboard-interactive"),u.push("PubkeyAuthentication=no"),u.push("NumberOfPasswordPrompts=1")}return e.extraOptions&&u.push(...e.extraOptions),l.push("-o",u.join(",")),l}(e);if(await new Promise((n,s)=>{let a=(0,r.spawn)("sshfs",t,{stdio:["pipe","ignore","pipe"]}),i="",o=setTimeout(()=>{a.kill("SIGKILL"),s(Error("sshfs mount timed out after 25s."))},25e3);a.stderr?.on("data",e=>{i+=e.toString()}),a.on("error",e=>{clearTimeout(o),s(e.message.includes("ENOENT")?Error("sshfs binary not found on PATH."):e)}),a.on("close",e=>{clearTimeout(o),0===e?n():s(Error(`sshfs exited ${e}: ${i.trim()||"mount failed"}`))}),"password"===e.authMethod&&a.stdin?.write((e.password??"")+"\n"),a.stdin?.end()}),!await c(e.mountpoint))throw Error("sshfs reported success but the mount is not live.")}async function h(e){let t=a.default.resolve(e);for(let[e,r]of[["fusermount",["-u","-z",t]],["umount",[t]]])try{await o(e,r);break}catch{}try{await (0,s.rmdir)(t)}catch{}}e.s(["assertSshfsAvailable",0,d,"isMounted",0,c,"isValidKeyPath",0,function(e){return!(!e||l.test(e)||e.includes(".."))&&(e.startsWith("/")||e.startsWith("~/"))},"mountSshfs",0,p,"mountpointFor",0,function(e){return a.default.join(u(),e)},"mountsDir",0,u,"parseSshTarget",0,function(e){let t;if(!e||l.test(e))return null;let r=e.trim(),n=r.indexOf(":");if(n<=0)return null;let s=r.slice(0,n),a=r.slice(n+1);if(!a.startsWith("/")||a.includes(".."))return null;let i=s,o=s.indexOf("@");return o>=0&&(t=s.slice(0,o),i=s.slice(o+1),!t)?null:i&&/^[a-zA-Z0-9.\-]+$/.test(i)&&(!t||/^[a-zA-Z0-9._\-]+$/.test(t))?{user:t,host:i,remotePath:a}:null},"unmountSshfs",0,h])},504445,e=>{"use strict";var t=e.i(750227);let r=globalThis;!r.__wikiRootDir&&process.env.ROOT_DIR&&(r.__wikiRootDir=t.default.resolve(process.env.ROOT_DIR)),e.s(["clearRootDir",0,function(){r.__wikiRootDir=void 0},"getRootDir",0,function(){return r.__wikiRootDir??""},"isRootDirSet",0,function(){return!!r.__wikiRootDir},"setRootDir",0,function(e){r.__wikiRootDir=t.default.resolve(e)}])},660038,e=>{"use strict";var t=e.i(750227),r=e.i(254226),n=e.i(583627),s=e.i(504445),a=e.i(359211);async function i(e){let r;await (0,a.migrateConfigToWorkspaces)();let n=new URL(e.url).searchParams.get("ws")??e.headers.get("x-workspace")??null;if(n)r=await (0,a.getWorkspace)(n)??null;else{let e=await (0,a.listWorkspaces)();if(0===e.length){let e;r=(e=(0,s.getRootDir)())?{id:"ws_default",name:t.default.basename(e)||"workspace",rootDir:e,createdAt:new Date(0).toISOString()}:null}else r=e.slice().sort((e,t)=>{let r=e.lastOpenedAt?new Date(e.lastOpenedAt).getTime():0,n=t.lastOpenedAt?new Date(t.lastOpenedAt).getTime():0;return n!==r?n-r:e.id<t.id?-1:+(e.id>t.id)})[0]}return r?.ssh&&await (0,a.ensureWorkspaceMounted)(r),r}async function o(e,t="read"){if("1"===process.env.WIKI_NO_AUTH){let r=await i(e);return r?"write"===t&&r.readOnly?{ok:!1,status:403,code:"WORKSPACE_READ_ONLY"}:{ok:!0,ws:r,rootDir:r.rootDir,userId:"local",isAdmin:!0}:{ok:!1,status:400,code:"WORKSPACE_REQUIRED"}}let s=await (0,r.requireUser)(e);if(!s.ok)return{ok:!1,status:401,code:"UNAUTHORIZED"};let l=await (0,n.isAdmin)(s.user.id,s.user.email),u=new URL(e.url).searchParams.get("ws")??e.headers.get("x-workspace")??null,d=await i(e);return d?(0,a.userCanAccess)(d,s.user.id,l)?"write"===t&&d.readOnly?{ok:!1,status:403,code:"WORKSPACE_READ_ONLY"}:{ok:!0,ws:d,rootDir:d.rootDir,userId:s.user.id,isAdmin:l}:{ok:!1,status:403,code:"WORKSPACE_FORBIDDEN"}:{ok:!1,status:u?404:400,code:u?"WORKSPACE_NOT_FOUND":"WORKSPACE_REQUIRED"}}async function l(e,t="read"){let r=await i(e);if(!r){let t=new URL(e.url).searchParams.get("ws")??e.headers.get("x-workspace")??null;return{ok:!1,status:t?404:400,code:t?"WORKSPACE_NOT_FOUND":"WORKSPACE_REQUIRED"}}return"write"===t&&r.readOnly?{ok:!1,status:403,code:"WORKSPACE_READ_ONLY"}:{ok:!0,ws:r,rootDir:r.rootDir}}e.s(["resolveWorkspaceForAgent",0,l,"resolveWorkspaceForUser",0,o])},814747,(e,t,r)=>{t.exports=e.x("path",()=>require("path"))},224361,(e,t,r)=>{t.exports=e.x("util",()=>require("util"))},688947,(e,t,r)=>{t.exports=e.x("stream",()=>require("stream"))},427699,(e,t,r)=>{t.exports=e.x("events",()=>require("events"))},228064,e=>{"use strict";var t=e.i(666680),r=e.i(912714),n=e.i(660526),s=e.i(750227),a=e.i(832852);let i="__registry__",o=new Map;function l(){let e=process.env.HOME??n.default.homedir();return s.default.join(e,".wiki-viewer")}function u(){return s.default.join(l(),"agents.json")}function d(e){return(0,t.createHash)("sha256").update(e,"utf8").digest("hex")}async function c(){try{let e=await (0,r.readFile)(u(),"utf8"),t=JSON.parse(e);return{version:1,agents:Array.isArray(t.agents)?t.agents:[]}}catch{return null}}async function p(e){await (0,r.mkdir)(l(),{recursive:!0});let t=u()+".tmp";await (0,r.writeFile)(t,JSON.stringify(e,null,2),{encoding:"utf8",mode:384});try{await (0,r.chmod)(t,384)}catch{}await (0,r.rename)(t,u())}async function h(){let e=await c();if(e)return e;let t={version:1,agents:[]};return await p(t),t}async function f(e){let r=await c();if(!r)return null;let n=d(e);for(let e of r.agents)if(function(e,r){let n=Buffer.from(e.padEnd(64,"0"),"utf8"),s=Buffer.from(r.padEnd(64,"0"),"utf8");return n.length===s.length&&(0,t.timingSafeEqual)(n,s)&&e.length===r.length}(e.tokenHash,n))return e;return null}async function g(e){await (0,a.withFileMutex)(i,async()=>{let t=await h(),r=t.agents.findIndex(t=>t.id===e.id);r>=0?t.agents[r]=e:t.agents.push(e),await p(t)})}async function m(e){return(0,a.withFileMutex)(i,async()=>{let t=await c();if(!t)return!1;let r=t.agents.length;return t.agents=t.agents.filter(t=>t.id!==e),t.agents.length!==r&&(await p(t),!0)})}async function w(e){Date.now()-(o.get(e)??0)<3e4||await (0,a.withFileMutex)(i,async()=>{let t=await c();if(!t)return;let r=t.agents.find(t=>t.id===e);r&&(r.lastSeen=new Date().toISOString(),o.set(e,Date.now()),await p(t))})}e.s(["addAgent",0,g,"hashToken",0,d,"lookupAgentByToken",0,f,"readRegistry",0,c,"removeAgent",0,m,"updateLastSeen",0,w])},215043,552350,e=>{"use strict";var t=e.i(228064);function r(e,t){return(function(e){let t="^",r=0;for(;r<e.length;)"*"===e[r]&&"*"===e[r+1]?(t+=".*","/"===e[r+=2]&&(t+="(?:.+/)?",r++)):("*"===e[r]?t+="[^/]*":"?"===e[r]?t+="[^/]":t+=e[r].replace(/[.+^${}()|[\]\\]/g,"\\$&"),r++);return new RegExp(t+="$")})(e).test(t)}e.s(["matchGlob",0,r],552350);var n=e.i(254226);async function s(e){let r=await (0,n.getSessionFromRequest)(e);if(r?.user){let e=r.user;return{ok:!0,agent:{id:`user:${e.id}`,displayName:e.name,tokenHash:"",scope:{paths:["**/*"],ops:["read","mutate","delete"]},createdAt:"",lastSeen:""}}}let s=e.headers.get("authorization")??"",a=s.startsWith("Bearer ")?s.slice(7).trim():"";if(!a)return{ok:!1,code:"UNAUTHORIZED",message:"No credentials"};let i=await (0,t.lookupAgentByToken)(a);if(!i)return{ok:!1,code:"UNAUTHORIZED",message:"Unknown or invalid token"};let o=e.headers.get("x-agent-id")??"";return o?o!==i.id?{ok:!1,code:"UNAUTHORIZED",message:"X-Agent-Id does not match token owner"}:((0,t.updateLastSeen)(i.id),{ok:!0,agent:i}):{ok:!1,code:"UNAUTHORIZED",message:"X-Agent-Id header required"}}process.env.AGENT_BEARER_TOKEN&&console.warn("[wiki-viewer] AGENT_BEARER_TOKEN is no longer used; manage agents via the AI Panel."),e.s(["checkAuth",0,s,"enforceScope",0,function(e,t){let{scope:n}=e;return void 0!==n.workspaceId&&void 0!==t.workspaceId&&n.workspaceId!==t.workspaceId?{ok:!1,code:"FORBIDDEN",message:`Agent scope does not cover workspace "${t.workspaceId}" (granted: "${n.workspaceId}")`}:n.ops.includes(t.op)?t.filePath&&!n.paths.some(e=>r(e,t.filePath))?{ok:!1,code:"FORBIDDEN",message:`Agent scope does not cover path "${t.filePath}"`}:{ok:!0}:{ok:!1,code:"FORBIDDEN",message:`Agent scope does not allow "${t.op}"`}},"verifyBy",0,function(e,t){return e.id.startsWith("user:")?!t||"owner"===t||"human"===t||t.startsWith("human:")||t===e.id?{ok:!0}:{ok:!1,code:"FORBIDDEN",message:'User agent must use "human", "owner", or own id in "by" field'}:t!==e.id?{ok:!1,code:"FORBIDDEN",message:`"by" field must equal agent id "${e.id}"`}:{ok:!0}}],215043)},413895,e=>{"use strict";var t=e.i(666680);let r=globalThis;r.__wvPendingRegs||(r.__wvPendingRegs=new Map);let n=r.__wvPendingRegs;e.s(["approveRegistration",0,function(e,t){let r=n.get(e);return!!r&&"pending"===r.status&&(r.status="approved",r.tokenPlaintext=t,r.resolvedAt=new Date().toISOString(),!0)},"consumeRegistration",0,function(e){let t=n.get(e);if(!t||"approved"!==t.status||!t.tokenPlaintext)return null;let r=t.tokenPlaintext;return t.status="consumed",t.tokenPlaintext=void 0,r},"createRegistration",0,function(e){let r=`reg_${(0,t.randomBytes)(16).toString("hex")}`,s={registrationId:r,agentId:e.agentId,displayName:e.displayName,requestedScope:e.requestedScope??{paths:["**/*"],ops:["read","mutate"]},requestedAt:new Date().toISOString(),status:"pending"};return n.set(r,s),s},"denyRegistration",0,function(e){let t=n.get(e);return!!t&&"pending"===t.status&&(t.status="denied",t.resolvedAt=new Date().toISOString(),!0)},"getRegistration",0,function(e){return n.get(e)},"listPendingRegistrations",0,function(){return[...n.values()].filter(e=>"pending"===e.status)}])},280137,e=>{"use strict";var t=e.i(364564),r=e.i(102095),n=e.i(691091),s=e.i(475331),a=e.i(490301),i=e.i(670943),o=e.i(690324),l=e.i(243133),u=e.i(404870),d=e.i(420180),c=e.i(867883),p=e.i(336708),h=e.i(682278),f=e.i(157569),g=e.i(844146),m=e.i(193695);e.i(105888);var w=e.i(530564),v=e.i(702414),R=e.i(215043),_=e.i(660038),k=e.i(228064),A=e.i(413895);async function y(e){let t=await (0,R.checkAuth)(e);if(!t.ok)return v.NextResponse.json({error:"UNAUTHORIZED"},{status:401});let r=await (0,_.resolveWorkspaceForAgent)(e);if(!r.ok)return v.NextResponse.json({error:r.code},{status:r.status});let{ws:n,rootDir:s}=r,a=(0,R.enforceScope)(t.agent,{op:"read",workspaceId:n.id});if(!a.ok)return v.NextResponse.json({error:a.code,message:a.message},{status:403});let i=await (0,k.readRegistry)(),o=i?.agents.length??0,l=(0,A.listPendingRegistrations)().length;return v.NextResponse.json({rateLimit:Number(process.env.AGENT_RATE_LIMIT)||60,root:s,registeredAgents:o,pendingRegistrations:l})}e.s(["GET",0,y,"runtime",0,"nodejs"],232229);var E=e.i(232229);let I=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/agent/settings/route",pathname:"/api/agent/settings",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/agent/settings/route.ts",nextConfigOutput:"standalone",userland:E,...{}}),{workAsyncStorage:O,workUnitAsyncStorage:D,serverHooks:x}=I;async function N(e,t,n){n.requestMeta&&(0,s.setRequestMeta)(e,n.requestMeta),I.isDev&&(0,s.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let v="/api/agent/settings/route";v=v.replace(/\/index$/,"")||"/";let R=await I.prepare(e,t,{srcPage:v,multiZoneDraftMode:!1});if(!R)return t.statusCode=400,t.end("Bad Request"),null==n.waitUntil||n.waitUntil.call(n,Promise.resolve()),null;let{buildId:_,params:k,nextConfig:A,parsedUrl:y,isDraftMode:E,prerenderManifest:O,routerServerContext:D,isOnDemandRevalidate:x,revalidateOnlyGenerated:N,resolvedPathname:P,clientReferenceManifest:S,serverActionsManifest:T}=R,C=(0,o.normalizeAppPath)(v),U=!!(O.dynamicRoutes[C]||O.routes[P]),b=async()=>((null==D?void 0:D.render404)?await D.render404(e,t,y,!1):t.end("This page could not be found"),null);if(U&&!E){let e=!!O.routes[P],t=O.dynamicRoutes[C];if(t&&!1===t.fallback&&!e){if(A.adapterPath)return await b();throw new m.NoFallbackError}}let q=null;!U||I.isDev||E||(q="/index"===(q=P)?"/":q);let M=!0===I.isDev||!U,j=U&&!M;T&&S&&(0,i.setManifestsSingleton)({page:v,clientReferenceManifest:S,serverActionsManifest:T});let H=e.method||"GET",F=(0,a.getTracer)(),$=F.getActiveScopeSpan(),W=!!(null==D?void 0:D.isWrappedByNextServer),B=!!(0,s.getRequestMeta)(e,"minimalMode"),K=(0,s.getRequestMeta)(e,"incrementalCache")||await I.getIncrementalCache(e,A,O,B);null==K||K.resetRequestCache(),globalThis.__incrementalCache=K;let L={params:k,previewProps:O.preview,renderOpts:{experimental:{authInterrupts:!!A.experimental.authInterrupts},cacheComponents:!!A.cacheComponents,supportsDynamicResponse:M,incrementalCache:K,cacheLifeProfiles:A.cacheLife,waitUntil:n.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,n,s)=>I.onRequestError(e,t,n,s,D)},sharedContext:{buildId:_}},z=new l.NodeNextRequest(e),Z=new l.NodeNextResponse(t),G=u.NextRequestAdapter.fromNodeNextRequest(z,(0,u.signalFromNodeResponse)(t));try{let s,i=async e=>I.handle(G,L).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=F.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==d.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let n=r.get("next.route");if(n){let t=`${H} ${n}`;e.setAttributes({"next.route":n,"http.route":n,"next.span_name":t}),e.updateName(t),s&&s!==e&&(s.setAttribute("http.route",n),s.updateName(t))}else e.updateName(`${H} ${v}`)}),o=async s=>{var a,o;let l=async({previousCacheEntry:r})=>{try{if(!B&&x&&N&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let a=await i(s);e.fetchMetrics=L.renderOpts.fetchMetrics;let o=L.renderOpts.pendingWaitUntil;o&&n.waitUntil&&(n.waitUntil(o),o=void 0);let l=L.renderOpts.collectedTags;if(!U)return await (0,p.sendResponse)(z,Z,a,L.renderOpts.pendingWaitUntil),null;{let e=await a.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(a.headers);l&&(t[g.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==L.renderOpts.collectedRevalidate&&!(L.renderOpts.collectedRevalidate>=g.INFINITE_CACHE)&&L.renderOpts.collectedRevalidate,n=void 0===L.renderOpts.collectedExpire||L.renderOpts.collectedExpire>=g.INFINITE_CACHE?void 0:L.renderOpts.collectedExpire;return{value:{kind:w.CachedRouteKind.APP_ROUTE,status:a.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:n}}}}catch(t){throw(null==r?void 0:r.isStale)&&await I.onRequestError(e,t,{routerKind:"App Router",routePath:v,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:j,isOnDemandRevalidate:x})},!1,D),t}},u=await I.handleResponse({req:e,nextConfig:A,cacheKey:q,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:O,isRoutePPREnabled:!1,isOnDemandRevalidate:x,revalidateOnlyGenerated:N,responseGenerator:l,waitUntil:n.waitUntil,isMinimalMode:B});if(!U)return null;if((null==u||null==(a=u.value)?void 0:a.kind)!==w.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==u||null==(o=u.value)?void 0:o.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});B||t.setHeader("x-nextjs-cache",x?"REVALIDATED":u.isMiss?"MISS":u.isStale?"STALE":"HIT"),E&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let d=(0,h.fromNodeOutgoingHttpHeaders)(u.value.headers);return B&&U||d.delete(g.NEXT_CACHE_TAGS_HEADER),!u.cacheControl||t.getHeader("Cache-Control")||d.get("Cache-Control")||d.set("Cache-Control",(0,f.getCacheControlHeader)(u.cacheControl)),await (0,p.sendResponse)(z,Z,new Response(u.value.body,{headers:d,status:u.value.status||200})),null};W&&$?await o($):(s=F.getActiveScopeSpan(),await F.withPropagatedContext(e.headers,()=>F.trace(d.BaseServerSpan.handleRequest,{spanName:`${H} ${v}`,kind:a.SpanKind.SERVER,attributes:{"http.method":H,"http.target":e.url}},o),void 0,!W))}catch(t){if(t instanceof m.NoFallbackError||await I.onRequestError(e,t,{routerKind:"App Router",routePath:C,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:j,isOnDemandRevalidate:x})},!1,D),U)throw t;return await (0,p.sendResponse)(z,Z,new Response(null,{status:500})),null}}e.s(["handler",0,N,"patchFetch",0,function(){return(0,n.patchFetch)({workAsyncStorage:O,workUnitAsyncStorage:D})},"routeModule",0,I,"serverHooks",0,x,"workAsyncStorage",0,O,"workUnitAsyncStorage",0,D],280137)},168315,e=>{e.v(t=>Promise.all(["server/chunks/0sag_@better-auth_memory-adapter_dist_index_mjs_0pvj6im._.js"].map(t=>e.l(t))).then(()=>t(862112)))},317691,e=>{e.v(t=>Promise.all(["server/chunks/0dhv_better-auth_dist_adapters_kysely-adapter_index_mjs_0t4t4z8._.js"].map(t=>e.l(t))).then(()=>t(833412)))},580632,e=>{e.v(e=>Promise.resolve().then(()=>e(270406)))},947559,e=>{e.v(t=>Promise.all(["server/chunks/0ugq_@better-auth_kysely-adapter_dist_bun-sqlite-dialect-DzNwOpKv_mjs_0z1z6m4._.js"].map(t=>e.l(t))).then(()=>t(495181)))},715018,e=>{e.v(t=>Promise.all(["server/chunks/0ugq_@better-auth_kysely-adapter_dist_node-sqlite-dialect_mjs_0qqlvhl._.js"].map(t=>e.l(t))).then(()=>t(698370)))},146843,e=>{e.v(t=>Promise.all(["server/chunks/0ugq_@better-auth_kysely-adapter_dist_d1-sqlite-dialect-C2B7YsIT_mjs_0wynrz3._.js"].map(t=>e.l(t))).then(()=>t(143740)))},84040,e=>{e.v(t=>Promise.all(["server/chunks/0p91_next_0h94sj1._.js"].map(t=>e.l(t))).then(()=>t(815068)))},427669,e=>{e.v(e=>Promise.resolve().then(()=>e(177730)))},687903,e=>{e.v(e=>Promise.resolve().then(()=>e(912714)))},754121,e=>{e.v(t=>Promise.all(["server/chunks/[root-of-the-server]__0d7zxm_._.js","server/chunks/src_lib_search_0ymmp0c._.js"].map(t=>e.l(t))).then(()=>t(437856)))}];
1
+ module.exports=[874533,(e,t,r)=>{t.exports=e.x("node:child_process",()=>require("node:child_process"))},812057,(e,t,r)=>{t.exports=e.x("node:util",()=>require("node:util"))},834938,e=>{"use strict";let t;var r=e.i(874533),n=e.i(812057),s=e.i(912714),a=e.i(750227),i=e.i(660526);let o=(0,n.promisify)(r.execFile),l=/[;|&$`<>(){}\n\r\0]/;function u(){return a.default.join(i.default.homedir(),".wiki-viewer","mounts")}async function d(){if(!0!==t)try{await o("sshfs",["--version"]),t=!0}catch{throw Error("sshfs binary not found. Install sshfs + FUSE (e.g. `apt install sshfs`, `brew install macfuse sshfs`) and ensure it is on PATH.")}}async function c(t){var r;let n=a.default.resolve(t),i=!1;try{i=(await (0,s.readFile)("/proc/mounts","utf8")).split("\n").some(e=>{let t=e.split(" ");return t[1]===n&&/fuse/.test(t[2]??"")})}catch{i=!1}return!!i&&(r=n,new Promise(t=>{let n=!1,s=setTimeout(()=>{n||(n=!0,t(!1))},4e3);e.A(687903).then(({readdir:e})=>e(r)).then(()=>{n||(n=!0,clearTimeout(s),t(!0))}).catch(()=>{n||(n=!0,clearTimeout(s),t(!1))})}))}async function p(e){await d(),await (0,s.mkdir)(e.mountpoint,{recursive:!0});let t=function(e){let{target:t,mountpoint:r,port:n,authMethod:s,keyPath:a,readOnly:i}=e,o=t.user?`${t.user}@`:"",l=[`${o}${t.host}:${t.remotePath}`,r];n&&Number.isInteger(n)&&n>0&&n<65536&&l.push("-p",String(n));let u=["reconnect","ServerAliveInterval=15","ServerAliveCountMax=3","compression=yes","cache=yes","kernel_cache","StrictHostKeyChecking=accept-new","BatchMode=yes"];if(i&&u.push("ro"),"keyfile"===s&&a&&(u.push(`IdentityFile=${a}`),u.push("IdentitiesOnly=yes")),"password"===s){let e=u.indexOf("BatchMode=yes");e>=0&&u.splice(e,1),u.push("password_stdin"),u.push("PreferredAuthentications=password,keyboard-interactive"),u.push("PubkeyAuthentication=no"),u.push("NumberOfPasswordPrompts=1")}return e.extraOptions&&u.push(...e.extraOptions),l.push("-o",u.join(",")),l}(e);if(await new Promise((n,s)=>{let a=(0,r.spawn)("sshfs",t,{stdio:["pipe","ignore","pipe"]}),i="",o=setTimeout(()=>{a.kill("SIGKILL"),s(Error("sshfs mount timed out after 25s."))},25e3);a.stderr?.on("data",e=>{i+=e.toString()}),a.on("error",e=>{clearTimeout(o),s(e.message.includes("ENOENT")?Error("sshfs binary not found on PATH."):e)}),a.on("close",e=>{clearTimeout(o),0===e?n():s(Error(`sshfs exited ${e}: ${i.trim()||"mount failed"}`))}),"password"===e.authMethod&&a.stdin?.write((e.password??"")+"\n"),a.stdin?.end()}),!await c(e.mountpoint))throw Error("sshfs reported success but the mount is not live.")}async function h(e){let t=a.default.resolve(e);for(let[e,r]of[["fusermount",["-u","-z",t]],["umount",[t]]])try{await o(e,r);break}catch{}try{await (0,s.rmdir)(t)}catch{}}e.s(["assertSshfsAvailable",0,d,"isMounted",0,c,"isValidKeyPath",0,function(e){return!(!e||l.test(e)||e.includes(".."))&&(e.startsWith("/")||e.startsWith("~/"))},"mountSshfs",0,p,"mountpointFor",0,function(e){return a.default.join(u(),e)},"mountsDir",0,u,"parseSshTarget",0,function(e){let t;if(!e||l.test(e))return null;let r=e.trim(),n=r.indexOf(":");if(n<=0)return null;let s=r.slice(0,n),a=r.slice(n+1);if(!a.startsWith("/")||a.includes(".."))return null;let i=s,o=s.indexOf("@");return o>=0&&(t=s.slice(0,o),i=s.slice(o+1),!t)?null:i&&/^[a-zA-Z0-9.\-]+$/.test(i)&&(!t||/^[a-zA-Z0-9._\-]+$/.test(t))?{user:t,host:i,remotePath:a}:null},"unmountSshfs",0,h])},583627,e=>{"use strict";var t=e.i(798003),r=e.i(254226);function n(){return(process.env.WIKI_ADMIN_EMAILS??"").split(",").map(e=>e.trim().toLowerCase()).filter(Boolean)}async function s(e,r){if(r){let e=n();if(e.length>0&&e.includes(r.toLowerCase()))return!0}return((await (0,t.readConfig)()).adminUserIds??[]).includes(e)}async function a(){return(await (0,t.readConfig)()).adminUserIds??[]}async function i(e){await (0,t.updateConfig)(t=>{let r=t.adminUserIds??[];return r.includes(e)?t:{...t,adminUserIds:[...r,e]}})}async function o(e){let r=n().length>0,s=!1;if(await (0,t.updateConfig)(t=>{let n=(t.adminUserIds??[]).filter(t=>t!==e);return 0!==n.length||r?{...t,adminUserIds:n}:(s=!0,t)}),s)throw Error("LAST_ADMIN: cannot remove the last admin with no WIKI_ADMIN_EMAILS configured")}async function l(e){if(n().length>0||((await (0,t.readConfig)()).adminUserIds??[]).length>0)return;let r=!1;await (0,t.updateConfig)(t=>(t.adminUserIds??[]).length>0?t:(r=!0,{...t,adminUserIds:[e]})),r&&console.log(`[wiki-viewer] Bootstrap: first user ${e} promoted to admin`)}async function u(e){if("1"===process.env.WIKI_NO_AUTH)return{ok:!0,user:{id:"local",email:"local@localhost",name:"local"}};let t=await (0,r.requireUser)(e);return t.ok?await s(t.user.id,t.user.email)?{ok:!0,user:t.user}:{ok:!1,status:403,code:"ADMIN_REQUIRED"}:{ok:!1,status:401,code:"UNAUTHORIZED"}}e.s(["addAdmin",0,i,"ensureBootstrapAdmin",0,l,"isAdmin",0,s,"listAdmins",0,a,"removeAdmin",0,o,"requireAdmin",0,u])},504445,e=>{"use strict";var t=e.i(750227);let r=globalThis;!r.__wikiRootDir&&process.env.ROOT_DIR&&(r.__wikiRootDir=t.default.resolve(process.env.ROOT_DIR)),e.s(["clearRootDir",0,function(){r.__wikiRootDir=void 0},"getRootDir",0,function(){return r.__wikiRootDir??""},"isRootDirSet",0,function(){return!!r.__wikiRootDir},"setRootDir",0,function(e){r.__wikiRootDir=t.default.resolve(e)}])},660038,e=>{"use strict";var t=e.i(750227),r=e.i(254226),n=e.i(583627),s=e.i(504445),a=e.i(359211);async function i(e){let r;await (0,a.migrateConfigToWorkspaces)();let n=new URL(e.url).searchParams.get("ws")??e.headers.get("x-workspace")??null;if(n)r=await (0,a.getWorkspace)(n)??null;else{let e=await (0,a.listWorkspaces)();if(0===e.length){let e;r=(e=(0,s.getRootDir)())?{id:"ws_default",name:t.default.basename(e)||"workspace",rootDir:e,createdAt:new Date(0).toISOString()}:null}else r=e.slice().sort((e,t)=>{let r=e.lastOpenedAt?new Date(e.lastOpenedAt).getTime():0,n=t.lastOpenedAt?new Date(t.lastOpenedAt).getTime():0;return n!==r?n-r:e.id<t.id?-1:+(e.id>t.id)})[0]}return r?.ssh&&await (0,a.ensureWorkspaceMounted)(r),r}async function o(e,t="read"){if("1"===process.env.WIKI_NO_AUTH){let r=await i(e);return r?"write"===t&&r.readOnly?{ok:!1,status:403,code:"WORKSPACE_READ_ONLY"}:{ok:!0,ws:r,rootDir:r.rootDir,userId:"local",isAdmin:!0}:{ok:!1,status:400,code:"WORKSPACE_REQUIRED"}}let s=await (0,r.requireUser)(e);if(!s.ok)return{ok:!1,status:401,code:"UNAUTHORIZED"};let l=await (0,n.isAdmin)(s.user.id,s.user.email),u=new URL(e.url).searchParams.get("ws")??e.headers.get("x-workspace")??null,d=await i(e);return d?(0,a.userCanAccess)(d,s.user.id,l)?"write"===t&&d.readOnly?{ok:!1,status:403,code:"WORKSPACE_READ_ONLY"}:{ok:!0,ws:d,rootDir:d.rootDir,userId:s.user.id,isAdmin:l}:{ok:!1,status:403,code:"WORKSPACE_FORBIDDEN"}:{ok:!1,status:u?404:400,code:u?"WORKSPACE_NOT_FOUND":"WORKSPACE_REQUIRED"}}async function l(e,t="read"){let r=await i(e);if(!r){let t=new URL(e.url).searchParams.get("ws")??e.headers.get("x-workspace")??null;return{ok:!1,status:t?404:400,code:t?"WORKSPACE_NOT_FOUND":"WORKSPACE_REQUIRED"}}return"write"===t&&r.readOnly?{ok:!1,status:403,code:"WORKSPACE_READ_ONLY"}:{ok:!0,ws:r,rootDir:r.rootDir}}e.s(["resolveWorkspaceForAgent",0,l,"resolveWorkspaceForUser",0,o])},814747,(e,t,r)=>{t.exports=e.x("path",()=>require("path"))},224361,(e,t,r)=>{t.exports=e.x("util",()=>require("util"))},688947,(e,t,r)=>{t.exports=e.x("stream",()=>require("stream"))},427699,(e,t,r)=>{t.exports=e.x("events",()=>require("events"))},228064,e=>{"use strict";var t=e.i(666680),r=e.i(912714),n=e.i(660526),s=e.i(750227),a=e.i(832852);let i="__registry__",o=new Map;function l(){let e=process.env.HOME??n.default.homedir();return s.default.join(e,".wiki-viewer")}function u(){return s.default.join(l(),"agents.json")}function d(e){return(0,t.createHash)("sha256").update(e,"utf8").digest("hex")}async function c(){try{let e=await (0,r.readFile)(u(),"utf8"),t=JSON.parse(e);return{version:1,agents:Array.isArray(t.agents)?t.agents:[]}}catch{return null}}async function p(e){await (0,r.mkdir)(l(),{recursive:!0});let t=u()+".tmp";await (0,r.writeFile)(t,JSON.stringify(e,null,2),{encoding:"utf8",mode:384});try{await (0,r.chmod)(t,384)}catch{}await (0,r.rename)(t,u())}async function h(){let e=await c();if(e)return e;let t={version:1,agents:[]};return await p(t),t}async function f(e){let r=await c();if(!r)return null;let n=d(e);for(let e of r.agents)if(function(e,r){let n=Buffer.from(e.padEnd(64,"0"),"utf8"),s=Buffer.from(r.padEnd(64,"0"),"utf8");return n.length===s.length&&(0,t.timingSafeEqual)(n,s)&&e.length===r.length}(e.tokenHash,n))return e;return null}async function g(e){await (0,a.withFileMutex)(i,async()=>{let t=await h(),r=t.agents.findIndex(t=>t.id===e.id);r>=0?t.agents[r]=e:t.agents.push(e),await p(t)})}async function m(e){return(0,a.withFileMutex)(i,async()=>{let t=await c();if(!t)return!1;let r=t.agents.length;return t.agents=t.agents.filter(t=>t.id!==e),t.agents.length!==r&&(await p(t),!0)})}async function w(e){Date.now()-(o.get(e)??0)<3e4||await (0,a.withFileMutex)(i,async()=>{let t=await c();if(!t)return;let r=t.agents.find(t=>t.id===e);r&&(r.lastSeen=new Date().toISOString(),o.set(e,Date.now()),await p(t))})}e.s(["addAgent",0,g,"hashToken",0,d,"lookupAgentByToken",0,f,"readRegistry",0,c,"removeAgent",0,m,"updateLastSeen",0,w])},215043,552350,e=>{"use strict";var t=e.i(228064);function r(e,t){return(function(e){let t="^",r=0;for(;r<e.length;)"*"===e[r]&&"*"===e[r+1]?(t+=".*","/"===e[r+=2]&&(t+="(?:.+/)?",r++)):("*"===e[r]?t+="[^/]*":"?"===e[r]?t+="[^/]":t+=e[r].replace(/[.+^${}()|[\]\\]/g,"\\$&"),r++);return new RegExp(t+="$")})(e).test(t)}e.s(["matchGlob",0,r],552350);var n=e.i(254226);async function s(e){let r=await (0,n.getSessionFromRequest)(e);if(r?.user){let e=r.user;return{ok:!0,agent:{id:`user:${e.id}`,displayName:e.name,tokenHash:"",scope:{paths:["**/*"],ops:["read","mutate","delete"]},createdAt:"",lastSeen:""}}}let s=e.headers.get("authorization")??"",a=s.startsWith("Bearer ")?s.slice(7).trim():"";if(!a)return{ok:!1,code:"UNAUTHORIZED",message:"No credentials"};let i=await (0,t.lookupAgentByToken)(a);if(!i)return{ok:!1,code:"UNAUTHORIZED",message:"Unknown or invalid token"};let o=e.headers.get("x-agent-id")??"";return o?o!==i.id?{ok:!1,code:"UNAUTHORIZED",message:"X-Agent-Id does not match token owner"}:((0,t.updateLastSeen)(i.id),{ok:!0,agent:i}):{ok:!1,code:"UNAUTHORIZED",message:"X-Agent-Id header required"}}process.env.AGENT_BEARER_TOKEN&&console.warn("[wiki-viewer] AGENT_BEARER_TOKEN is no longer used; manage agents via the AI Panel."),e.s(["checkAuth",0,s,"enforceScope",0,function(e,t){let{scope:n}=e;return void 0!==n.workspaceId&&void 0!==t.workspaceId&&n.workspaceId!==t.workspaceId?{ok:!1,code:"FORBIDDEN",message:`Agent scope does not cover workspace "${t.workspaceId}" (granted: "${n.workspaceId}")`}:n.ops.includes(t.op)?t.filePath&&!n.paths.some(e=>r(e,t.filePath))?{ok:!1,code:"FORBIDDEN",message:`Agent scope does not cover path "${t.filePath}"`}:{ok:!0}:{ok:!1,code:"FORBIDDEN",message:`Agent scope does not allow "${t.op}"`}},"verifyBy",0,function(e,t){return e.id.startsWith("user:")?!t||"owner"===t||"human"===t||t.startsWith("human:")||t===e.id?{ok:!0}:{ok:!1,code:"FORBIDDEN",message:'User agent must use "human", "owner", or own id in "by" field'}:t!==e.id?{ok:!1,code:"FORBIDDEN",message:`"by" field must equal agent id "${e.id}"`}:{ok:!0}}],215043)},413895,e=>{"use strict";var t=e.i(666680);let r=globalThis;r.__wvPendingRegs||(r.__wvPendingRegs=new Map);let n=r.__wvPendingRegs;e.s(["approveRegistration",0,function(e,t){let r=n.get(e);return!!r&&"pending"===r.status&&(r.status="approved",r.tokenPlaintext=t,r.resolvedAt=new Date().toISOString(),!0)},"consumeRegistration",0,function(e){let t=n.get(e);if(!t||"approved"!==t.status||!t.tokenPlaintext)return null;let r=t.tokenPlaintext;return t.status="consumed",t.tokenPlaintext=void 0,r},"createRegistration",0,function(e){let r=`reg_${(0,t.randomBytes)(16).toString("hex")}`,s={registrationId:r,agentId:e.agentId,displayName:e.displayName,requestedScope:e.requestedScope??{paths:["**/*"],ops:["read","mutate"]},requestedAt:new Date().toISOString(),status:"pending"};return n.set(r,s),s},"denyRegistration",0,function(e){let t=n.get(e);return!!t&&"pending"===t.status&&(t.status="denied",t.resolvedAt=new Date().toISOString(),!0)},"getRegistration",0,function(e){return n.get(e)},"listPendingRegistrations",0,function(){return[...n.values()].filter(e=>"pending"===e.status)}])},280137,e=>{"use strict";var t=e.i(364564),r=e.i(102095),n=e.i(691091),s=e.i(475331),a=e.i(490301),i=e.i(670943),o=e.i(690324),l=e.i(243133),u=e.i(404870),d=e.i(420180),c=e.i(867883),p=e.i(336708),h=e.i(682278),f=e.i(157569),g=e.i(844146),m=e.i(193695);e.i(105888);var w=e.i(530564),v=e.i(702414),R=e.i(215043),_=e.i(660038),k=e.i(228064),A=e.i(413895);async function y(e){let t=await (0,R.checkAuth)(e);if(!t.ok)return v.NextResponse.json({error:"UNAUTHORIZED"},{status:401});let r=await (0,_.resolveWorkspaceForAgent)(e);if(!r.ok)return v.NextResponse.json({error:r.code},{status:r.status});let{ws:n,rootDir:s}=r,a=(0,R.enforceScope)(t.agent,{op:"read",workspaceId:n.id});if(!a.ok)return v.NextResponse.json({error:a.code,message:a.message},{status:403});let i=await (0,k.readRegistry)(),o=i?.agents.length??0,l=(0,A.listPendingRegistrations)().length;return v.NextResponse.json({rateLimit:Number(process.env.AGENT_RATE_LIMIT)||60,root:s,registeredAgents:o,pendingRegistrations:l})}e.s(["GET",0,y,"runtime",0,"nodejs"],232229);var E=e.i(232229);let I=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/agent/settings/route",pathname:"/api/agent/settings",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/agent/settings/route.ts",nextConfigOutput:"standalone",userland:E,...{}}),{workAsyncStorage:O,workUnitAsyncStorage:D,serverHooks:x}=I;async function N(e,t,n){n.requestMeta&&(0,s.setRequestMeta)(e,n.requestMeta),I.isDev&&(0,s.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let v="/api/agent/settings/route";v=v.replace(/\/index$/,"")||"/";let R=await I.prepare(e,t,{srcPage:v,multiZoneDraftMode:!1});if(!R)return t.statusCode=400,t.end("Bad Request"),null==n.waitUntil||n.waitUntil.call(n,Promise.resolve()),null;let{buildId:_,params:k,nextConfig:A,parsedUrl:y,isDraftMode:E,prerenderManifest:O,routerServerContext:D,isOnDemandRevalidate:x,revalidateOnlyGenerated:N,resolvedPathname:P,clientReferenceManifest:S,serverActionsManifest:T}=R,C=(0,o.normalizeAppPath)(v),U=!!(O.dynamicRoutes[C]||O.routes[P]),b=async()=>((null==D?void 0:D.render404)?await D.render404(e,t,y,!1):t.end("This page could not be found"),null);if(U&&!E){let e=!!O.routes[P],t=O.dynamicRoutes[C];if(t&&!1===t.fallback&&!e){if(A.adapterPath)return await b();throw new m.NoFallbackError}}let q=null;!U||I.isDev||E||(q="/index"===(q=P)?"/":q);let M=!0===I.isDev||!U,j=U&&!M;T&&S&&(0,i.setManifestsSingleton)({page:v,clientReferenceManifest:S,serverActionsManifest:T});let H=e.method||"GET",F=(0,a.getTracer)(),$=F.getActiveScopeSpan(),W=!!(null==D?void 0:D.isWrappedByNextServer),B=!!(0,s.getRequestMeta)(e,"minimalMode"),K=(0,s.getRequestMeta)(e,"incrementalCache")||await I.getIncrementalCache(e,A,O,B);null==K||K.resetRequestCache(),globalThis.__incrementalCache=K;let L={params:k,previewProps:O.preview,renderOpts:{experimental:{authInterrupts:!!A.experimental.authInterrupts},cacheComponents:!!A.cacheComponents,supportsDynamicResponse:M,incrementalCache:K,cacheLifeProfiles:A.cacheLife,waitUntil:n.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,n,s)=>I.onRequestError(e,t,n,s,D)},sharedContext:{buildId:_}},z=new l.NodeNextRequest(e),Z=new l.NodeNextResponse(t),G=u.NextRequestAdapter.fromNodeNextRequest(z,(0,u.signalFromNodeResponse)(t));try{let s,i=async e=>I.handle(G,L).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=F.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==d.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let n=r.get("next.route");if(n){let t=`${H} ${n}`;e.setAttributes({"next.route":n,"http.route":n,"next.span_name":t}),e.updateName(t),s&&s!==e&&(s.setAttribute("http.route",n),s.updateName(t))}else e.updateName(`${H} ${v}`)}),o=async s=>{var a,o;let l=async({previousCacheEntry:r})=>{try{if(!B&&x&&N&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let a=await i(s);e.fetchMetrics=L.renderOpts.fetchMetrics;let o=L.renderOpts.pendingWaitUntil;o&&n.waitUntil&&(n.waitUntil(o),o=void 0);let l=L.renderOpts.collectedTags;if(!U)return await (0,p.sendResponse)(z,Z,a,L.renderOpts.pendingWaitUntil),null;{let e=await a.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(a.headers);l&&(t[g.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==L.renderOpts.collectedRevalidate&&!(L.renderOpts.collectedRevalidate>=g.INFINITE_CACHE)&&L.renderOpts.collectedRevalidate,n=void 0===L.renderOpts.collectedExpire||L.renderOpts.collectedExpire>=g.INFINITE_CACHE?void 0:L.renderOpts.collectedExpire;return{value:{kind:w.CachedRouteKind.APP_ROUTE,status:a.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:n}}}}catch(t){throw(null==r?void 0:r.isStale)&&await I.onRequestError(e,t,{routerKind:"App Router",routePath:v,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:j,isOnDemandRevalidate:x})},!1,D),t}},u=await I.handleResponse({req:e,nextConfig:A,cacheKey:q,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:O,isRoutePPREnabled:!1,isOnDemandRevalidate:x,revalidateOnlyGenerated:N,responseGenerator:l,waitUntil:n.waitUntil,isMinimalMode:B});if(!U)return null;if((null==u||null==(a=u.value)?void 0:a.kind)!==w.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==u||null==(o=u.value)?void 0:o.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});B||t.setHeader("x-nextjs-cache",x?"REVALIDATED":u.isMiss?"MISS":u.isStale?"STALE":"HIT"),E&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let d=(0,h.fromNodeOutgoingHttpHeaders)(u.value.headers);return B&&U||d.delete(g.NEXT_CACHE_TAGS_HEADER),!u.cacheControl||t.getHeader("Cache-Control")||d.get("Cache-Control")||d.set("Cache-Control",(0,f.getCacheControlHeader)(u.cacheControl)),await (0,p.sendResponse)(z,Z,new Response(u.value.body,{headers:d,status:u.value.status||200})),null};W&&$?await o($):(s=F.getActiveScopeSpan(),await F.withPropagatedContext(e.headers,()=>F.trace(d.BaseServerSpan.handleRequest,{spanName:`${H} ${v}`,kind:a.SpanKind.SERVER,attributes:{"http.method":H,"http.target":e.url}},o),void 0,!W))}catch(t){if(t instanceof m.NoFallbackError||await I.onRequestError(e,t,{routerKind:"App Router",routePath:C,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:j,isOnDemandRevalidate:x})},!1,D),U)throw t;return await (0,p.sendResponse)(z,Z,new Response(null,{status:500})),null}}e.s(["handler",0,N,"patchFetch",0,function(){return(0,n.patchFetch)({workAsyncStorage:O,workUnitAsyncStorage:D})},"routeModule",0,I,"serverHooks",0,x,"workAsyncStorage",0,O,"workUnitAsyncStorage",0,D],280137)},168315,e=>{e.v(t=>Promise.all(["server/chunks/0sag_@better-auth_memory-adapter_dist_index_mjs_0pvj6im._.js"].map(t=>e.l(t))).then(()=>t(862112)))},317691,e=>{e.v(t=>Promise.all(["server/chunks/0dhv_better-auth_dist_adapters_kysely-adapter_index_mjs_0t4t4z8._.js"].map(t=>e.l(t))).then(()=>t(833412)))},580632,e=>{e.v(e=>Promise.resolve().then(()=>e(270406)))},947559,e=>{e.v(t=>Promise.all(["server/chunks/0ugq_@better-auth_kysely-adapter_dist_bun-sqlite-dialect-DzNwOpKv_mjs_0z1z6m4._.js"].map(t=>e.l(t))).then(()=>t(495181)))},715018,e=>{e.v(t=>Promise.all(["server/chunks/0ugq_@better-auth_kysely-adapter_dist_node-sqlite-dialect_mjs_0qqlvhl._.js"].map(t=>e.l(t))).then(()=>t(698370)))},146843,e=>{e.v(t=>Promise.all(["server/chunks/0ugq_@better-auth_kysely-adapter_dist_d1-sqlite-dialect-C2B7YsIT_mjs_0wynrz3._.js"].map(t=>e.l(t))).then(()=>t(143740)))},84040,e=>{e.v(t=>Promise.all(["server/chunks/0p91_next_0h94sj1._.js"].map(t=>e.l(t))).then(()=>t(815068)))},427669,e=>{e.v(e=>Promise.resolve().then(()=>e(177730)))},687903,e=>{e.v(e=>Promise.resolve().then(()=>e(912714)))},754121,e=>{e.v(t=>Promise.all(["server/chunks/[root-of-the-server]__0d7zxm_._.js","server/chunks/src_lib_search_0ymmp0c._.js"].map(t=>e.l(t))).then(()=>t(437856)))}];
2
2
 
3
- //# sourceMappingURL=%5Broot-of-the-server%5D__000spch._.js.map
3
+ //# sourceMappingURL=%5Broot-of-the-server%5D__096dpr1._.js.map