wiki-viewer 1.14.2 → 2.0.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 (250) hide show
  1. package/.next/standalone/.next/BUILD_ID +1 -1
  2. package/.next/standalone/.next/build-manifest.json +3 -3
  3. package/.next/standalone/.next/server/app/_global-error.html +1 -1
  4. package/.next/standalone/.next/server/app/_global-error.rsc +1 -1
  5. package/.next/standalone/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  6. package/.next/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  7. package/.next/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  8. package/.next/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  9. package/.next/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  10. package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  11. package/.next/standalone/.next/server/app/_not-found.html +1 -1
  12. package/.next/standalone/.next/server/app/_not-found.rsc +2 -2
  13. package/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
  14. package/.next/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  15. package/.next/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
  16. package/.next/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  17. package/.next/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  18. package/.next/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  19. package/.next/standalone/.next/server/app/api/agent/activity/route.js +6 -6
  20. package/.next/standalone/.next/server/app/api/agent/activity/route.js.nft.json +1 -1
  21. package/.next/standalone/.next/server/app/api/agent/events/[...path]/route.js +8 -8
  22. package/.next/standalone/.next/server/app/api/agent/events/[...path]/route.js.nft.json +1 -1
  23. package/.next/standalone/.next/server/app/api/agent/files/[...path]/route.js +9 -9
  24. package/.next/standalone/.next/server/app/api/agent/files/[...path]/route.js.nft.json +1 -1
  25. package/.next/standalone/.next/server/app/api/agent/fs/file/[...path]/route.js +8 -8
  26. package/.next/standalone/.next/server/app/api/agent/fs/file/[...path]/route.js.nft.json +1 -1
  27. package/.next/standalone/.next/server/app/api/agent/fs/ls/[[...path]]/route.js +8 -8
  28. package/.next/standalone/.next/server/app/api/agent/fs/ls/[[...path]]/route.js.nft.json +1 -1
  29. package/.next/standalone/.next/server/app/api/agent/fs/move/route.js +8 -8
  30. package/.next/standalone/.next/server/app/api/agent/fs/move/route.js.nft.json +1 -1
  31. package/.next/standalone/.next/server/app/api/agent/fs/search/route.js +9 -9
  32. package/.next/standalone/.next/server/app/api/agent/fs/search/route.js.nft.json +1 -1
  33. package/.next/standalone/.next/server/app/api/agent/internal/span/route.js +8 -8
  34. package/.next/standalone/.next/server/app/api/agent/internal/span/route.js.nft.json +1 -1
  35. package/.next/standalone/.next/server/app/api/agent/settings/route.js +7 -7
  36. package/.next/standalone/.next/server/app/api/agent/settings/route.js.nft.json +1 -1
  37. package/.next/standalone/.next/server/app/api/agent/sidecar/[...path]/route.js +6 -6
  38. package/.next/standalone/.next/server/app/api/agent/sidecar/[...path]/route.js.nft.json +1 -1
  39. package/.next/standalone/.next/server/app/api/app-proxy/[...path]/route.js.nft.json +1 -1
  40. package/.next/standalone/.next/server/app/api/assets/[...path]/route.js +5 -5
  41. package/.next/standalone/.next/server/app/api/assets/[...path]/route.js.nft.json +1 -1
  42. package/.next/standalone/.next/server/app/api/share/[token]/route.js +6 -5
  43. package/.next/standalone/.next/server/app/api/share/[token]/route.js.nft.json +1 -1
  44. package/.next/standalone/.next/server/app/api/share/route.js +4 -4
  45. package/.next/standalone/.next/server/app/api/share/route.js.nft.json +1 -1
  46. package/.next/standalone/.next/server/app/api/system/browse/route.js.nft.json +1 -1
  47. package/.next/standalone/.next/server/app/api/system/clear-root/route.js.nft.json +1 -1
  48. package/.next/standalone/.next/server/app/api/system/reveal/route.js +6 -6
  49. package/.next/standalone/.next/server/app/api/system/reveal/route.js.nft.json +1 -1
  50. package/.next/standalone/.next/server/app/api/system/root-status/route.js.nft.json +1 -1
  51. package/.next/standalone/.next/server/app/api/system/set-root/route.js +6 -5
  52. package/.next/standalone/.next/server/app/api/system/set-root/route.js.nft.json +1 -1
  53. package/.next/standalone/.next/server/app/api/system/workspaces/[id]/open/route.js +5 -4
  54. package/.next/standalone/.next/server/app/api/system/workspaces/[id]/open/route.js.nft.json +1 -1
  55. package/.next/standalone/.next/server/app/api/system/workspaces/[id]/refresh/route.js +6 -5
  56. package/.next/standalone/.next/server/app/api/system/workspaces/[id]/refresh/route.js.nft.json +1 -1
  57. package/.next/standalone/.next/server/app/api/system/workspaces/[id]/route.js +5 -4
  58. package/.next/standalone/.next/server/app/api/system/workspaces/[id]/route.js.nft.json +1 -1
  59. package/.next/standalone/.next/server/app/api/system/workspaces/route.js +7 -6
  60. package/.next/standalone/.next/server/app/api/system/workspaces/route.js.nft.json +1 -1
  61. package/.next/standalone/.next/server/app/api/upload/[...path]/route.js +5 -5
  62. package/.next/standalone/.next/server/app/api/upload/[...path]/route.js.nft.json +1 -1
  63. package/.next/standalone/.next/server/app/api/wiki/app/route.js +7 -7
  64. package/.next/standalone/.next/server/app/api/wiki/app/route.js.nft.json +1 -1
  65. package/.next/standalone/.next/server/app/api/wiki/backlinks/route.js +7 -7
  66. package/.next/standalone/.next/server/app/api/wiki/backlinks/route.js.nft.json +1 -1
  67. package/.next/standalone/.next/server/app/api/wiki/content/route.js +7 -7
  68. package/.next/standalone/.next/server/app/api/wiki/content/route.js.nft.json +1 -1
  69. package/.next/standalone/.next/server/app/api/wiki/download/route.js +6 -6
  70. package/.next/standalone/.next/server/app/api/wiki/download/route.js.nft.json +1 -1
  71. package/.next/standalone/.next/server/app/api/wiki/file/route.js +5 -5
  72. package/.next/standalone/.next/server/app/api/wiki/file/route.js.nft.json +1 -1
  73. package/.next/standalone/.next/server/app/api/wiki/folder/route.js +5 -5
  74. package/.next/standalone/.next/server/app/api/wiki/folder/route.js.nft.json +1 -1
  75. package/.next/standalone/.next/server/app/api/wiki/git-branches/route.js +4 -4
  76. package/.next/standalone/.next/server/app/api/wiki/git-branches/route.js.nft.json +1 -1
  77. package/.next/standalone/.next/server/app/api/wiki/git-checkout/route.js +6 -6
  78. package/.next/standalone/.next/server/app/api/wiki/git-checkout/route.js.nft.json +1 -1
  79. package/.next/standalone/.next/server/app/api/wiki/git-diff/route.js +4 -4
  80. package/.next/standalone/.next/server/app/api/wiki/git-diff/route.js.nft.json +1 -1
  81. package/.next/standalone/.next/server/app/api/wiki/git-file-info/route.js +4 -4
  82. package/.next/standalone/.next/server/app/api/wiki/git-file-info/route.js.nft.json +1 -1
  83. package/.next/standalone/.next/server/app/api/wiki/git-history/route.js +4 -4
  84. package/.next/standalone/.next/server/app/api/wiki/git-history/route.js.nft.json +1 -1
  85. package/.next/standalone/.next/server/app/api/wiki/git-pull/route.js +8 -8
  86. package/.next/standalone/.next/server/app/api/wiki/git-pull/route.js.nft.json +1 -1
  87. package/.next/standalone/.next/server/app/api/wiki/move/route.js +6 -6
  88. package/.next/standalone/.next/server/app/api/wiki/move/route.js.nft.json +1 -1
  89. package/.next/standalone/.next/server/app/api/wiki/new-file/route.js +5 -5
  90. package/.next/standalone/.next/server/app/api/wiki/new-file/route.js.nft.json +1 -1
  91. package/.next/standalone/.next/server/app/api/wiki/outlinks/route.js +7 -7
  92. package/.next/standalone/.next/server/app/api/wiki/outlinks/route.js.nft.json +1 -1
  93. package/.next/standalone/.next/server/app/api/wiki/page/route.js +5 -5
  94. package/.next/standalone/.next/server/app/api/wiki/page/route.js.nft.json +1 -1
  95. package/.next/standalone/.next/server/app/api/wiki/presence/route.js +6 -6
  96. package/.next/standalone/.next/server/app/api/wiki/presence/route.js.nft.json +1 -1
  97. package/.next/standalone/.next/server/app/api/wiki/route.js +5 -5
  98. package/.next/standalone/.next/server/app/api/wiki/route.js.nft.json +1 -1
  99. package/.next/standalone/.next/server/app/api/wiki/search/route.js +5 -5
  100. package/.next/standalone/.next/server/app/api/wiki/search/route.js.nft.json +1 -1
  101. package/.next/standalone/.next/server/app/api/wiki/slugs/route.js +5 -5
  102. package/.next/standalone/.next/server/app/api/wiki/slugs/route.js.nft.json +1 -1
  103. package/.next/standalone/.next/server/app/api/wiki/upload/route.js +5 -5
  104. package/.next/standalone/.next/server/app/api/wiki/upload/route.js.nft.json +1 -1
  105. package/.next/standalone/.next/server/app/api/wiki/watch/route.js +5 -5
  106. package/.next/standalone/.next/server/app/api/wiki/watch/route.js.nft.json +1 -1
  107. package/.next/standalone/.next/server/app/index.html +1 -1
  108. package/.next/standalone/.next/server/app/index.rsc +3 -3
  109. package/.next/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  110. package/.next/standalone/.next/server/app/index.segments/_full.segment.rsc +3 -3
  111. package/.next/standalone/.next/server/app/index.segments/_head.segment.rsc +1 -1
  112. package/.next/standalone/.next/server/app/index.segments/_index.segment.rsc +2 -2
  113. package/.next/standalone/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  114. package/.next/standalone/.next/server/app/page.js.nft.json +1 -1
  115. package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  116. package/.next/standalone/.next/server/app/s/[token]/page_client-reference-manifest.js +1 -1
  117. package/.next/standalone/.next/server/app/signin/page_client-reference-manifest.js +1 -1
  118. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0-jzw2_._.js +3 -0
  119. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0.-oq-7._.js +3 -0
  120. package/.next/standalone/.next/server/chunks/[root-of-the-server]__000spch._.js +3 -0
  121. package/.next/standalone/.next/server/chunks/[root-of-the-server]__01oin-a._.js +3 -0
  122. package/.next/standalone/.next/server/chunks/[root-of-the-server]__01qcera._.js +16 -0
  123. package/.next/standalone/.next/server/chunks/[root-of-the-server]__02.uul~._.js +3 -0
  124. package/.next/standalone/.next/server/chunks/[root-of-the-server]__024967n._.js +3 -0
  125. package/.next/standalone/.next/server/chunks/[root-of-the-server]__06booxp._.js +3 -0
  126. package/.next/standalone/.next/server/chunks/[root-of-the-server]__071_pmz._.js +3 -0
  127. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0_0bqpg._.js +3 -0
  128. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0_1f2cw._.js +3 -0
  129. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0a6j6r4._.js +3 -0
  130. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0aoqat-._.js +3 -0
  131. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0as-u6z._.js +3 -0
  132. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0bvtbax._.js +3 -0
  133. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0c-ee48._.js +5 -0
  134. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0e_9pc5._.js +3 -0
  135. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0esmskc._.js +3 -0
  136. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0fshk._._.js +20 -0
  137. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0fu72o7._.js +3 -0
  138. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0k9mili._.js +3 -0
  139. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0l-wu5u._.js +3 -0
  140. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0lvz22t._.js +20 -0
  141. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0n-chxk._.js +16 -0
  142. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0n9zdf0._.js +3 -0
  143. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0nmx3k2._.js +12 -0
  144. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0nzlmkb._.js +3 -0
  145. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0o0v6hf._.js +3 -0
  146. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0s38pid._.js +3 -0
  147. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0s_8poz._.js +3 -0
  148. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0sfrx~.._.js +3 -0
  149. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0sggstu._.js +3 -0
  150. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0u81k~2._.js +3 -0
  151. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0uibxf_._.js +3 -0
  152. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0wfv_by._.js +3 -0
  153. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0wlj-yw._.js +3 -0
  154. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0w~__xz._.js +3 -0
  155. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0yat~ul._.js +3 -0
  156. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0yxauu6._.js +3 -0
  157. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0zbkgnr._.js +3 -0
  158. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0zv_j05._.js +3 -0
  159. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0~rntxj._.js +3 -0
  160. package/.next/standalone/.next/server/chunks/src_lib_search_0d-_j3u._.js +4 -4
  161. package/.next/standalone/.next/server/chunks/src_lib_search_0ymmp0c._.js +3 -3
  162. package/.next/standalone/.next/server/chunks/src_lib_workspaces_ts_0qon40u._.js +4 -0
  163. package/.next/standalone/.next/server/chunks/ssr/{0~w0_katex_dist_katex_mjs_029cdbg._.js → 0~w0_katex_dist_katex_mjs_0s4yb1t._.js} +1 -1
  164. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0z41nrr._.js → [root-of-the-server]__10te1ye._.js} +2 -2
  165. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_13p348f._.js → node_modules__pnpm_0-a_zjq._.js} +1 -1
  166. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0gos._c._.js → node_modules__pnpm_02l_1_8._.js} +1 -1
  167. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0ru1i2-._.js → node_modules__pnpm_03rzttw._.js} +2 -2
  168. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_08xpp3w._.js → node_modules__pnpm_04frxp9._.js} +1 -1
  169. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0b8odbc._.js → node_modules__pnpm_057-t6m._.js} +1 -1
  170. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0f_n_zp._.js → node_modules__pnpm_05_oahi._.js} +1 -1
  171. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0~i3a.i._.js → node_modules__pnpm_05ans~m._.js} +1 -1
  172. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0i2m0b.._.js → node_modules__pnpm_06-2ia.._.js} +2 -2
  173. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0aha1~u._.js → node_modules__pnpm_086.ow4._.js} +1 -1
  174. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0w.kwue._.js → node_modules__pnpm_0cahog3._.js} +1 -1
  175. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0e0r_qk._.js → node_modules__pnpm_0cxanql._.js} +2 -2
  176. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0ajqqlq._.js → node_modules__pnpm_0e09gmf._.js} +1 -1
  177. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0hzzx9d._.js → node_modules__pnpm_0eqjo2f._.js} +1 -1
  178. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_02bje_g._.js → node_modules__pnpm_0f-yazg._.js} +1 -1
  179. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0xk042~._.js → node_modules__pnpm_0iu44jv._.js} +1 -1
  180. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_11ede0p._.js → node_modules__pnpm_0jh8q66._.js} +2 -2
  181. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0k-7uzm._.js → node_modules__pnpm_0m39f~t._.js} +1 -1
  182. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0xr.ztu._.js → node_modules__pnpm_0ma-8l.._.js} +1 -1
  183. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0i6_kfe._.js → node_modules__pnpm_0met6sx._.js} +2 -2
  184. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_04v1_ty._.js → node_modules__pnpm_0mtrsi0._.js} +2 -2
  185. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0607~kg._.js → node_modules__pnpm_0n_swwn._.js} +2 -2
  186. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0t4l89_._.js → node_modules__pnpm_0ndyy93._.js} +1 -1
  187. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0-_58b8._.js → node_modules__pnpm_0s-cj7c._.js} +1 -1
  188. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0y2h_cz._.js → node_modules__pnpm_0tr41-t._.js} +1 -1
  189. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_08edl1n._.js → node_modules__pnpm_0u.uija._.js} +1 -1
  190. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0026mgr._.js → node_modules__pnpm_0wiyn6d._.js} +1 -1
  191. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_09o_spj._.js → node_modules__pnpm_0ygzt82._.js} +1 -1
  192. package/.next/standalone/.next/server/chunks/ssr/src_app_page_tsx_0ss2.w7._.js +2 -2
  193. package/.next/standalone/.next/server/middleware-build-manifest.js +3 -3
  194. package/.next/standalone/.next/server/middleware-manifest.json +1 -1
  195. package/.next/standalone/.next/server/pages/404.html +1 -1
  196. package/.next/standalone/.next/server/pages/500.html +1 -1
  197. package/.next/standalone/.next/static/chunks/0.69aou29w6ma.js +17 -0
  198. package/.next/standalone/.next/static/chunks/0sx~65~lg4mgl.css +5 -0
  199. package/.next/standalone/package.json +1 -1
  200. package/README.md +88 -17
  201. package/bin/wiki-viewer.js +198 -6
  202. package/package.json +1 -1
  203. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0-.y6im._.js +0 -3
  204. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0-3_t2y._.js +0 -3
  205. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0-kjkzt._.js +0 -3
  206. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0-puax4._.js +0 -4
  207. package/.next/standalone/.next/server/chunks/[root-of-the-server]__01h996g._.js +0 -3
  208. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0329ktu._.js +0 -3
  209. package/.next/standalone/.next/server/chunks/[root-of-the-server]__03_xj4r._.js +0 -3
  210. package/.next/standalone/.next/server/chunks/[root-of-the-server]__05398dt._.js +0 -4
  211. package/.next/standalone/.next/server/chunks/[root-of-the-server]__06lfvxh._.js +0 -3
  212. package/.next/standalone/.next/server/chunks/[root-of-the-server]__06w0aet._.js +0 -3
  213. package/.next/standalone/.next/server/chunks/[root-of-the-server]__070_p2a._.js +0 -4
  214. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0905hi1._.js +0 -21
  215. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0aa63~j._.js +0 -5
  216. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0avcplk._.js +0 -4
  217. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0b8_kyo._.js +0 -16
  218. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0bticq1._.js +0 -3
  219. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0bwevvu._.js +0 -3
  220. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0c__k3q._.js +0 -4
  221. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0cp~z4x._.js +0 -3
  222. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0fmdv9h._.js +0 -20
  223. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0h0qbwr._.js +0 -3
  224. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0jk~oyi._.js +0 -3
  225. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0ndq77b._.js +0 -3
  226. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0nvgpuk._.js +0 -3
  227. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0ocvng2._.js +0 -3
  228. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0ps4h~.._.js +0 -3
  229. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0q7jqwp._.js +0 -12
  230. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0qew~6p._.js +0 -3
  231. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0s_9f-a._.js +0 -3
  232. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0uv7b8u._.js +0 -3
  233. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0uv8.9i._.js +0 -3
  234. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0vfe2io._.js +0 -4
  235. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0w11kjy._.js +0 -3
  236. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0wc-.e4._.js +0 -3
  237. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0ymovmp._.js +0 -3
  238. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0~c6ouv._.js +0 -3
  239. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0~rhs0u._.js +0 -16
  240. package/.next/standalone/.next/server/chunks/[root-of-the-server]__10h9tid._.js +0 -3
  241. package/.next/standalone/.next/server/chunks/[root-of-the-server]__10yk-u1._.js +0 -3
  242. package/.next/standalone/.next/server/chunks/[root-of-the-server]__11105ew._.js +0 -3
  243. package/.next/standalone/.next/server/chunks/[root-of-the-server]__11a3dhw._.js +0 -3
  244. package/.next/standalone/.next/server/chunks/[root-of-the-server]__13420tt._.js +0 -3
  245. package/.next/standalone/.next/server/chunks/[root-of-the-server]__13h~pdf._.js +0 -3
  246. package/.next/standalone/.next/static/chunks/02kg.lbkfi1yc.css +0 -5
  247. package/.next/standalone/.next/static/chunks/0rcwd6-.iu~nd.js +0 -17
  248. /package/.next/standalone/.next/static/{rRyvFORvJoc5OWbCR2A_P → nbWvTsOgKt53BB3Gl0swc}/_buildManifest.js +0 -0
  249. /package/.next/standalone/.next/static/{rRyvFORvJoc5OWbCR2A_P → nbWvTsOgKt53BB3Gl0swc}/_clientMiddlewareManifest.js +0 -0
  250. /package/.next/standalone/.next/static/{rRyvFORvJoc5OWbCR2A_P → nbWvTsOgKt53BB3Gl0swc}/_ssgManifest.js +0 -0
@@ -0,0 +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 u(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 l(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,u,"isAdmin",0,n,"listAdmins",0,a,"removeAdmin",0,o,"requireAdmin",0,l])},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),u=/[;|&$`<>(){}\n\r\0]/;function l(){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}@`:"",u=[`${o}${t.host}:${t.remotePath}`,r];s&&Number.isInteger(s)&&s>0&&s<65536&&u.push("-p",String(s));let l=["reconnect","ServerAliveInterval=15","ServerAliveCountMax=3","compression=yes","cache=yes","kernel_cache","StrictHostKeyChecking=accept-new","BatchMode=yes"];if(i&&l.push("ro"),"keyfile"===n&&a&&(l.push(`IdentityFile=${a}`),l.push("IdentitiesOnly=yes")),"password"===n){let e=l.indexOf("BatchMode=yes");e>=0&&l.splice(e,1),l.push("password_stdin"),l.push("PreferredAuthentications=password,keyboard-interactive"),l.push("PubkeyAuthentication=no"),l.push("NumberOfPasswordPrompts=1")}return e.extraOptions&&l.push(...e.extraOptions),u.push("-o",l.join(",")),u}(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||u.test(e)||e.includes(".."))&&(e.startsWith("/")||e.startsWith("~/"))},"mountSshfs",0,p,"mountpointFor",0,function(e){return a.default.join(l(),e)},"mountsDir",0,l,"parseSshTarget",0,function(e){let t;if(!e||u.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])},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),n=e.i(504445),a=e.i(359211);async function i(e){let r;await (0,a.migrateConfigToWorkspaces)();let s=new URL(e.url).searchParams.get("ws")??e.headers.get("x-workspace")??null;if(s)r=await (0,a.getWorkspace)(s)??null;else{let e=await (0,a.listWorkspaces)();if(0===e.length){let e;r=(e=(0,n.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,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 n=await (0,r.requireUser)(e);if(!n.ok)return{ok:!1,status:401,code:"UNAUTHORIZED"};let u=await (0,s.isAdmin)(n.user.id,n.user.email),l=new URL(e.url).searchParams.get("ws")??e.headers.get("x-workspace")??null,d=await i(e);return d?(0,a.userCanAccess)(d,n.user.id,u)?"write"===t&&d.readOnly?{ok:!1,status:403,code:"WORKSPACE_READ_ONLY"}:{ok:!0,ws:d,rootDir:d.rootDir,userId:n.user.id,isAdmin:u}:{ok:!1,status:403,code:"WORKSPACE_FORBIDDEN"}:{ok:!1,status:l?404:400,code:l?"WORKSPACE_NOT_FOUND":"WORKSPACE_REQUIRED"}}async function u(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,u,"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),s=e.i(660526),n=e.i(750227),a=e.i(832852);let i="__registry__",o=new Map;function u(){let e=process.env.HOME??s.default.homedir();return n.default.join(e,".wiki-viewer")}function l(){return n.default.join(u(),"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)(l(),"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)(u(),{recursive:!0});let t=l()+".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,l())}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 s=d(e);for(let e of r.agents)if(function(e,r){let s=Buffer.from(e.padEnd(64,"0"),"utf8"),n=Buffer.from(r.padEnd(64,"0"),"utf8");return s.length===n.length&&(0,t.timingSafeEqual)(s,n)&&e.length===r.length}(e.tokenHash,s))return e;return null}async function m(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 w(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 g(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,m,"hashToken",0,d,"lookupAgentByToken",0,f,"readRegistry",0,c,"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 s=e.i(254226);async function n(e){let r=await (0,s.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 n=e.headers.get("authorization")??"",a=n.startsWith("Bearer ")?n.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,n,"enforceScope",0,function(e,t){let{scope:s}=e;return void 0!==s.workspaceId&&void 0!==t.workspaceId&&s.workspaceId!==t.workspaceId?{ok:!1,code:"FORBIDDEN",message:`Agent scope does not cover workspace "${t.workspaceId}" (granted: "${s.workspaceId}")`}:s.ops.includes(t.op)?t.filePath&&!s.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)},973909,e=>{"use strict";var t=e.i(912714),r=e.i(750227);function s(e,t){return r.default.join(e,".proof",t+".json")}async function n(e,r){let n=s(e,r);try{let e=await (0,t.readFile)(n,"utf-8"),r=JSON.parse(e);if(1!==r.schemaVersion)throw Error(`Sidecar schema version mismatch: expected 1, got ${r.schemaVersion}`);return r}catch(e){if(e instanceof Error&&"code"in e&&"ENOENT"===e.code)return null;throw e}}async function a(e,n,a){let i=s(e,n);await (0,t.mkdir)(r.default.dirname(i),{recursive:!0});let o=i+".tmp";await (0,t.writeFile)(o,JSON.stringify(a,null,2),"utf-8"),await (0,t.rename)(o,i)}async function i(e,n,a){let i=s(e,n),o=s(e,a);try{await (0,t.mkdir)(r.default.dirname(o),{recursive:!0}),await (0,t.rename)(i,o)}catch(e){if("ENOENT"===e.code)return;throw e}}async function o(e,r){let n=s(e,r);try{await (0,t.unlink)(n)}catch(e){if("ENOENT"===e.code)return;throw e}}e.s(["deleteSidecar",0,o,"emptySidecar",0,function(e){let t=new Date().toISOString();return{schemaVersion:1,path:e,revision:0,createdAt:t,updatedAt:t,refMap:{},refAliases:{},comments:[],suggestions:[],archivedSuggestions:[],events:[],nextEventId:1,lastAck:{},fingerprint:"",blockProvenance:{}}},"moveSidecar",0,i,"readSidecar",0,n,"writeSidecar",0,a])},307764,e=>{"use strict";e.s(["emitEvents",0,function(e,t){let r=[];for(let s of t){let t={...s,id:e.nextEventId++};e.events.push(t),r.push(t)}return r},"pollEvents",0,function(e,t,r){return e.events.filter(e=>e.id>t).slice(0,r)},"trimEvents",0,function(e,t){if(e.events.length<=t)return;let r=Object.values(e.lastAck),s=r.length>0?Math.min(...r):1/0,n=e.events.length-t,a=e.events.filter((e,t)=>t>=n||e.id>s);e.events=a}])},463,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),u=e.i(243133),l=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 g=e.i(530564),v=e.i(702414),R=e.i(215043),A=e.i(973909),_=e.i(307764),k=e.i(832852),y=e.i(660038),E=e.i(359211);function I(e){return e.endsWith(".md")||e.endsWith(".markdown")}async function N(e,{params:t}){let r=await (0,R.checkAuth)(e);if(!r.ok)return v.NextResponse.json({error:"UNAUTHORIZED"},{status:401});let s=await (0,y.resolveWorkspaceForAgent)(e);if(!s.ok)return v.NextResponse.json({error:s.code},{status:s.status});let{ws:n,rootDir:a}=s,{path:i}=await t,o=i.join("/");if(o.startsWith(".proof"))return v.NextResponse.json({error:"INVALID_PATH",message:"Path must not be under .proof"},{status:400});if(!I(o))return v.NextResponse.json({error:"INVALID_PATH",message:"Path must be .md or .markdown"},{status:400});if(!(0,E.safeWorkspacePath)(a,o))return v.NextResponse.json({error:"INVALID_PATH",message:"Path traversal rejected"},{status:400});let u=(0,R.enforceScope)(r.agent,{filePath:o,op:"read",workspaceId:n.id});if(!u.ok)return v.NextResponse.json({error:u.code,message:u.message},{status:403});let{searchParams:l}=new URL(e.url),d=l.get("after"),c=l.get("limit"),p=null!==d?parseInt(d,10):0,h=null!==c?parseInt(c,10):100;if(Number.isNaN(p)||p<0)return v.NextResponse.json({error:"INVALID_PARAM",message:"after must be a non-negative integer"},{status:400});(Number.isNaN(h)||h<=0)&&(h=100),h>1e3&&(h=1e3);let f=await (0,A.readSidecar)(a,o)??(0,A.emptySidecar)(o),m=(0,_.pollEvents)(f,p,h),w=f.nextEventId-1;return v.NextResponse.json({events:m,lastEventId:w})}async function O(e,{params:t}){let r,s=await (0,R.checkAuth)(e);if(!s.ok)return v.NextResponse.json({error:"UNAUTHORIZED"},{status:401});let n=await (0,y.resolveWorkspaceForAgent)(e,"write");if(!n.ok)return v.NextResponse.json({error:n.code},{status:n.status});let{ws:a,rootDir:i}=n,{path:o}=await t,u=o.join("/");if(u.startsWith(".proof"))return v.NextResponse.json({error:"INVALID_PATH",message:"Path must not be under .proof"},{status:400});if(!I(u))return v.NextResponse.json({error:"INVALID_PATH",message:"Path must be .md or .markdown"},{status:400});if(!(0,E.safeWorkspacePath)(i,u))return v.NextResponse.json({error:"INVALID_PATH",message:"Path traversal rejected"},{status:400});let l=(0,R.enforceScope)(s.agent,{filePath:u,op:"mutate",workspaceId:a.id});if(!l.ok)return v.NextResponse.json({error:l.code,message:l.message},{status:403});try{r=await e.json()}catch{return v.NextResponse.json({error:"INVALID_PAYLOAD",message:"Invalid JSON"},{status:400})}if("number"!=typeof r.upToId)return v.NextResponse.json({error:"INVALID_PAYLOAD",message:"upToId (number) required"},{status:400});if("string"!=typeof r.by||!r.by)return v.NextResponse.json({error:"INVALID_PAYLOAD",message:"by (string) required"},{status:400});let d=(0,R.verifyBy)(s.agent,r.by);if(!d.ok)return v.NextResponse.json({error:d.code,message:d.message},{status:403});let c=r.upToId,p=r.by;return await (0,k.withFileMutex)(`${i}\0${u}`,async()=>{let e=await (0,A.readSidecar)(i,u)??(0,A.emptySidecar)(u);e.lastAck[p]=c,await (0,A.writeSidecar)(i,u,e)}),v.NextResponse.json({ok:!0})}e.s(["GET",0,N,"POST",0,O,"runtime",0,"nodejs"],644628);var x=e.i(644628);let D=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/agent/events/[...path]/route",pathname:"/api/agent/events/[...path]",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/agent/events/[...path]/route.ts",nextConfigOutput:"standalone",userland:x,...{}}),{workAsyncStorage:P,workUnitAsyncStorage:S,serverHooks:T}=D;async function b(e,t,s){s.requestMeta&&(0,n.setRequestMeta)(e,s.requestMeta),D.isDev&&(0,n.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let v="/api/agent/events/[...path]/route";v=v.replace(/\/index$/,"")||"/";let R=await D.prepare(e,t,{srcPage:v,multiZoneDraftMode:!1});if(!R)return t.statusCode=400,t.end("Bad Request"),null==s.waitUntil||s.waitUntil.call(s,Promise.resolve()),null;let{buildId:A,params:_,nextConfig:k,parsedUrl:y,isDraftMode:E,prerenderManifest:I,routerServerContext:N,isOnDemandRevalidate:O,revalidateOnlyGenerated:x,resolvedPathname:P,clientReferenceManifest:S,serverActionsManifest:T}=R,b=(0,o.normalizeAppPath)(v),C=!!(I.dynamicRoutes[b]||I.routes[P]),U=async()=>((null==N?void 0:N.render404)?await N.render404(e,t,y,!1):t.end("This page could not be found"),null);if(C&&!E){let e=!!I.routes[P],t=I.dynamicRoutes[b];if(t&&!1===t.fallback&&!e){if(k.adapterPath)return await U();throw new w.NoFallbackError}}let j=null;!C||D.isDev||E||(j="/index"===(j=P)?"/":j);let q=!0===D.isDev||!C,H=C&&!q;T&&S&&(0,i.setManifestsSingleton)({page:v,clientReferenceManifest:S,serverActionsManifest:T});let M=e.method||"GET",W=(0,a.getTracer)(),F=W.getActiveScopeSpan(),L=!!(null==N?void 0:N.isWrappedByNextServer),$=!!(0,n.getRequestMeta)(e,"minimalMode"),B=(0,n.getRequestMeta)(e,"incrementalCache")||await D.getIncrementalCache(e,k,I,$);null==B||B.resetRequestCache(),globalThis.__incrementalCache=B;let K={params:_,previewProps:I.preview,renderOpts:{experimental:{authInterrupts:!!k.experimental.authInterrupts},cacheComponents:!!k.cacheComponents,supportsDynamicResponse:q,incrementalCache:B,cacheLifeProfiles:k.cacheLife,waitUntil:s.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,s,n)=>D.onRequestError(e,t,s,n,N)},sharedContext:{buildId:A}},V=new u.NodeNextRequest(e),z=new u.NodeNextResponse(t),Z=l.NextRequestAdapter.fromNodeNextRequest(V,(0,l.signalFromNodeResponse)(t));try{let n,i=async e=>D.handle(Z,K).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=W.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} ${v}`)}),o=async n=>{var a,o;let u=async({previousCacheEntry:r})=>{try{if(!$&&O&&x&&!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=K.renderOpts.fetchMetrics;let o=K.renderOpts.pendingWaitUntil;o&&s.waitUntil&&(s.waitUntil(o),o=void 0);let u=K.renderOpts.collectedTags;if(!C)return await (0,p.sendResponse)(V,z,a,K.renderOpts.pendingWaitUntil),null;{let e=await a.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(a.headers);u&&(t[m.NEXT_CACHE_TAGS_HEADER]=u),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==K.renderOpts.collectedRevalidate&&!(K.renderOpts.collectedRevalidate>=m.INFINITE_CACHE)&&K.renderOpts.collectedRevalidate,s=void 0===K.renderOpts.collectedExpire||K.renderOpts.collectedExpire>=m.INFINITE_CACHE?void 0:K.renderOpts.collectedExpire;return{value:{kind:g.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 D.onRequestError(e,t,{routerKind:"App Router",routePath:v,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:H,isOnDemandRevalidate:O})},!1,N),t}},l=await D.handleResponse({req:e,nextConfig:k,cacheKey:j,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:I,isRoutePPREnabled:!1,isOnDemandRevalidate:O,revalidateOnlyGenerated:x,responseGenerator:u,waitUntil:s.waitUntil,isMinimalMode:$});if(!C)return null;if((null==l||null==(a=l.value)?void 0:a.kind)!==g.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==l||null==(o=l.value)?void 0:o.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});$||t.setHeader("x-nextjs-cache",O?"REVALIDATED":l.isMiss?"MISS":l.isStale?"STALE":"HIT"),E&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let d=(0,h.fromNodeOutgoingHttpHeaders)(l.value.headers);return $&&C||d.delete(m.NEXT_CACHE_TAGS_HEADER),!l.cacheControl||t.getHeader("Cache-Control")||d.get("Cache-Control")||d.set("Cache-Control",(0,f.getCacheControlHeader)(l.cacheControl)),await (0,p.sendResponse)(V,z,new Response(l.value.body,{headers:d,status:l.value.status||200})),null};L&&F?await o(F):(n=W.getActiveScopeSpan(),await W.withPropagatedContext(e.headers,()=>W.trace(d.BaseServerSpan.handleRequest,{spanName:`${M} ${v}`,kind:a.SpanKind.SERVER,attributes:{"http.method":M,"http.target":e.url}},o),void 0,!L))}catch(t){if(t instanceof w.NoFallbackError||await D.onRequestError(e,t,{routerKind:"App Router",routePath:b,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:H,isOnDemandRevalidate:O})},!1,N),C)throw t;return await (0,p.sendResponse)(V,z,new Response(null,{status:500})),null}}e.s(["handler",0,b,"patchFetch",0,function(){return(0,s.patchFetch)({workAsyncStorage:P,workUnitAsyncStorage:S})},"routeModule",0,D,"serverHooks",0,T,"workAsyncStorage",0,P,"workUnitAsyncStorage",0,S],463)},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
+
3
+ //# sourceMappingURL=%5Broot-of-the-server%5D__0o0v6hf._.js.map
@@ -0,0 +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 i(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 n(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,i=!1;if(await (0,t.updateConfig)(t=>{let s=(t.adminUserIds??[]).filter(t=>t!==e);return 0!==s.length||r?{...t,adminUserIds:s}:(i=!0,t)}),i)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 i(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,n,"ensureBootstrapAdmin",0,l,"isAdmin",0,i,"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),i=e.i(912714),a=e.i(750227),n=e.i(660526);let o=(0,s.promisify)(r.execFile),l=/[;|&$`<>(){}\n\r\0]/;function u(){return a.default.join(n.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),n=!1;try{n=(await (0,i.readFile)("/proc/mounts","utf8")).split("\n").some(e=>{let t=e.split(" ");return t[1]===s&&/fuse/.test(t[2]??"")})}catch{n=!1}return!!n&&(r=s,new Promise(t=>{let s=!1,i=setTimeout(()=>{s||(s=!0,t(!1))},4e3);e.A(687903).then(({readdir:e})=>e(r)).then(()=>{s||(s=!0,clearTimeout(i),t(!0))}).catch(()=>{s||(s=!0,clearTimeout(i),t(!1))})}))}async function p(e){await d(),await (0,i.mkdir)(e.mountpoint,{recursive:!0});let t=function(e){let{target:t,mountpoint:r,port:s,authMethod:i,keyPath:a,readOnly:n}=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(n&&u.push("ro"),"keyfile"===i&&a&&(u.push(`IdentityFile=${a}`),u.push("IdentitiesOnly=yes")),"password"===i){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,i)=>{let a=(0,r.spawn)("sshfs",t,{stdio:["pipe","ignore","pipe"]}),n="",o=setTimeout(()=>{a.kill("SIGKILL"),i(Error("sshfs mount timed out after 25s."))},25e3);a.stderr?.on("data",e=>{n+=e.toString()}),a.on("error",e=>{clearTimeout(o),i(e.message.includes("ENOENT")?Error("sshfs binary not found on PATH."):e)}),a.on("close",e=>{clearTimeout(o),0===e?s():i(Error(`sshfs exited ${e}: ${n.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,i.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 i=r.slice(0,s),a=r.slice(s+1);if(!a.startsWith("/")||a.includes(".."))return null;let n=i,o=i.indexOf("@");return o>=0&&(t=i.slice(0,o),n=i.slice(o+1),!t)?null:n&&/^[a-zA-Z0-9.\-]+$/.test(n)&&(!t||/^[a-zA-Z0-9._\-]+$/.test(t))?{user:t,host:n,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),s=e.i(583627),i=e.i(504445),a=e.i(359211);async function n(e){let r;await (0,a.migrateConfigToWorkspaces)();let s=new URL(e.url).searchParams.get("ws")??e.headers.get("x-workspace")??null;if(s)r=await (0,a.getWorkspace)(s)??null;else{let e=await (0,a.listWorkspaces)();if(0===e.length){let e;r=(e=(0,i.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,a.ensureWorkspaceMounted)(r),r}async function o(e,t="read"){if("1"===process.env.WIKI_NO_AUTH){let r=await n(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 i=await (0,r.requireUser)(e);if(!i.ok)return{ok:!1,status:401,code:"UNAUTHORIZED"};let l=await (0,s.isAdmin)(i.user.id,i.user.email),u=new URL(e.url).searchParams.get("ws")??e.headers.get("x-workspace")??null,d=await n(e);return d?(0,a.userCanAccess)(d,i.user.id,l)?"write"===t&&d.readOnly?{ok:!1,status:403,code:"WORKSPACE_READ_ONLY"}:{ok:!0,ws:d,rootDir:d.rootDir,userId:i.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 n(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"),i=e.headers.get("referer");if(!s&&!i)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 i of r)s.add(`${t}://${e}${i}`);return s}(e.headers.get("host")??"");if(s)return a.has(s)?null:t.NextResponse.json({error:"FORBIDDEN",message:"Bad origin"},{status:403});if(i){try{let{protocol:e,host:t}=new URL(i);if(a.has(`${e}//${t}`))return null}catch{}return t.NextResponse.json({error:"FORBIDDEN",message:"Bad referer"},{status:403})}return null}])},275859,e=>{"use strict";var t=e.i(912714),r=e.i(750227);async function s(e,s){try{let i=r.default.join(e,s,"package.json");return(await (0,t.stat)(i)).isFile()}catch{return!1}}async function i(e,s){try{let i=r.default.join(e,s,"index.html");return(await (0,t.stat)(i)).isFile()}catch{return!1}}e.s(["isAppFolder",0,i,"isNodeApp",0,s])},424218,e=>{"use strict";var t=e.i(364564),r=e.i(102095),s=e.i(691091),i=e.i(475331),a=e.i(490301),n=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 R=e.i(530564),v=e.i(912714),_=e.i(750227),g=e.i(702414),y=e.i(402662),A=e.i(660038),E=e.i(359211),k=e.i(275859),O=e.i(787140);async function N(e){let t=await (0,A.resolveWorkspaceForUser)(e);if(!t.ok)return g.NextResponse.json({error:t.code},{status:t.status});let{rootDir:r}=t,{searchParams:s}=new URL(e.url),i=s.get("dir")??"",a=(0,E.safeWorkspacePath)(r,i);if(!a)return g.NextResponse.json({error:"Invalid path"},{status:400});try{let e;try{e=await (0,v.readdir)(a)}catch{return g.NextResponse.json({entries:[]})}let t=await Promise.all(e.map(async e=>{let t=_.default.join(a,e),s=await (0,v.stat)(t);if(!s.isDirectory())return{name:e,type:"file",size:s.size,modifiedAt:s.mtime.toISOString()};let n=i?`${i}/${e}`:e,o=await (0,k.isNodeApp)(r,n),l=!o&&await (0,k.isAppFolder)(r,n),u={name:e,type:o?"node-app":l?"app":"dir",modifiedAt:s.mtime.toISOString()},d=await (0,O.detectGitRepo)(t);return d&&(u.git=d),u}));return t.sort((e,t)=>{let r="dir"===e.type||"app"===e.type||"node-app"===e.type,s="dir"===t.type||"app"===t.type||"node-app"===t.type;return r!==s?r?-1:1:e.name.localeCompare(t.name)}),g.NextResponse.json({entries:t})}catch{return g.NextResponse.json({error:"Failed to list directory"},{status:500})}}async function I(e){let t=(0,y.checkOrigin)(e);if(t)return t;let r=await (0,A.resolveWorkspaceForUser)(e,"write");if(!r.ok)return g.NextResponse.json({error:r.code},{status:r.status});let{rootDir:s}=r,i=(await e.json()).path;if(!i||"string"!=typeof i)return g.NextResponse.json({error:"Invalid path"},{status:400});let a=(0,E.safeWorkspacePath)(s,i);if(!a||a===s)return g.NextResponse.json({error:"Invalid path"},{status:400});try{return(await (0,v.stat)(a)).isDirectory()?await (0,v.rmdir)(a):await (0,v.unlink)(a),g.NextResponse.json({ok:!0})}catch(t){let e=t.code;if("ENOENT"===e)return g.NextResponse.json({error:"Not found"},{status:404});if("ENOTEMPTY"===e)return g.NextResponse.json({error:"Folder is not empty"},{status:409});return g.NextResponse.json({error:"Delete failed"},{status:500})}}e.s(["DELETE",0,I,"GET",0,N],209429);var x=e.i(209429);let D=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/wiki/route",pathname:"/api/wiki",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/wiki/route.ts",nextConfigOutput:"standalone",userland:x,...{}}),{workAsyncStorage:C,workUnitAsyncStorage:P,serverHooks:S}=D;async function T(e,t,s){s.requestMeta&&(0,i.setRequestMeta)(e,s.requestMeta),D.isDev&&(0,i.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let v="/api/wiki/route";v=v.replace(/\/index$/,"")||"/";let _=await D.prepare(e,t,{srcPage:v,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:y,nextConfig:A,parsedUrl:E,isDraftMode:k,prerenderManifest:O,routerServerContext:N,isOnDemandRevalidate:I,revalidateOnlyGenerated:x,resolvedPathname:C,clientReferenceManifest:P,serverActionsManifest:S}=_,T=(0,o.normalizeAppPath)(v),U=!!(O.dynamicRoutes[T]||O.routes[C]),j=async()=>((null==N?void 0:N.render404)?await N.render404(e,t,E,!1):t.end("This page could not be found"),null);if(U&&!k){let e=!!O.routes[C],t=O.dynamicRoutes[T];if(t&&!1===t.fallback&&!e){if(A.adapterPath)return await j();throw new w.NoFallbackError}}let b=null;!U||D.isDev||k||(b="/index"===(b=C)?"/":b);let q=!0===D.isDev||!U,W=U&&!q;S&&P&&(0,n.setManifestsSingleton)({page:v,clientReferenceManifest:P,serverActionsManifest:S});let F=e.method||"GET",M=(0,a.getTracer)(),$=M.getActiveScopeSpan(),H=!!(null==N?void 0:N.isWrappedByNextServer),K=!!(0,i.getRequestMeta)(e,"minimalMode"),L=(0,i.getRequestMeta)(e,"incrementalCache")||await D.getIncrementalCache(e,A,O,K);null==L||L.resetRequestCache(),globalThis.__incrementalCache=L;let B={params:y,previewProps:O.preview,renderOpts:{experimental:{authInterrupts:!!A.experimental.authInterrupts},cacheComponents:!!A.cacheComponents,supportsDynamicResponse:q,incrementalCache:L,cacheLifeProfiles:A.cacheLife,waitUntil:s.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,s,i)=>D.onRequestError(e,t,s,i,N)},sharedContext:{buildId:g}},z=new l.NodeNextRequest(e),G=new l.NodeNextResponse(t),Y=u.NextRequestAdapter.fromNodeNextRequest(z,(0,u.signalFromNodeResponse)(t));try{let i,n=async e=>D.handle(Y,B).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")!==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=`${F} ${s}`;e.setAttributes({"next.route":s,"http.route":s,"next.span_name":t}),e.updateName(t),i&&i!==e&&(i.setAttribute("http.route",s),i.updateName(t))}else e.updateName(`${F} ${v}`)}),o=async i=>{var a,o;let l=async({previousCacheEntry:r})=>{try{if(!K&&I&&x&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let a=await n(i);e.fetchMetrics=B.renderOpts.fetchMetrics;let o=B.renderOpts.pendingWaitUntil;o&&s.waitUntil&&(s.waitUntil(o),o=void 0);let l=B.renderOpts.collectedTags;if(!U)return await (0,p.sendResponse)(z,G,a,B.renderOpts.pendingWaitUntil),null;{let e=await a.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(a.headers);l&&(t[m.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==B.renderOpts.collectedRevalidate&&!(B.renderOpts.collectedRevalidate>=m.INFINITE_CACHE)&&B.renderOpts.collectedRevalidate,s=void 0===B.renderOpts.collectedExpire||B.renderOpts.collectedExpire>=m.INFINITE_CACHE?void 0:B.renderOpts.collectedExpire;return{value:{kind:R.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 D.onRequestError(e,t,{routerKind:"App Router",routePath:v,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:W,isOnDemandRevalidate:I})},!1,N),t}},u=await D.handleResponse({req:e,nextConfig:A,cacheKey:b,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:O,isRoutePPREnabled:!1,isOnDemandRevalidate:I,revalidateOnlyGenerated:x,responseGenerator:l,waitUntil:s.waitUntil,isMinimalMode:K});if(!U)return null;if((null==u||null==(a=u.value)?void 0:a.kind)!==R.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"),k&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let d=(0,h.fromNodeOutgoingHttpHeaders)(u.value.headers);return K&&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};H&&$?await o($):(i=M.getActiveScopeSpan(),await M.withPropagatedContext(e.headers,()=>M.trace(d.BaseServerSpan.handleRequest,{spanName:`${F} ${v}`,kind:a.SpanKind.SERVER,attributes:{"http.method":F,"http.target":e.url}},o),void 0,!H))}catch(t){if(t instanceof w.NoFallbackError||await D.onRequestError(e,t,{routerKind:"App Router",routePath:T,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:W,isOnDemandRevalidate:I})},!1,N),U)throw t;return await (0,p.sendResponse)(z,G,new Response(null,{status:500})),null}}e.s(["handler",0,T,"patchFetch",0,function(){return(0,s.patchFetch)({workAsyncStorage:C,workUnitAsyncStorage:P})},"routeModule",0,D,"serverHooks",0,S,"workAsyncStorage",0,C,"workUnitAsyncStorage",0,P],424218)},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]__0cqu-wm._.js","server/chunks/src_lib_search_0ymmp0c._.js"].map(t=>e.l(t))).then(()=>t(437856)))}];
2
+
3
+ //# sourceMappingURL=%5Broot-of-the-server%5D__0s38pid._.js.map
@@ -0,0 +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)))}];
2
+
3
+ //# sourceMappingURL=%5Broot-of-the-server%5D__0s_8poz._.js.map
@@ -0,0 +1,3 @@
1
+ module.exports=[583627,e=>{"use strict";var t=e.i(798003),s=e.i(254226);function r(){return(process.env.WIKI_ADMIN_EMAILS??"").split(",").map(e=>e.trim().toLowerCase()).filter(Boolean)}async function i(e,s){if(s){let e=r();if(e.length>0&&e.includes(s.toLowerCase()))return!0}return((await (0,t.readConfig)()).adminUserIds??[]).includes(e)}async function n(){return(await (0,t.readConfig)()).adminUserIds??[]}async function o(e){await (0,t.updateConfig)(t=>{let s=t.adminUserIds??[];return s.includes(e)?t:{...t,adminUserIds:[...s,e]}})}async function a(e){let s=r().length>0,i=!1;if(await (0,t.updateConfig)(t=>{let r=(t.adminUserIds??[]).filter(t=>t!==e);return 0!==r.length||s?{...t,adminUserIds:r}:(i=!0,t)}),i)throw Error("LAST_ADMIN: cannot remove the last admin with no WIKI_ADMIN_EMAILS configured")}async function u(e){if(r().length>0||((await (0,t.readConfig)()).adminUserIds??[]).length>0)return;let s=!1;await (0,t.updateConfig)(t=>(t.adminUserIds??[]).length>0?t:(s=!0,{...t,adminUserIds:[e]})),s&&console.log(`[wiki-viewer] Bootstrap: first user ${e} promoted to admin`)}async function l(e){if("1"===process.env.WIKI_NO_AUTH)return{ok:!0,user:{id:"local",email:"local@localhost",name:"local"}};let t=await (0,s.requireUser)(e);return t.ok?await i(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,o,"ensureBootstrapAdmin",0,u,"isAdmin",0,i,"listAdmins",0,n,"removeAdmin",0,a,"requireAdmin",0,l])},874533,(e,t,s)=>{t.exports=e.x("node:child_process",()=>require("node:child_process"))},812057,(e,t,s)=>{t.exports=e.x("node:util",()=>require("node:util"))},834938,e=>{"use strict";let t;var s=e.i(874533),r=e.i(812057),i=e.i(912714),n=e.i(750227),o=e.i(660526);let a=(0,r.promisify)(s.execFile),u=/[;|&$`<>(){}\n\r\0]/;function l(){return n.default.join(o.default.homedir(),".wiki-viewer","mounts")}async function d(){if(!0!==t)try{await a("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 s;let r=n.default.resolve(t),o=!1;try{o=(await (0,i.readFile)("/proc/mounts","utf8")).split("\n").some(e=>{let t=e.split(" ");return t[1]===r&&/fuse/.test(t[2]??"")})}catch{o=!1}return!!o&&(s=r,new Promise(t=>{let r=!1,i=setTimeout(()=>{r||(r=!0,t(!1))},4e3);e.A(687903).then(({readdir:e})=>e(s)).then(()=>{r||(r=!0,clearTimeout(i),t(!0))}).catch(()=>{r||(r=!0,clearTimeout(i),t(!1))})}))}async function m(e){await d(),await (0,i.mkdir)(e.mountpoint,{recursive:!0});let t=function(e){let{target:t,mountpoint:s,port:r,authMethod:i,keyPath:n,readOnly:o}=e,a=t.user?`${t.user}@`:"",u=[`${a}${t.host}:${t.remotePath}`,s];r&&Number.isInteger(r)&&r>0&&r<65536&&u.push("-p",String(r));let l=["reconnect","ServerAliveInterval=15","ServerAliveCountMax=3","compression=yes","cache=yes","kernel_cache","StrictHostKeyChecking=accept-new","BatchMode=yes"];if(o&&l.push("ro"),"keyfile"===i&&n&&(l.push(`IdentityFile=${n}`),l.push("IdentitiesOnly=yes")),"password"===i){let e=l.indexOf("BatchMode=yes");e>=0&&l.splice(e,1),l.push("password_stdin"),l.push("PreferredAuthentications=password,keyboard-interactive"),l.push("PubkeyAuthentication=no"),l.push("NumberOfPasswordPrompts=1")}return e.extraOptions&&l.push(...e.extraOptions),u.push("-o",l.join(",")),u}(e);if(await new Promise((r,i)=>{let n=(0,s.spawn)("sshfs",t,{stdio:["pipe","ignore","pipe"]}),o="",a=setTimeout(()=>{n.kill("SIGKILL"),i(Error("sshfs mount timed out after 25s."))},25e3);n.stderr?.on("data",e=>{o+=e.toString()}),n.on("error",e=>{clearTimeout(a),i(e.message.includes("ENOENT")?Error("sshfs binary not found on PATH."):e)}),n.on("close",e=>{clearTimeout(a),0===e?r():i(Error(`sshfs exited ${e}: ${o.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,s]of[["fusermount",["-u","-z",t]],["umount",[t]]])try{await a(e,s);break}catch{}try{await (0,i.rmdir)(t)}catch{}}e.s(["assertSshfsAvailable",0,d,"isMounted",0,c,"isValidKeyPath",0,function(e){return!(!e||u.test(e)||e.includes(".."))&&(e.startsWith("/")||e.startsWith("~/"))},"mountSshfs",0,m,"mountpointFor",0,function(e){return n.default.join(l(),e)},"mountsDir",0,l,"parseSshTarget",0,function(e){let t;if(!e||u.test(e))return null;let s=e.trim(),r=s.indexOf(":");if(r<=0)return null;let i=s.slice(0,r),n=s.slice(r+1);if(!n.startsWith("/")||n.includes(".."))return null;let o=i,a=i.indexOf("@");return a>=0&&(t=i.slice(0,a),o=i.slice(a+1),!t)?null:o&&/^[a-zA-Z0-9.\-]+$/.test(o)&&(!t||/^[a-zA-Z0-9._\-]+$/.test(t))?{user:t,host:o,remotePath:n}:null},"unmountSshfs",0,h])},504445,e=>{"use strict";var t=e.i(750227);let s=globalThis;!s.__wikiRootDir&&process.env.ROOT_DIR&&(s.__wikiRootDir=t.default.resolve(process.env.ROOT_DIR)),e.s(["clearRootDir",0,function(){s.__wikiRootDir=void 0},"getRootDir",0,function(){return s.__wikiRootDir??""},"isRootDirSet",0,function(){return!!s.__wikiRootDir},"setRootDir",0,function(e){s.__wikiRootDir=t.default.resolve(e)}])},660038,e=>{"use strict";var t=e.i(750227),s=e.i(254226),r=e.i(583627),i=e.i(504445),n=e.i(359211);async function o(e){let s;await (0,n.migrateConfigToWorkspaces)();let r=new URL(e.url).searchParams.get("ws")??e.headers.get("x-workspace")??null;if(r)s=await (0,n.getWorkspace)(r)??null;else{let e=await (0,n.listWorkspaces)();if(0===e.length){let e;s=(e=(0,i.getRootDir)())?{id:"ws_default",name:t.default.basename(e)||"workspace",rootDir:e,createdAt:new Date(0).toISOString()}:null}else s=e.slice().sort((e,t)=>{let s=e.lastOpenedAt?new Date(e.lastOpenedAt).getTime():0,r=t.lastOpenedAt?new Date(t.lastOpenedAt).getTime():0;return r!==s?r-s:e.id<t.id?-1:+(e.id>t.id)})[0]}return s?.ssh&&await (0,n.ensureWorkspaceMounted)(s),s}async function a(e,t="read"){if("1"===process.env.WIKI_NO_AUTH){let s=await o(e);return s?"write"===t&&s.readOnly?{ok:!1,status:403,code:"WORKSPACE_READ_ONLY"}:{ok:!0,ws:s,rootDir:s.rootDir,userId:"local",isAdmin:!0}:{ok:!1,status:400,code:"WORKSPACE_REQUIRED"}}let i=await (0,s.requireUser)(e);if(!i.ok)return{ok:!1,status:401,code:"UNAUTHORIZED"};let u=await (0,r.isAdmin)(i.user.id,i.user.email),l=new URL(e.url).searchParams.get("ws")??e.headers.get("x-workspace")??null,d=await o(e);return d?(0,n.userCanAccess)(d,i.user.id,u)?"write"===t&&d.readOnly?{ok:!1,status:403,code:"WORKSPACE_READ_ONLY"}:{ok:!0,ws:d,rootDir:d.rootDir,userId:i.user.id,isAdmin:u}:{ok:!1,status:403,code:"WORKSPACE_FORBIDDEN"}:{ok:!1,status:l?404:400,code:l?"WORKSPACE_NOT_FOUND":"WORKSPACE_REQUIRED"}}async function u(e,t="read"){let s=await o(e);if(!s){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&&s.readOnly?{ok:!1,status:403,code:"WORKSPACE_READ_ONLY"}:{ok:!0,ws:s,rootDir:s.rootDir}}e.s(["resolveWorkspaceForAgent",0,u,"resolveWorkspaceForUser",0,a])},224361,(e,t,s)=>{t.exports=e.x("util",()=>require("util"))},688947,(e,t,s)=>{t.exports=e.x("stream",()=>require("stream"))},427699,(e,t,s)=>{t.exports=e.x("events",()=>require("events"))},81111,(e,t,s)=>{t.exports=e.x("node:stream",()=>require("node:stream"))},500874,(e,t,s)=>{t.exports=e.x("buffer",()=>require("buffer"))},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]__068ni_k._.js","server/chunks/src_lib_search_0ymmp0c._.js"].map(t=>e.l(t))).then(()=>t(437856)))}];
2
+
3
+ //# sourceMappingURL=%5Broot-of-the-server%5D__0sfrx~.._.js.map
@@ -0,0 +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 i(){return(await (0,t.readConfig)()).adminUserIds??[]}async function n(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,n,"ensureBootstrapAdmin",0,l,"isAdmin",0,a,"listAdmins",0,i,"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),i=e.i(750227),n=e.i(660526);let o=(0,s.promisify)(r.execFile),l=/[;|&$`<>(){}\n\r\0]/;function u(){return i.default.join(n.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 s=i.default.resolve(t),n=!1;try{n=(await (0,a.readFile)("/proc/mounts","utf8")).split("\n").some(e=>{let t=e.split(" ");return t[1]===s&&/fuse/.test(t[2]??"")})}catch{n=!1}return!!n&&(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 c(),await (0,a.mkdir)(e.mountpoint,{recursive:!0});let t=function(e){let{target:t,mountpoint:r,port:s,authMethod:a,keyPath:i,readOnly:n}=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(n&&u.push("ro"),"keyfile"===a&&i&&(u.push(`IdentityFile=${i}`),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 i=(0,r.spawn)("sshfs",t,{stdio:["pipe","ignore","pipe"]}),n="",o=setTimeout(()=>{i.kill("SIGKILL"),a(Error("sshfs mount timed out after 25s."))},25e3);i.stderr?.on("data",e=>{n+=e.toString()}),i.on("error",e=>{clearTimeout(o),a(e.message.includes("ENOENT")?Error("sshfs binary not found on PATH."):e)}),i.on("close",e=>{clearTimeout(o),0===e?s():a(Error(`sshfs exited ${e}: ${n.trim()||"mount failed"}`))}),"password"===e.authMethod&&i.stdin?.write((e.password??"")+"\n"),i.stdin?.end()}),!await d(e.mountpoint))throw Error("sshfs reported success but the mount is not live.")}async function h(e){let t=i.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,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 i.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),i=r.slice(s+1);if(!i.startsWith("/")||i.includes(".."))return null;let n=a,o=a.indexOf("@");return o>=0&&(t=a.slice(0,o),n=a.slice(o+1),!t)?null:n&&/^[a-zA-Z0-9.\-]+$/.test(n)&&(!t||/^[a-zA-Z0-9._\-]+$/.test(t))?{user:t,host:n,remotePath:i}: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),i=e.i(359211);async function n(e){let r;await (0,i.migrateConfigToWorkspaces)();let s=new URL(e.url).searchParams.get("ws")??e.headers.get("x-workspace")??null;if(s)r=await (0,i.getWorkspace)(s)??null;else{let e=await (0,i.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,i.ensureWorkspaceMounted)(r),r}async function o(e,t="read"){if("1"===process.env.WIKI_NO_AUTH){let r=await n(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,c=await n(e);return c?(0,i.userCanAccess)(c,a.user.id,l)?"write"===t&&c.readOnly?{ok:!1,status:403,code:"WORKSPACE_READ_ONLY"}:{ok:!0,ws:c,rootDir:c.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 n(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 i=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 i.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(i.has(`${e}//${t}`))return null}catch{}return t.NextResponse.json({error:"FORBIDDEN",message:"Bad referer"},{status:403})}return null}])},719126,e=>{"use strict";var t=e.i(666680),r=e.i(912714),s=e.i(750227);function a(e){let t=e.replace(/\\/g,"/");return".proof"===t||t.startsWith(".proof/")||".git"===t||t.startsWith(".git/")}async function i(e,t){if(!e)return null;let i=s.default.normalize(t);if(i.startsWith("..")||s.default.isAbsolute(i)||a(i))return null;let n=s.default.join(e,i);if(n!==e&&!n.startsWith(e+s.default.sep))return null;try{let t=await (0,r.realpath)(n);if(t!==e&&!t.startsWith(e+s.default.sep))return null}catch{let t=s.default.dirname(n);if(t!==n)try{let a=await (0,r.realpath)(t);if(a!==e&&!a.startsWith(e+s.default.sep))return null}catch{}}return n}let n={".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 s=420;try{let t=await (0,r.stat)(e);s=511&t.mode}catch{}let a=e+".~"+process.pid+"."+Date.now()+".tmp",i=await (0,r.open)(a,"w",s);try{await i.write(t),await i.datasync()}finally{await i.close()}await (0,r.rename)(a,e)}async function l(e,t){let a=s.default.dirname(e);if(t)return await (0,r.mkdir)(a,{recursive:!0}),!0;try{return await (0,r.stat)(a),!0}catch{return!1}}e.s(["atomicWrite",0,o,"ensureParentDir",0,l,"extractShaHex",0,function(e){return e.replace(/^"/,"").replace(/"$/,"").replace(/^sha256:/,"")},"isDeniedRelPath",0,a,"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 n[s.default.extname(e).toLowerCase()]??"application/octet-stream"},"safeAbsPath",0,i,"sha256ofBuf",0,function(e){return"sha256:"+(0,t.createHash)("sha256").update(e).digest("hex")}])},81111,(e,t,r)=>{t.exports=e.x("node:stream",()=>require("node:stream"))},687769,(e,t,r)=>{t.exports=e.x("node:events",()=>require("node:events"))},275859,e=>{"use strict";var t=e.i(912714),r=e.i(750227);async function s(e,s){try{let a=r.default.join(e,s,"package.json");return(await (0,t.stat)(a)).isFile()}catch{return!1}}async function a(e,s){try{let a=r.default.join(e,s,"index.html");return(await (0,t.stat)(a)).isFile()}catch{return!1}}e.s(["isAppFolder",0,a,"isNodeApp",0,s])},58283,e=>{"use strict";var t=e.i(364564),r=e.i(102095),s=e.i(691091),a=e.i(475331),i=e.i(490301),n=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 v=e.i(530564),g=e.i(702414),R=e.i(402662),_=e.i(660038),y=e.i(437856);async function x(e){let t,r=(0,R.checkOrigin)(e);if(r)return r;let s=await (0,_.resolveWorkspaceForUser)(e);if(!s.ok)return g.NextResponse.json({error:s.code},{status:s.status});try{t=await e.json()}catch{return g.NextResponse.json({error:"INVALID_PAYLOAD"},{status:400})}let a="string"==typeof t.query?t.query:"",i=Math.min("number"==typeof t.limit?t.limit:30,200);(0,y.ensureIndexer)(s.ws.id,s.rootDir).catch(e=>console.error("[search] ensureIndexer failed",e));let n=(0,y.ftsSearch)(s.ws.id,a,i);return g.NextResponse.json({kind:"fts",query:a,matches:n.matches,truncated:n.truncated})}e.s(["POST",0,x,"runtime",0,"nodejs"],725535);var A=e.i(725535);let k=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/wiki/search/route",pathname:"/api/wiki/search",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/wiki/search/route.ts",nextConfigOutput:"standalone",userland:A,...{}}),{workAsyncStorage:E,workUnitAsyncStorage:O,serverHooks:I}=k;async function D(e,t,s){s.requestMeta&&(0,a.setRequestMeta)(e,s.requestMeta),k.isDev&&(0,a.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let g="/api/wiki/search/route";g=g.replace(/\/index$/,"")||"/";let R=await k.prepare(e,t,{srcPage:g,multiZoneDraftMode:!1});if(!R)return t.statusCode=400,t.end("Bad Request"),null==s.waitUntil||s.waitUntil.call(s,Promise.resolve()),null;let{buildId:_,params:y,nextConfig:x,parsedUrl:A,isDraftMode:E,prerenderManifest:O,routerServerContext:I,isOnDemandRevalidate:D,revalidateOnlyGenerated:P,resolvedPathname:C,clientReferenceManifest:N,serverActionsManifest:S}=R,T=(0,o.normalizeAppPath)(g),j=!!(O.dynamicRoutes[T]||O.routes[C]),U=async()=>((null==I?void 0:I.render404)?await I.render404(e,t,A,!1):t.end("This page could not be found"),null);if(j&&!E){let e=!!O.routes[C],t=O.dynamicRoutes[T];if(t&&!1===t.fallback&&!e){if(x.adapterPath)return await U();throw new w.NoFallbackError}}let b=null;!j||k.isDev||E||(b="/index"===(b=C)?"/":b);let W=!0===k.isDev||!j,q=j&&!W;S&&N&&(0,n.setManifestsSingleton)({page:g,clientReferenceManifest:N,serverActionsManifest:S});let M=e.method||"GET",H=(0,i.getTracer)(),K=H.getActiveScopeSpan(),$=!!(null==I?void 0:I.isWrappedByNextServer),F=!!(0,a.getRequestMeta)(e,"minimalMode"),L=(0,a.getRequestMeta)(e,"incrementalCache")||await k.getIncrementalCache(e,x,O,F);null==L||L.resetRequestCache(),globalThis.__incrementalCache=L;let B={params:y,previewProps:O.preview,renderOpts:{experimental:{authInterrupts:!!x.experimental.authInterrupts},cacheComponents:!!x.cacheComponents,supportsDynamicResponse:W,incrementalCache:L,cacheLifeProfiles:x.cacheLife,waitUntil:s.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,s,a)=>k.onRequestError(e,t,s,a,I)},sharedContext:{buildId:_}},z=new l.NodeNextRequest(e),G=new l.NodeNextResponse(t),V=u.NextRequestAdapter.fromNodeNextRequest(z,(0,u.signalFromNodeResponse)(t));try{let a,n=async e=>k.handle(V,B).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=H.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 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),a&&a!==e&&(a.setAttribute("http.route",s),a.updateName(t))}else e.updateName(`${M} ${g}`)}),o=async a=>{var i,o;let l=async({previousCacheEntry:r})=>{try{if(!F&&D&&P&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let i=await n(a);e.fetchMetrics=B.renderOpts.fetchMetrics;let o=B.renderOpts.pendingWaitUntil;o&&s.waitUntil&&(s.waitUntil(o),o=void 0);let l=B.renderOpts.collectedTags;if(!j)return await (0,p.sendResponse)(z,G,i,B.renderOpts.pendingWaitUntil),null;{let e=await i.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(i.headers);l&&(t[m.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==B.renderOpts.collectedRevalidate&&!(B.renderOpts.collectedRevalidate>=m.INFINITE_CACHE)&&B.renderOpts.collectedRevalidate,s=void 0===B.renderOpts.collectedExpire||B.renderOpts.collectedExpire>=m.INFINITE_CACHE?void 0:B.renderOpts.collectedExpire;return{value:{kind:v.CachedRouteKind.APP_ROUTE,status:i.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:s}}}}catch(t){throw(null==r?void 0:r.isStale)&&await k.onRequestError(e,t,{routerKind:"App Router",routePath:g,routeType:"route",revalidateReason:(0,d.getRevalidateReason)({isStaticGeneration:q,isOnDemandRevalidate:D})},!1,I),t}},u=await k.handleResponse({req:e,nextConfig:x,cacheKey:b,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:O,isRoutePPREnabled:!1,isOnDemandRevalidate:D,revalidateOnlyGenerated:P,responseGenerator:l,waitUntil:s.waitUntil,isMinimalMode:F});if(!j)return null;if((null==u||null==(i=u.value)?void 0:i.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});F||t.setHeader("x-nextjs-cache",D?"REVALIDATED":u.isMiss?"MISS":u.isStale?"STALE":"HIT"),E&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let c=(0,h.fromNodeOutgoingHttpHeaders)(u.value.headers);return F&&j||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,G,new Response(u.value.body,{headers:c,status:u.value.status||200})),null};$&&K?await o(K):(a=H.getActiveScopeSpan(),await H.withPropagatedContext(e.headers,()=>H.trace(c.BaseServerSpan.handleRequest,{spanName:`${M} ${g}`,kind:i.SpanKind.SERVER,attributes:{"http.method":M,"http.target":e.url}},o),void 0,!$))}catch(t){if(t instanceof w.NoFallbackError||await k.onRequestError(e,t,{routerKind:"App Router",routePath:T,routeType:"route",revalidateReason:(0,d.getRevalidateReason)({isStaticGeneration:q,isOnDemandRevalidate:D})},!1,I),j)throw t;return await (0,p.sendResponse)(z,G,new Response(null,{status:500})),null}}e.s(["handler",0,D,"patchFetch",0,function(){return(0,s.patchFetch)({workAsyncStorage:E,workUnitAsyncStorage:O})},"routeModule",0,k,"serverHooks",0,I,"workAsyncStorage",0,E,"workUnitAsyncStorage",0,O],58283)},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(e=>Promise.resolve().then(()=>e(437856)))}];
2
+
3
+ //# sourceMappingURL=%5Broot-of-the-server%5D__0sggstu._.js.map
@@ -0,0 +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}])},489209,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),f=e.i(157569),m=e.i(844146),v=e.i(193695);e.i(105888);var w=e.i(530564),_=e.i(702414),g=e.i(402662),y=e.i(583627),R=e.i(359211);async function E(e,{params:t}){let r=(0,g.checkOrigin)(e);if(r)return r;let s=await (0,y.requireAdmin)(e);if(!s.ok)return _.NextResponse.json({error:s.code},{status:s.status});let{id:n}=await t;try{let e=await (0,R.refreshGitWorkspace)(n);return _.NextResponse.json({ok:!0,...e})}catch(t){let e=t instanceof Error?t.message:String(t);return _.NextResponse.json({error:e},{status:400})}}e.s(["POST",0,E,"runtime",0,"nodejs"],604442);var A=e.i(604442);let x=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/system/workspaces/[id]/refresh/route",pathname:"/api/system/workspaces/[id]/refresh",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/system/workspaces/[id]/refresh/route.ts",nextConfigOutput:"standalone",userland:A,...{}}),{workAsyncStorage:I,workUnitAsyncStorage:k,serverHooks:C}=x;async function P(e,t,s){s.requestMeta&&(0,n.setRequestMeta)(e,s.requestMeta),x.isDev&&(0,n.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let _="/api/system/workspaces/[id]/refresh/route";_=_.replace(/\/index$/,"")||"/";let g=await x.prepare(e,t,{srcPage:_,multiZoneDraftMode:!1});if(!g)return t.statusCode=400,t.end("Bad Request"),null==s.waitUntil||s.waitUntil.call(s,Promise.resolve()),null;let{buildId:y,params:R,nextConfig:E,parsedUrl:A,isDraftMode:I,prerenderManifest:k,routerServerContext:C,isOnDemandRevalidate:P,revalidateOnlyGenerated:N,resolvedPathname:S,clientReferenceManifest:T,serverActionsManifest:O}=g,b=(0,o.normalizeAppPath)(_),U=!!(k.dynamicRoutes[b]||k.routes[S]),j=async()=>((null==C?void 0:C.render404)?await C.render404(e,t,A,!1):t.end("This page could not be found"),null);if(U&&!I){let e=!!k.routes[S],t=k.dynamicRoutes[b];if(t&&!1===t.fallback&&!e){if(E.adapterPath)return await j();throw new v.NoFallbackError}}let q=null;!U||x.isDev||I||(q="/index"===(q=S)?"/":q);let D=!0===x.isDev||!U,M=U&&!D;O&&T&&(0,i.setManifestsSingleton)({page:_,clientReferenceManifest:T,serverActionsManifest:O});let $=e.method||"GET",H=(0,a.getTracer)(),B=H.getActiveScopeSpan(),K=!!(null==C?void 0:C.isWrappedByNextServer),F=!!(0,n.getRequestMeta)(e,"minimalMode"),L=(0,n.getRequestMeta)(e,"incrementalCache")||await x.getIncrementalCache(e,E,k,F);null==L||L.resetRequestCache(),globalThis.__incrementalCache=L;let W={params:R,previewProps:k.preview,renderOpts:{experimental:{authInterrupts:!!E.experimental.authInterrupts},cacheComponents:!!E.cacheComponents,supportsDynamicResponse:D,incrementalCache:L,cacheLifeProfiles:E.cacheLife,waitUntil:s.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,s,n)=>x.onRequestError(e,t,s,n,C)},sharedContext:{buildId:y}},z=new l.NodeNextRequest(e),G=new l.NodeNextResponse(t),V=u.NextRequestAdapter.fromNodeNextRequest(z,(0,u.signalFromNodeResponse)(t));try{let n,i=async e=>x.handle(V,W).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=H.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=`${$} ${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(`${$} ${_}`)}),o=async n=>{var a,o;let l=async({previousCacheEntry:r})=>{try{if(!F&&P&&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(n);e.fetchMetrics=W.renderOpts.fetchMetrics;let o=W.renderOpts.pendingWaitUntil;o&&s.waitUntil&&(s.waitUntil(o),o=void 0);let l=W.renderOpts.collectedTags;if(!U)return await (0,p.sendResponse)(z,G,a,W.renderOpts.pendingWaitUntil),null;{let e=await a.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(a.headers);l&&(t[m.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==W.renderOpts.collectedRevalidate&&!(W.renderOpts.collectedRevalidate>=m.INFINITE_CACHE)&&W.renderOpts.collectedRevalidate,s=void 0===W.renderOpts.collectedExpire||W.renderOpts.collectedExpire>=m.INFINITE_CACHE?void 0:W.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 x.onRequestError(e,t,{routerKind:"App Router",routePath:_,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:M,isOnDemandRevalidate:P})},!1,C),t}},u=await x.handleResponse({req:e,nextConfig:E,cacheKey:q,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:k,isRoutePPREnabled:!1,isOnDemandRevalidate:P,revalidateOnlyGenerated:N,responseGenerator:l,waitUntil:s.waitUntil,isMinimalMode:F});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});F||t.setHeader("x-nextjs-cache",P?"REVALIDATED":u.isMiss?"MISS":u.isStale?"STALE":"HIT"),I&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let d=(0,h.fromNodeOutgoingHttpHeaders)(u.value.headers);return F&&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&&B?await o(B):(n=H.getActiveScopeSpan(),await H.withPropagatedContext(e.headers,()=>H.trace(d.BaseServerSpan.handleRequest,{spanName:`${$} ${_}`,kind:a.SpanKind.SERVER,attributes:{"http.method":$,"http.target":e.url}},o),void 0,!K))}catch(t){if(t instanceof v.NoFallbackError||await x.onRequestError(e,t,{routerKind:"App Router",routePath:b,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:M,isOnDemandRevalidate:P})},!1,C),U)throw t;return await (0,p.sendResponse)(z,G,new Response(null,{status:500})),null}}e.s(["handler",0,P,"patchFetch",0,function(){return(0,s.patchFetch)({workAsyncStorage:I,workUnitAsyncStorage:k})},"routeModule",0,x,"serverHooks",0,C,"workAsyncStorage",0,I,"workUnitAsyncStorage",0,k],489209)},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
+
3
+ //# sourceMappingURL=%5Broot-of-the-server%5D__0u81k~2._.js.map
@@ -0,0 +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 i(){return(await (0,t.readConfig)()).adminUserIds??[]}async function a(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,a,"ensureBootstrapAdmin",0,l,"isAdmin",0,n,"listAdmins",0,i,"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),i=e.i(750227),a=e.i(660526);let o=(0,s.promisify)(r.execFile),l=/[;|&$`<>(){}\n\r\0]/;function u(){return i.default.join(a.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=i.default.resolve(t),a=!1;try{a=(await (0,n.readFile)("/proc/mounts","utf8")).split("\n").some(e=>{let t=e.split(" ");return t[1]===s&&/fuse/.test(t[2]??"")})}catch{a=!1}return!!a&&(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:i,readOnly:a}=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(a&&u.push("ro"),"keyfile"===n&&i&&(u.push(`IdentityFile=${i}`),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 i=(0,r.spawn)("sshfs",t,{stdio:["pipe","ignore","pipe"]}),a="",o=setTimeout(()=>{i.kill("SIGKILL"),n(Error("sshfs mount timed out after 25s."))},25e3);i.stderr?.on("data",e=>{a+=e.toString()}),i.on("error",e=>{clearTimeout(o),n(e.message.includes("ENOENT")?Error("sshfs binary not found on PATH."):e)}),i.on("close",e=>{clearTimeout(o),0===e?s():n(Error(`sshfs exited ${e}: ${a.trim()||"mount failed"}`))}),"password"===e.authMethod&&i.stdin?.write((e.password??"")+"\n"),i.stdin?.end()}),!await c(e.mountpoint))throw Error("sshfs reported success but the mount is not live.")}async function h(e){let t=i.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 i.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),i=r.slice(s+1);if(!i.startsWith("/")||i.includes(".."))return null;let a=n,o=n.indexOf("@");return o>=0&&(t=n.slice(0,o),a=n.slice(o+1),!t)?null:a&&/^[a-zA-Z0-9.\-]+$/.test(a)&&(!t||/^[a-zA-Z0-9._\-]+$/.test(t))?{user:t,host:a,remotePath:i}: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),n=e.i(504445),i=e.i(359211);async function a(e){let r;await (0,i.migrateConfigToWorkspaces)();let s=new URL(e.url).searchParams.get("ws")??e.headers.get("x-workspace")??null;if(s)r=await (0,i.getWorkspace)(s)??null;else{let e=await (0,i.listWorkspaces)();if(0===e.length){let e;r=(e=(0,n.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,i.ensureWorkspaceMounted)(r),r}async function o(e,t="read"){if("1"===process.env.WIKI_NO_AUTH){let r=await a(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 n=await (0,r.requireUser)(e);if(!n.ok)return{ok:!1,status:401,code:"UNAUTHORIZED"};let l=await (0,s.isAdmin)(n.user.id,n.user.email),u=new URL(e.url).searchParams.get("ws")??e.headers.get("x-workspace")??null,d=await a(e);return d?(0,i.userCanAccess)(d,n.user.id,l)?"write"===t&&d.readOnly?{ok:!1,status:403,code:"WORKSPACE_READ_ONLY"}:{ok:!0,ws:d,rootDir:d.rootDir,userId:n.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 a(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"),n=e.headers.get("referer");if(!s&&!n)return null;let i=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 i.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(i.has(`${e}//${t}`))return null}catch{}return t.NextResponse.json({error:"FORBIDDEN",message:"Bad referer"},{status:403})}return null}])},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"))},973909,e=>{"use strict";var t=e.i(912714),r=e.i(750227);function s(e,t){return r.default.join(e,".proof",t+".json")}async function n(e,r){let n=s(e,r);try{let e=await (0,t.readFile)(n,"utf-8"),r=JSON.parse(e);if(1!==r.schemaVersion)throw Error(`Sidecar schema version mismatch: expected 1, got ${r.schemaVersion}`);return r}catch(e){if(e instanceof Error&&"code"in e&&"ENOENT"===e.code)return null;throw e}}async function i(e,n,i){let a=s(e,n);await (0,t.mkdir)(r.default.dirname(a),{recursive:!0});let o=a+".tmp";await (0,t.writeFile)(o,JSON.stringify(i,null,2),"utf-8"),await (0,t.rename)(o,a)}async function a(e,n,i){let a=s(e,n),o=s(e,i);try{await (0,t.mkdir)(r.default.dirname(o),{recursive:!0}),await (0,t.rename)(a,o)}catch(e){if("ENOENT"===e.code)return;throw e}}async function o(e,r){let n=s(e,r);try{await (0,t.unlink)(n)}catch(e){if("ENOENT"===e.code)return;throw e}}e.s(["deleteSidecar",0,o,"emptySidecar",0,function(e){let t=new Date().toISOString();return{schemaVersion:1,path:e,revision:0,createdAt:t,updatedAt:t,refMap:{},refAliases:{},comments:[],suggestions:[],archivedSuggestions:[],events:[],nextEventId:1,lastAck:{},fingerprint:"",blockProvenance:{}}},"moveSidecar",0,a,"readSidecar",0,n,"writeSidecar",0,i])},307764,e=>{"use strict";e.s(["emitEvents",0,function(e,t){let r=[];for(let s of t){let t={...s,id:e.nextEventId++};e.events.push(t),r.push(t)}return r},"pollEvents",0,function(e,t,r){return e.events.filter(e=>e.id>t).slice(0,r)},"trimEvents",0,function(e,t){if(e.events.length<=t)return;let r=Object.values(e.lastAck),s=r.length>0?Math.min(...r):1/0,n=e.events.length-t,i=e.events.filter((e,t)=>t>=n||e.id>s);e.events=i}])},794776,e=>{"use strict";let t,r=Number.isFinite(t=parseInt(process.env.AGENT_RATE_LIMIT??"",10))&&t>0?t:60;e.s(["OPS_PER_MINUTE",0,r,"SIDECAR_EVENT_TRIM_SIZE",0,1e3,"SIDECAR_TRIM_EVERY_N_MUTATIONS",0,100])},265484,e=>{"use strict";var t=e.i(364564),r=e.i(102095),s=e.i(691091),n=e.i(475331),i=e.i(490301),a=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),v=e.i(193695);e.i(105888);var w=e.i(530564),R=e.i(666680),_=e.i(912714),g=e.i(750227),E=e.i(702414),y=e.i(402662),k=e.i(660038),A=e.i(359211),I=e.i(307764),x=e.i(832852),N=e.i(973909),S=e.i(794776);let O=new Set(["txt","md","markdown","json","yaml","yml","toml","csv","tsv","xml","html","css","js","ts","tsx","jsx","sh","bash","zsh","rb","py","go","rs","java","c","cpp","h","php","swift","kt","lua","sql","scss","mmd","mermaid","ini","env","log","conf"]),T=new Set(["md","markdown"]);function D(e){let t=e.split(".").pop()?.toLowerCase()??"";return O.has(t)}function C(e){let t=e.split(".").pop()?.toLowerCase()??"";return T.has(t)}async function P(e){let t=await (0,k.resolveWorkspaceForUser)(e);if(!t.ok)return E.NextResponse.json({error:t.code},{status:t.status});let{rootDir:r}=t,{searchParams:s}=new URL(e.url),n=s.get("path")??"",i=(0,A.safeWorkspacePath)(r,n);if(!i)return E.NextResponse.json({error:"Invalid path"},{status:400});if(!D(g.default.basename(i)))return E.NextResponse.json({error:"Not a text file"},{status:400});try{let e=await (0,_.readFile)(i);if(e.length>1048576)return E.NextResponse.json({error:"File too large (max 1MB)"},{status:413});let t=e.toString("utf-8"),s={};if(C(g.default.basename(i))){let e=await (0,N.readSidecar)(r,n);e&&(s["X-Wiki-Revision"]=String(e.revision),s["X-Wiki-Fingerprint"]=e.fingerprint)}return E.NextResponse.json({content:t},{headers:s})}catch{return E.NextResponse.json({error:"File not found"},{status:404})}}async function b(e){let t=(0,y.checkOrigin)(e);if(t)return t;let r=await (0,k.resolveWorkspaceForUser)(e,"write");if(!r.ok)return E.NextResponse.json({error:r.code},{status:r.status});let{rootDir:s}=r,n=await e.json(),i=n.path,a=n.content;if(!i||"string"!=typeof i)return E.NextResponse.json({error:"Invalid path"},{status:400});if("string"!=typeof a)return E.NextResponse.json({error:"Missing content"},{status:400});let o=(0,A.safeWorkspacePath)(s,i);if(!o)return E.NextResponse.json({error:"Invalid path"},{status:400});if(!D(g.default.basename(o)))return E.NextResponse.json({error:"Not a text file"},{status:400});if(!C(g.default.basename(o)))try{return await (0,_.mkdir)(g.default.dirname(o),{recursive:!0}),await (0,_.writeFile)(o,a,"utf-8"),E.NextResponse.json({ok:!0})}catch{return E.NextResponse.json({error:"Failed to save"},{status:500})}return(0,x.withFileMutex)(`${s}\u0000${i}`,async()=>{let e=await (0,N.readSidecar)(s,i)??(0,N.emptySidecar)(i);if(void 0===n.baseRevision||"number"!=typeof n.baseRevision)return E.NextResponse.json({error:"BASE_REVISION_REQUIRED",message:"baseRevision is required when saving markdown files."},{status:400});if(n.baseRevision!==e.revision)return E.NextResponse.json({error:"STALE_REVISION",currentRevision:e.revision,message:"File was modified since your last read. Reload and retry."},{status:409});try{await (0,_.mkdir)(g.default.dirname(o),{recursive:!0}),await (0,_.writeFile)(o,a,"utf-8")}catch{return E.NextResponse.json({error:"Failed to save"},{status:500})}let t=e.revision+1;return e.revision=t,e.fingerprint="sha256:"+(0,R.createHash)("sha256").update(a,"utf8").digest("hex"),e.updatedAt=new Date().toISOString(),(0,I.emitEvents)(e,[{type:"file.edited",at:new Date().toISOString(),by:`user:${r.userId}`,revision:t}]),(0,I.trimEvents)(e,S.SIDECAR_EVENT_TRIM_SIZE),await (0,N.writeSidecar)(s,i,e),E.NextResponse.json({ok:!0,revision:t})})}e.s(["GET",0,P,"PUT",0,b],400832);var U=e.i(400832);let j=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/wiki/content/route",pathname:"/api/wiki/content",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/wiki/content/route.ts",nextConfigOutput:"standalone",userland:U,...{}}),{workAsyncStorage:M,workUnitAsyncStorage:q,serverHooks:F}=j;async function W(e,t,s){s.requestMeta&&(0,n.setRequestMeta)(e,s.requestMeta),j.isDev&&(0,n.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let R="/api/wiki/content/route";R=R.replace(/\/index$/,"")||"/";let _=await j.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:E,nextConfig:y,parsedUrl:k,isDraftMode:A,prerenderManifest:I,routerServerContext:x,isOnDemandRevalidate:N,revalidateOnlyGenerated:S,resolvedPathname:O,clientReferenceManifest:T,serverActionsManifest:D}=_,C=(0,o.normalizeAppPath)(R),P=!!(I.dynamicRoutes[C]||I.routes[O]),b=async()=>((null==x?void 0:x.render404)?await x.render404(e,t,k,!1):t.end("This page could not be found"),null);if(P&&!A){let e=!!I.routes[O],t=I.dynamicRoutes[C];if(t&&!1===t.fallback&&!e){if(y.adapterPath)return await b();throw new v.NoFallbackError}}let U=null;!P||j.isDev||A||(U="/index"===(U=O)?"/":U);let M=!0===j.isDev||!P,q=P&&!M;D&&T&&(0,a.setManifestsSingleton)({page:R,clientReferenceManifest:T,serverActionsManifest:D});let F=e.method||"GET",W=(0,i.getTracer)(),$=W.getActiveScopeSpan(),H=!!(null==x?void 0:x.isWrappedByNextServer),K=!!(0,n.getRequestMeta)(e,"minimalMode"),L=(0,n.getRequestMeta)(e,"incrementalCache")||await j.getIncrementalCache(e,y,I,K);null==L||L.resetRequestCache(),globalThis.__incrementalCache=L;let B={params:E,previewProps:I.preview,renderOpts:{experimental:{authInterrupts:!!y.experimental.authInterrupts},cacheComponents:!!y.cacheComponents,supportsDynamicResponse:M,incrementalCache:L,cacheLifeProfiles:y.cacheLife,waitUntil:s.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,s,n)=>j.onRequestError(e,t,s,n,x)},sharedContext:{buildId:g}},V=new l.NodeNextRequest(e),z=new l.NodeNextResponse(t),G=u.NextRequestAdapter.fromNodeNextRequest(V,(0,u.signalFromNodeResponse)(t));try{let n,a=async e=>j.handle(G,B).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=W.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=`${F} ${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(`${F} ${R}`)}),o=async n=>{var i,o;let l=async({previousCacheEntry:r})=>{try{if(!K&&N&&S&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let i=await a(n);e.fetchMetrics=B.renderOpts.fetchMetrics;let o=B.renderOpts.pendingWaitUntil;o&&s.waitUntil&&(s.waitUntil(o),o=void 0);let l=B.renderOpts.collectedTags;if(!P)return await (0,p.sendResponse)(V,z,i,B.renderOpts.pendingWaitUntil),null;{let e=await i.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(i.headers);l&&(t[m.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==B.renderOpts.collectedRevalidate&&!(B.renderOpts.collectedRevalidate>=m.INFINITE_CACHE)&&B.renderOpts.collectedRevalidate,s=void 0===B.renderOpts.collectedExpire||B.renderOpts.collectedExpire>=m.INFINITE_CACHE?void 0:B.renderOpts.collectedExpire;return{value:{kind:w.CachedRouteKind.APP_ROUTE,status:i.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:s}}}}catch(t){throw(null==r?void 0:r.isStale)&&await j.onRequestError(e,t,{routerKind:"App Router",routePath:R,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:q,isOnDemandRevalidate:N})},!1,x),t}},u=await j.handleResponse({req:e,nextConfig:y,cacheKey:U,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:I,isRoutePPREnabled:!1,isOnDemandRevalidate:N,revalidateOnlyGenerated:S,responseGenerator:l,waitUntil:s.waitUntil,isMinimalMode:K});if(!P)return null;if((null==u||null==(i=u.value)?void 0:i.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",N?"REVALIDATED":u.isMiss?"MISS":u.isStale?"STALE":"HIT"),A&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let d=(0,h.fromNodeOutgoingHttpHeaders)(u.value.headers);return K&&P||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)(V,z,new Response(u.value.body,{headers:d,status:u.value.status||200})),null};H&&$?await o($):(n=W.getActiveScopeSpan(),await W.withPropagatedContext(e.headers,()=>W.trace(d.BaseServerSpan.handleRequest,{spanName:`${F} ${R}`,kind:i.SpanKind.SERVER,attributes:{"http.method":F,"http.target":e.url}},o),void 0,!H))}catch(t){if(t instanceof v.NoFallbackError||await j.onRequestError(e,t,{routerKind:"App Router",routePath:C,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:q,isOnDemandRevalidate:N})},!1,x),P)throw t;return await (0,p.sendResponse)(V,z,new Response(null,{status:500})),null}}e.s(["handler",0,W,"patchFetch",0,function(){return(0,s.patchFetch)({workAsyncStorage:M,workUnitAsyncStorage:q})},"routeModule",0,j,"serverHooks",0,F,"workAsyncStorage",0,M,"workUnitAsyncStorage",0,q],265484)},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
+
3
+ //# sourceMappingURL=%5Broot-of-the-server%5D__0uibxf_._.js.map
@@ -0,0 +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])},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),n=e.i(504445),a=e.i(359211);async function i(e){let r;await (0,a.migrateConfigToWorkspaces)();let s=new URL(e.url).searchParams.get("ws")??e.headers.get("x-workspace")??null;if(s)r=await (0,a.getWorkspace)(s)??null;else{let e=await (0,a.listWorkspaces)();if(0===e.length){let e;r=(e=(0,n.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,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 n=await (0,r.requireUser)(e);if(!n.ok)return{ok:!1,status:401,code:"UNAUTHORIZED"};let l=await (0,s.isAdmin)(n.user.id,n.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,n.user.id,l)?"write"===t&&d.readOnly?{ok:!1,status:403,code:"WORKSPACE_READ_ONLY"}:{ok:!0,ws:d,rootDir:d.rootDir,userId:n.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])},889264,e=>{"use strict";let t=globalThis;function r(){return t.__wikiLeaseStore}function s(e,t){return`${e}\u0000${t}`}function n(e,t){let n=r(),a=s(e,t),i=n.leases.get(a);return!!i&&(!(Date.now()>=i.expiresAt)||(n.leases.delete(a),n.generations.set(a,(n.generations.get(a)??0)+1),!1))}t.__wikiLeaseStore||(t.__wikiLeaseStore={leases:new Map,generations:new Map}),e.s(["clearLease",0,function(e,t,n){let a=r(),i=s(e,t),o=a.leases.get(i);o&&o.userId===n&&(a.leases.delete(i),a.generations.set(i,(a.generations.get(i)??0)+1))},"hasActiveLease",0,function(e,t){return n(e,t)},"leaseGeneration",0,function(e,t){let n=s(e,t);return r().generations.get(n)??0},"setLease",0,function(e,t,a,i=9e4){let o=r(),l=s(e,t),u=n(e,t);o.leases.set(l,{userId:a,expiresAt:Date.now()+i}),u||o.generations.set(l,(o.generations.get(l)??0)+1)}])},83930,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),f=e.i(157569),m=e.i(844146),w=e.i(193695);e.i(105888);var _=e.i(530564),v=e.i(702414),R=e.i(660038),g=e.i(359211),A=e.i(889264);function k(e,t,r){return v.NextResponse.json({error:e,message:t},{status:r})}async function y(e){let t,r=await (0,R.resolveWorkspaceForUser)(e);if(!r.ok)return k(r.code,"Not authenticated",r.status);let{rootDir:s}=r;try{t=await e.json()}catch{return k("INVALID_PAYLOAD","Request body must be JSON",400)}let n="string"==typeof t.path?t.path:null,a="string"==typeof t.action?t.action:null;return n?a&&["open","heartbeat","close"].includes(a)?(0,g.safeWorkspacePath)(s,n)?("open"===a||"heartbeat"===a?(0,A.setLease)(s,n,r.userId):(0,A.clearLease)(s,n,r.userId),v.NextResponse.json({ok:!0})):k("INVALID_PATH","Path traversal rejected",400):k("INVALID_ACTION","action must be open | heartbeat | close",400):k("MISSING_PATH","path is required",400)}e.s(["POST",0,y,"runtime",0,"nodejs"],534434);var E=e.i(534434);let I=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/wiki/presence/route",pathname:"/api/wiki/presence",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/wiki/presence/route.ts",nextConfigOutput:"standalone",userland:E,...{}}),{workAsyncStorage:O,workUnitAsyncStorage:P,serverHooks:D}=I;async function C(e,t,s){s.requestMeta&&(0,n.setRequestMeta)(e,s.requestMeta),I.isDev&&(0,n.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let v="/api/wiki/presence/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==s.waitUntil||s.waitUntil.call(s,Promise.resolve()),null;let{buildId:g,params:A,nextConfig:k,parsedUrl:y,isDraftMode:E,prerenderManifest:O,routerServerContext:P,isOnDemandRevalidate:D,revalidateOnlyGenerated:C,resolvedPathname:N,clientReferenceManifest:S,serverActionsManifest:x}=R,T=(0,o.normalizeAppPath)(v),b=!!(O.dynamicRoutes[T]||O.routes[N]),U=async()=>((null==P?void 0:P.render404)?await P.render404(e,t,y,!1):t.end("This page could not be found"),null);if(b&&!E){let e=!!O.routes[N],t=O.dynamicRoutes[T];if(t&&!1===t.fallback&&!e){if(k.adapterPath)return await U();throw new w.NoFallbackError}}let q=null;!b||I.isDev||E||(q="/index"===(q=N)?"/":q);let j=!0===I.isDev||!b,L=b&&!j;x&&S&&(0,i.setManifestsSingleton)({page:v,clientReferenceManifest:S,serverActionsManifest:x});let M=e.method||"GET",W=(0,a.getTracer)(),H=W.getActiveScopeSpan(),K=!!(null==P?void 0:P.isWrappedByNextServer),$=!!(0,n.getRequestMeta)(e,"minimalMode"),F=(0,n.getRequestMeta)(e,"incrementalCache")||await I.getIncrementalCache(e,k,O,$);null==F||F.resetRequestCache(),globalThis.__incrementalCache=F;let B={params:A,previewProps:O.preview,renderOpts:{experimental:{authInterrupts:!!k.experimental.authInterrupts},cacheComponents:!!k.cacheComponents,supportsDynamicResponse:j,incrementalCache:F,cacheLifeProfiles:k.cacheLife,waitUntil:s.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,s,n)=>I.onRequestError(e,t,s,n,P)},sharedContext:{buildId:g}},z=new l.NodeNextRequest(e),V=new l.NodeNextResponse(t),G=u.NextRequestAdapter.fromNodeNextRequest(z,(0,u.signalFromNodeResponse)(t));try{let n,i=async e=>I.handle(G,B).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=W.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} ${v}`)}),o=async n=>{var a,o;let l=async({previousCacheEntry:r})=>{try{if(!$&&D&&C&&!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=B.renderOpts.fetchMetrics;let o=B.renderOpts.pendingWaitUntil;o&&s.waitUntil&&(s.waitUntil(o),o=void 0);let l=B.renderOpts.collectedTags;if(!b)return await (0,p.sendResponse)(z,V,a,B.renderOpts.pendingWaitUntil),null;{let e=await a.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(a.headers);l&&(t[m.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==B.renderOpts.collectedRevalidate&&!(B.renderOpts.collectedRevalidate>=m.INFINITE_CACHE)&&B.renderOpts.collectedRevalidate,s=void 0===B.renderOpts.collectedExpire||B.renderOpts.collectedExpire>=m.INFINITE_CACHE?void 0:B.renderOpts.collectedExpire;return{value:{kind:_.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 I.onRequestError(e,t,{routerKind:"App Router",routePath:v,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:L,isOnDemandRevalidate:D})},!1,P),t}},u=await I.handleResponse({req:e,nextConfig:k,cacheKey:q,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:O,isRoutePPREnabled:!1,isOnDemandRevalidate:D,revalidateOnlyGenerated:C,responseGenerator:l,waitUntil:s.waitUntil,isMinimalMode:$});if(!b)return null;if((null==u||null==(a=u.value)?void 0:a.kind)!==_.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"),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||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,V,new Response(u.value.body,{headers:d,status:u.value.status||200})),null};K&&H?await o(H):(n=W.getActiveScopeSpan(),await W.withPropagatedContext(e.headers,()=>W.trace(d.BaseServerSpan.handleRequest,{spanName:`${M} ${v}`,kind:a.SpanKind.SERVER,attributes:{"http.method":M,"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:L,isOnDemandRevalidate:D})},!1,P),b)throw t;return await (0,p.sendResponse)(z,V,new Response(null,{status:500})),null}}e.s(["handler",0,C,"patchFetch",0,function(){return(0,s.patchFetch)({workAsyncStorage:O,workUnitAsyncStorage:P})},"routeModule",0,I,"serverHooks",0,D,"workAsyncStorage",0,O,"workUnitAsyncStorage",0,P],83930)},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
+
3
+ //# sourceMappingURL=%5Broot-of-the-server%5D__0wfv_by._.js.map
@@ -0,0 +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 n(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 s(){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,n=!1;if(await (0,t.updateConfig)(t=>{let a=(t.adminUserIds??[]).filter(t=>t!==e);return 0!==a.length||r?{...t,adminUserIds:a}:(n=!0,t)}),n)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 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,s,"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),n=e.i(912714),s=e.i(750227),i=e.i(660526);let o=(0,a.promisify)(r.execFile),l=/[;|&$`<>(){}\n\r\0]/;function u(){return s.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=s.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]===a&&/fuse/.test(t[2]??"")})}catch{i=!1}return!!i&&(r=a,new Promise(t=>{let a=!1,n=setTimeout(()=>{a||(a=!0,t(!1))},4e3);e.A(687903).then(({readdir:e})=>e(r)).then(()=>{a||(a=!0,clearTimeout(n),t(!0))}).catch(()=>{a||(a=!0,clearTimeout(n),t(!1))})}))}async function p(e){await c(),await (0,n.mkdir)(e.mountpoint,{recursive:!0});let t=function(e){let{target:t,mountpoint:r,port:a,authMethod:n,keyPath:s,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"===n&&s&&(u.push(`IdentityFile=${s}`),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((a,n)=>{let s=(0,r.spawn)("sshfs",t,{stdio:["pipe","ignore","pipe"]}),i="",o=setTimeout(()=>{s.kill("SIGKILL"),n(Error("sshfs mount timed out after 25s."))},25e3);s.stderr?.on("data",e=>{i+=e.toString()}),s.on("error",e=>{clearTimeout(o),n(e.message.includes("ENOENT")?Error("sshfs binary not found on PATH."):e)}),s.on("close",e=>{clearTimeout(o),0===e?a():n(Error(`sshfs exited ${e}: ${i.trim()||"mount failed"}`))}),"password"===e.authMethod&&s.stdin?.write((e.password??"")+"\n"),s.stdin?.end()}),!await d(e.mountpoint))throw Error("sshfs reported success but the mount is not live.")}async function h(e){let t=s.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,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 s.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 n=r.slice(0,a),s=r.slice(a+1);if(!s.startsWith("/")||s.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:s}: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),n=e.i(504445),s=e.i(359211);async function i(e){let r;await (0,s.migrateConfigToWorkspaces)();let a=new URL(e.url).searchParams.get("ws")??e.headers.get("x-workspace")??null;if(a)r=await (0,s.getWorkspace)(a)??null;else{let e=await (0,s.listWorkspaces)();if(0===e.length){let e;r=(e=(0,n.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,s.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 n=await (0,r.requireUser)(e);if(!n.ok)return{ok:!1,status:401,code:"UNAUTHORIZED"};let l=await (0,a.isAdmin)(n.user.id,n.user.email),u=new URL(e.url).searchParams.get("ws")??e.headers.get("x-workspace")??null,c=await i(e);return c?(0,s.userCanAccess)(c,n.user.id,l)?"write"===t&&c.readOnly?{ok:!1,status:403,code:"WORKSPACE_READ_ONLY"}:{ok:!0,ws:c,rootDir:c.rootDir,userId:n.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),a=e.i(660526),n=e.i(750227),s=e.i(832852);let i="__registry__",o=new Map;function l(){let e=process.env.HOME??a.default.homedir();return n.default.join(e,".wiki-viewer")}function u(){return n.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"),n=Buffer.from(r.padEnd(64,"0"),"utf8");return a.length===n.length&&(0,t.timingSafeEqual)(a,n)&&e.length===r.length}(e.tokenHash,a))return e;return null}async function m(e){await (0,s.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 g(e){return(0,s.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 w(e){Date.now()-(o.get(e)??0)<3e4||await (0,s.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,g,"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 a=e.i(254226);async function n(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 n=e.headers.get("authorization")??"",s=n.startsWith("Bearer ")?n.slice(7).trim():"";if(!s)return{ok:!1,code:"UNAUTHORIZED",message:"No credentials"};let i=await (0,t.lookupAgentByToken)(s);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,n,"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)},719126,e=>{"use strict";var t=e.i(666680),r=e.i(912714),a=e.i(750227);function n(e){let t=e.replace(/\\/g,"/");return".proof"===t||t.startsWith(".proof/")||".git"===t||t.startsWith(".git/")}async function s(e,t){if(!e)return null;let s=a.default.normalize(t);if(s.startsWith("..")||a.default.isAbsolute(s)||n(s))return null;let i=a.default.join(e,s);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 n=await (0,r.realpath)(t);if(n!==e&&!n.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 n=e+".~"+process.pid+"."+Date.now()+".tmp",s=await (0,r.open)(n,"w",a);try{await s.write(t),await s.datasync()}finally{await s.close()}await (0,r.rename)(n,e)}async function l(e,t){let n=a.default.dirname(e);if(t)return await (0,r.mkdir)(n,{recursive:!0}),!0;try{return await (0,r.stat)(n),!0}catch{return!1}}e.s(["atomicWrite",0,o,"ensureParentDir",0,l,"extractShaHex",0,function(e){return e.replace(/^"/,"").replace(/"$/,"").replace(/^sha256:/,"")},"isDeniedRelPath",0,n,"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,s,"sha256ofBuf",0,function(e){return"sha256:"+(0,t.createHash)("sha256").update(e).digest("hex")}])},81111,(e,t,r)=>{t.exports=e.x("node:stream",()=>require("node:stream"))},687769,(e,t,r)=>{t.exports=e.x("node:events",()=>require("node:events"))},275859,e=>{"use strict";var t=e.i(912714),r=e.i(750227);async function a(e,a){try{let n=r.default.join(e,a,"package.json");return(await (0,t.stat)(n)).isFile()}catch{return!1}}async function n(e,a){try{let n=r.default.join(e,a,"index.html");return(await (0,t.stat)(n)).isFile()}catch{return!1}}e.s(["isAppFolder",0,n,"isNodeApp",0,a])},308900,e=>{"use strict";var t=e.i(364564),r=e.i(102095),a=e.i(691091),n=e.i(475331),s=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),g=e.i(193695);e.i(105888);var w=e.i(530564),y=e.i(912714),v=e.i(437856),k=e.i(750227),R=e.i(702414),A=e.i(215043),_=e.i(660038),x=e.i(359211),E=e.i(719126),I=e.i(552350);function D(e,t,r){return R.NextResponse.json({error:e,message:t},{status:r})}let O=new Set([".proof",".git","node_modules",".next"]);async function*N(e,t){let r;try{r=await (0,y.readdir)(k.default.join(e,t),{withFileTypes:!0})}catch{return}for(let a of r){if(O.has(a.name))continue;let r=t?`${t}/${a.name}`:a.name;a.isDirectory()?yield*N(e,r):(a.isFile()||a.isSymbolicLink())&&(yield r)}}async function P(e,t,r,a,n,s,i){let o;try{o=RegExp(r,"d")}catch{try{o=new RegExp(r)}catch{throw Error("Invalid regex pattern")}}let l=[],u=0;for await(let r of N(e,t)){let t;if(l.length>=a||Date.now()>s)return{matches:l,truncated:!0};if(!(0,A.enforceScope)(n,{filePath:r,op:"read",workspaceId:i}).ok)continue;try{t=await (0,y.readFile)(k.default.join(e,r))}catch{continue}if((u+=t.length)>0x3200000)return{matches:l,truncated:!0};if((0,E.looksLikeBinary)(t))continue;let c=t.toString("utf-8").split("\n");for(let e=0;e<c.length;e++){if(l.length>=a)return{matches:l,truncated:!0};let t=c[e];o.lastIndex=0;let n=o.exec(t);n&&l.push({path:r,line:e+1,col:(n.index??0)+1,text:t})}}return{matches:l,truncated:!1}}async function S(e,t,r,a,n,s,i){let o=[];for await(let l of N(e,t)){if(o.length>=a||Date.now()>s)return{matches:o,truncated:!0};let e=k.default.basename(l);((0,I.matchGlob)(r,l)||(0,I.matchGlob)(r,e))&&(0,A.enforceScope)(n,{filePath:l,op:"read",workspaceId:i}).ok&&o.push({path:l})}return{matches:o,truncated:!1}}async function T(e){let t,r,a=await (0,A.checkAuth)(e);if(!a.ok)return D("UNAUTHORIZED",a.message??"Unauthorized",401);try{t=await e.json()}catch{return D("INVALID_PAYLOAD","Invalid JSON body",400)}if("grep"!==t.kind&&"glob"!==t.kind&&"fts"!==t.kind)return D("INVALID_PAYLOAD",'kind must be "grep", "glob", or "fts"',400);if("string"!=typeof t.query||"fts"!==t.kind&&!t.query)return D("INVALID_PAYLOAD","query (string) required",400);let n=t.kind,s=t.query,i="string"==typeof t.path?t.path:"",o=Math.min("number"==typeof t.limit?t.limit:200,2e3),l=await (0,_.resolveWorkspaceForAgent)(e);if(!l.ok)return D(l.code,l.code,l.status);let{ws:u,rootDir:c}=l;if(i){if(!(0,x.safeWorkspacePath)(c,i))return D("INVALID_PATH","path: traversal rejected",400);if(!await (0,E.safeAbsPath)(c,i))return D("INVALID_PATH","path: rejected (symlink escape or denied)",400)}if(i)try{if(!(await (0,y.stat)(k.default.join(c,i))).isDirectory())return D("NOT_A_DIRECTORY","path must be a directory",400)}catch(e){if("ENOENT"===e.code)return D("NOT_FOUND","Start path not found",404);throw e}if("fts"===n){let e=(0,A.enforceScope)(a.agent,{op:"read",workspaceId:u.id});if(!e.ok)return D("FORBIDDEN",e.message??"Forbidden",403);(0,v.ensureIndexer)(u.id,c).catch(e=>console.error("[search] ensureIndexer failed",e));let t=i?`${i.replace(/\/+$/,"")}/`:"",r=(0,v.ftsSearch)(u.id,s,Math.min(4*o,2e3)),l=r.matches.filter(e=>(!t||!!e.path.startsWith(t))&&(0,A.enforceScope)(a.agent,{filePath:e.path,op:"read",workspaceId:u.id}).ok),d=l.slice(0,o).map(e=>({path:e.path,score:e.score,snippet:e.snippet})),p=r.truncated||l.length>o;return R.NextResponse.json({kind:n,query:s,matches:d,truncated:p})}let d=Date.now()+1e4;try{r="grep"===n?await P(c,i,s,o,a.agent,d,u.id):await S(c,i,s,o,a.agent,d,u.id)}catch(e){return D("SEARCH_ERROR",e.message,400)}return R.NextResponse.json({kind:n,query:s,matches:r.matches,truncated:r.truncated})}e.s(["POST",0,T,"runtime",0,"nodejs"],128310);var C=e.i(128310);let b=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/agent/fs/search/route",pathname:"/api/agent/fs/search",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/agent/fs/search/route.ts",nextConfigOutput:"standalone",userland:C,...{}}),{workAsyncStorage:U,workUnitAsyncStorage:j,serverHooks:q}=b;async function W(e,t,a){a.requestMeta&&(0,n.setRequestMeta)(e,a.requestMeta),b.isDev&&(0,n.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let y="/api/agent/fs/search/route";y=y.replace(/\/index$/,"")||"/";let v=await b.prepare(e,t,{srcPage:y,multiZoneDraftMode:!1});if(!v)return t.statusCode=400,t.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve()),null;let{buildId:k,params:R,nextConfig:A,parsedUrl:_,isDraftMode:x,prerenderManifest:E,routerServerContext:I,isOnDemandRevalidate:D,revalidateOnlyGenerated:O,resolvedPathname:N,clientReferenceManifest:P,serverActionsManifest:S}=v,T=(0,o.normalizeAppPath)(y),C=!!(E.dynamicRoutes[T]||E.routes[N]),U=async()=>((null==I?void 0:I.render404)?await I.render404(e,t,_,!1):t.end("This page could not be found"),null);if(C&&!x){let e=!!E.routes[N],t=E.dynamicRoutes[T];if(t&&!1===t.fallback&&!e){if(A.adapterPath)return await U();throw new g.NoFallbackError}}let j=null;!C||b.isDev||x||(j="/index"===(j=N)?"/":j);let q=!0===b.isDev||!C,W=C&&!q;S&&P&&(0,i.setManifestsSingleton)({page:y,clientReferenceManifest:P,serverActionsManifest:S});let F=e.method||"GET",H=(0,s.getTracer)(),M=H.getActiveScopeSpan(),$=!!(null==I?void 0:I.isWrappedByNextServer),L=!!(0,n.getRequestMeta)(e,"minimalMode"),B=(0,n.getRequestMeta)(e,"incrementalCache")||await b.getIncrementalCache(e,A,E,L);null==B||B.resetRequestCache(),globalThis.__incrementalCache=B;let K={params:R,previewProps:E.preview,renderOpts:{experimental:{authInterrupts:!!A.experimental.authInterrupts},cacheComponents:!!A.cacheComponents,supportsDynamicResponse:q,incrementalCache:B,cacheLifeProfiles:A.cacheLife,waitUntil:a.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,a,n)=>b.onRequestError(e,t,a,n,I)},sharedContext:{buildId:k}},z=new l.NodeNextRequest(e),Z=new l.NodeNextResponse(t),G=u.NextRequestAdapter.fromNodeNextRequest(z,(0,u.signalFromNodeResponse)(t));try{let n,i=async e=>b.handle(G,K).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=H.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=`${F} ${a}`;e.setAttributes({"next.route":a,"http.route":a,"next.span_name":t}),e.updateName(t),n&&n!==e&&(n.setAttribute("http.route",a),n.updateName(t))}else e.updateName(`${F} ${y}`)}),o=async n=>{var s,o;let l=async({previousCacheEntry:r})=>{try{if(!L&&D&&O&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let s=await i(n);e.fetchMetrics=K.renderOpts.fetchMetrics;let o=K.renderOpts.pendingWaitUntil;o&&a.waitUntil&&(a.waitUntil(o),o=void 0);let l=K.renderOpts.collectedTags;if(!C)return await (0,p.sendResponse)(z,Z,s,K.renderOpts.pendingWaitUntil),null;{let e=await s.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(s.headers);l&&(t[m.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==K.renderOpts.collectedRevalidate&&!(K.renderOpts.collectedRevalidate>=m.INFINITE_CACHE)&&K.renderOpts.collectedRevalidate,a=void 0===K.renderOpts.collectedExpire||K.renderOpts.collectedExpire>=m.INFINITE_CACHE?void 0:K.renderOpts.collectedExpire;return{value:{kind:w.CachedRouteKind.APP_ROUTE,status:s.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:a}}}}catch(t){throw(null==r?void 0:r.isStale)&&await b.onRequestError(e,t,{routerKind:"App Router",routePath:y,routeType:"route",revalidateReason:(0,d.getRevalidateReason)({isStaticGeneration:W,isOnDemandRevalidate:D})},!1,I),t}},u=await b.handleResponse({req:e,nextConfig:A,cacheKey:j,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:E,isRoutePPREnabled:!1,isOnDemandRevalidate:D,revalidateOnlyGenerated:O,responseGenerator:l,waitUntil:a.waitUntil,isMinimalMode:L});if(!C)return null;if((null==u||null==(s=u.value)?void 0:s.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});L||t.setHeader("x-nextjs-cache",D?"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 L&&C||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};$&&M?await o(M):(n=H.getActiveScopeSpan(),await H.withPropagatedContext(e.headers,()=>H.trace(c.BaseServerSpan.handleRequest,{spanName:`${F} ${y}`,kind:s.SpanKind.SERVER,attributes:{"http.method":F,"http.target":e.url}},o),void 0,!$))}catch(t){if(t instanceof g.NoFallbackError||await b.onRequestError(e,t,{routerKind:"App Router",routePath:T,routeType:"route",revalidateReason:(0,d.getRevalidateReason)({isStaticGeneration:W,isOnDemandRevalidate:D})},!1,I),C)throw t;return await (0,p.sendResponse)(z,Z,new Response(null,{status:500})),null}}e.s(["handler",0,W,"patchFetch",0,function(){return(0,a.patchFetch)({workAsyncStorage:U,workUnitAsyncStorage:j})},"routeModule",0,b,"serverHooks",0,q,"workAsyncStorage",0,U,"workUnitAsyncStorage",0,j],308900)},687903,e=>{e.v(e=>Promise.resolve().then(()=>e(912714)))},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)))},754121,e=>{e.v(e=>Promise.resolve().then(()=>e(437856)))}];
2
+
3
+ //# sourceMappingURL=%5Broot-of-the-server%5D__0wlj-yw._.js.map
@@ -0,0 +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 i(){return(await (0,t.readConfig)()).adminUserIds??[]}async function n(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,n,"ensureBootstrapAdmin",0,l,"isAdmin",0,a,"listAdmins",0,i,"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),i=e.i(750227),n=e.i(660526);let o=(0,s.promisify)(r.execFile),l=/[;|&$`<>(){}\n\r\0]/;function u(){return i.default.join(n.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=i.default.resolve(t),n=!1;try{n=(await (0,a.readFile)("/proc/mounts","utf8")).split("\n").some(e=>{let t=e.split(" ");return t[1]===s&&/fuse/.test(t[2]??"")})}catch{n=!1}return!!n&&(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:i,readOnly:n}=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(n&&u.push("ro"),"keyfile"===a&&i&&(u.push(`IdentityFile=${i}`),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 i=(0,r.spawn)("sshfs",t,{stdio:["pipe","ignore","pipe"]}),n="",o=setTimeout(()=>{i.kill("SIGKILL"),a(Error("sshfs mount timed out after 25s."))},25e3);i.stderr?.on("data",e=>{n+=e.toString()}),i.on("error",e=>{clearTimeout(o),a(e.message.includes("ENOENT")?Error("sshfs binary not found on PATH."):e)}),i.on("close",e=>{clearTimeout(o),0===e?s():a(Error(`sshfs exited ${e}: ${n.trim()||"mount failed"}`))}),"password"===e.authMethod&&i.stdin?.write((e.password??"")+"\n"),i.stdin?.end()}),!await c(e.mountpoint))throw Error("sshfs reported success but the mount is not live.")}async function h(e){let t=i.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 i.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),i=r.slice(s+1);if(!i.startsWith("/")||i.includes(".."))return null;let n=a,o=a.indexOf("@");return o>=0&&(t=a.slice(0,o),n=a.slice(o+1),!t)?null:n&&/^[a-zA-Z0-9.\-]+$/.test(n)&&(!t||/^[a-zA-Z0-9._\-]+$/.test(t))?{user:t,host:n,remotePath:i}: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),i=e.i(359211);async function n(e){let r;await (0,i.migrateConfigToWorkspaces)();let s=new URL(e.url).searchParams.get("ws")??e.headers.get("x-workspace")??null;if(s)r=await (0,i.getWorkspace)(s)??null;else{let e=await (0,i.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,i.ensureWorkspaceMounted)(r),r}async function o(e,t="read"){if("1"===process.env.WIKI_NO_AUTH){let r=await n(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 n(e);return d?(0,i.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 n(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])},165076,e=>{"use strict";var t=e.i(364564),r=e.i(102095),s=e.i(691091),a=e.i(475331),i=e.i(490301),n=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 _=e.i(530564),v=e.i(912714),R=e.i(750227),g=e.i(702414),y=e.i(660038),A=e.i(359211);async function E(e,t){let r=R.default.extname(t),s=t.slice(0,t.length-r.length),a=t,i=2;for(;;)try{await (0,v.stat)(R.default.join(e,a)),a=`${s}-${i}${r}`,i+=1}catch{return a}}async function k(e,{params:t}){let r,s=await (0,y.resolveWorkspaceForAgent)(e,"write");if(!s.ok)return g.NextResponse.json({error:s.code},{status:s.status});let{rootDir:a}=s,{path:i}=await t,n=(i??[]).join("/"),o=R.default.join(a,"_uploads",n);if(!(0,A.safeWorkspacePath)(a,R.default.join("_uploads",n)))return g.NextResponse.json({error:"Invalid path"},{status:400});try{r=await e.formData()}catch{return g.NextResponse.json({error:"Expected multipart/form-data"},{status:400})}let l=r.get("file");if(!(l instanceof File))return g.NextResponse.json({error:"Missing file field"},{status:400});if(l.size>0x3200000)return g.NextResponse.json({error:"File exceeds 50MB limit"},{status:413});let u=(l.name||"file").toLowerCase().replace(/[^a-z0-9._-]+/g,"-").replace(/-+/g,"-").replace(/^[-.]+/,"").replace(/-+$/,"")||"file";try{await (0,v.mkdir)(o,{recursive:!0});let e=await E(o,u),t=R.default.join(o,e),r=Buffer.from(await l.arrayBuffer());await (0,v.writeFile)(t,r);let s=["_uploads",n,e].filter(Boolean),a=s.map(encodeURIComponent).join("/"),i=s.join("/");return g.NextResponse.json({url:`/api/assets/${a}`,path:i,absolutePath:t,size:r.length,mimeType:l.type||"application/octet-stream"})}catch(t){let e=t instanceof Error?t.message:"Write failed";return g.NextResponse.json({error:e},{status:500})}}e.s(["POST",0,k],24230);var O=e.i(24230);let x=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/upload/[...path]/route",pathname:"/api/upload/[...path]",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/upload/[...path]/route.ts",nextConfigOutput:"standalone",userland:O,...{}}),{workAsyncStorage:C,workUnitAsyncStorage:I,serverHooks:P}=x;async function D(e,t,s){s.requestMeta&&(0,a.setRequestMeta)(e,s.requestMeta),x.isDev&&(0,a.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let v="/api/upload/[...path]/route";v=v.replace(/\/index$/,"")||"/";let R=await x.prepare(e,t,{srcPage:v,multiZoneDraftMode:!1});if(!R)return t.statusCode=400,t.end("Bad Request"),null==s.waitUntil||s.waitUntil.call(s,Promise.resolve()),null;let{buildId:g,params:y,nextConfig:A,parsedUrl:E,isDraftMode:k,prerenderManifest:O,routerServerContext:C,isOnDemandRevalidate:I,revalidateOnlyGenerated:P,resolvedPathname:D,clientReferenceManifest:N,serverActionsManifest:T}=R,S=(0,o.normalizeAppPath)(v),U=!!(O.dynamicRoutes[S]||O.routes[D]),b=async()=>((null==C?void 0:C.render404)?await C.render404(e,t,E,!1):t.end("This page could not be found"),null);if(U&&!k){let e=!!O.routes[D],t=O.dynamicRoutes[S];if(t&&!1===t.fallback&&!e){if(A.adapterPath)return await b();throw new w.NoFallbackError}}let j=null;!U||x.isDev||k||(j="/index"===(j=D)?"/":j);let q=!0===x.isDev||!U,M=U&&!q;T&&N&&(0,n.setManifestsSingleton)({page:v,clientReferenceManifest:N,serverActionsManifest:T});let W=e.method||"GET",K=(0,i.getTracer)(),$=K.getActiveScopeSpan(),H=!!(null==C?void 0:C.isWrappedByNextServer),F=!!(0,a.getRequestMeta)(e,"minimalMode"),L=(0,a.getRequestMeta)(e,"incrementalCache")||await x.getIncrementalCache(e,A,O,F);null==L||L.resetRequestCache(),globalThis.__incrementalCache=L;let B={params:y,previewProps:O.preview,renderOpts:{experimental:{authInterrupts:!!A.experimental.authInterrupts},cacheComponents:!!A.cacheComponents,supportsDynamicResponse:q,incrementalCache:L,cacheLifeProfiles:A.cacheLife,waitUntil:s.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,s,a)=>x.onRequestError(e,t,s,a,C)},sharedContext:{buildId:g}},z=new l.NodeNextRequest(e),Z=new l.NodeNextResponse(t),G=u.NextRequestAdapter.fromNodeNextRequest(z,(0,u.signalFromNodeResponse)(t));try{let a,n=async e=>x.handle(G,B).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=K.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} ${v}`)}),o=async a=>{var i,o;let l=async({previousCacheEntry:r})=>{try{if(!F&&I&&P&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let i=await n(a);e.fetchMetrics=B.renderOpts.fetchMetrics;let o=B.renderOpts.pendingWaitUntil;o&&s.waitUntil&&(s.waitUntil(o),o=void 0);let l=B.renderOpts.collectedTags;if(!U)return await (0,p.sendResponse)(z,Z,i,B.renderOpts.pendingWaitUntil),null;{let e=await i.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(i.headers);l&&(t[m.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==B.renderOpts.collectedRevalidate&&!(B.renderOpts.collectedRevalidate>=m.INFINITE_CACHE)&&B.renderOpts.collectedRevalidate,s=void 0===B.renderOpts.collectedExpire||B.renderOpts.collectedExpire>=m.INFINITE_CACHE?void 0:B.renderOpts.collectedExpire;return{value:{kind:_.CachedRouteKind.APP_ROUTE,status:i.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:s}}}}catch(t){throw(null==r?void 0:r.isStale)&&await x.onRequestError(e,t,{routerKind:"App Router",routePath:v,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:M,isOnDemandRevalidate:I})},!1,C),t}},u=await x.handleResponse({req:e,nextConfig:A,cacheKey:j,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:O,isRoutePPREnabled:!1,isOnDemandRevalidate:I,revalidateOnlyGenerated:P,responseGenerator:l,waitUntil:s.waitUntil,isMinimalMode:F});if(!U)return null;if((null==u||null==(i=u.value)?void 0:i.kind)!==_.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});F||t.setHeader("x-nextjs-cache",I?"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 F&&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,Z,new Response(u.value.body,{headers:d,status:u.value.status||200})),null};H&&$?await o($):(a=K.getActiveScopeSpan(),await K.withPropagatedContext(e.headers,()=>K.trace(d.BaseServerSpan.handleRequest,{spanName:`${W} ${v}`,kind:i.SpanKind.SERVER,attributes:{"http.method":W,"http.target":e.url}},o),void 0,!H))}catch(t){if(t instanceof w.NoFallbackError||await x.onRequestError(e,t,{routerKind:"App Router",routePath:S,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:M,isOnDemandRevalidate:I})},!1,C),U)throw t;return await (0,p.sendResponse)(z,Z,new Response(null,{status:500})),null}}e.s(["handler",0,D,"patchFetch",0,function(){return(0,s.patchFetch)({workAsyncStorage:C,workUnitAsyncStorage:I})},"routeModule",0,x,"serverHooks",0,P,"workAsyncStorage",0,C,"workUnitAsyncStorage",0,I],165076)},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
+
3
+ //# sourceMappingURL=%5Broot-of-the-server%5D__0w~__xz._.js.map
@@ -0,0 +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 i(){return(await (0,t.readConfig)()).adminUserIds??[]}async function n(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,n,"ensureBootstrapAdmin",0,l,"isAdmin",0,a,"listAdmins",0,i,"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),i=e.i(750227),n=e.i(660526);let o=(0,s.promisify)(r.execFile),l=/[;|&$`<>(){}\n\r\0]/;function u(){return i.default.join(n.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=i.default.resolve(t),n=!1;try{n=(await (0,a.readFile)("/proc/mounts","utf8")).split("\n").some(e=>{let t=e.split(" ");return t[1]===s&&/fuse/.test(t[2]??"")})}catch{n=!1}return!!n&&(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:i,readOnly:n}=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(n&&u.push("ro"),"keyfile"===a&&i&&(u.push(`IdentityFile=${i}`),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 i=(0,r.spawn)("sshfs",t,{stdio:["pipe","ignore","pipe"]}),n="",o=setTimeout(()=>{i.kill("SIGKILL"),a(Error("sshfs mount timed out after 25s."))},25e3);i.stderr?.on("data",e=>{n+=e.toString()}),i.on("error",e=>{clearTimeout(o),a(e.message.includes("ENOENT")?Error("sshfs binary not found on PATH."):e)}),i.on("close",e=>{clearTimeout(o),0===e?s():a(Error(`sshfs exited ${e}: ${n.trim()||"mount failed"}`))}),"password"===e.authMethod&&i.stdin?.write((e.password??"")+"\n"),i.stdin?.end()}),!await c(e.mountpoint))throw Error("sshfs reported success but the mount is not live.")}async function h(e){let t=i.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 i.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),i=r.slice(s+1);if(!i.startsWith("/")||i.includes(".."))return null;let n=a,o=a.indexOf("@");return o>=0&&(t=a.slice(0,o),n=a.slice(o+1),!t)?null:n&&/^[a-zA-Z0-9.\-]+$/.test(n)&&(!t||/^[a-zA-Z0-9._\-]+$/.test(t))?{user:t,host:n,remotePath:i}: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),i=e.i(359211);async function n(e){let r;await (0,i.migrateConfigToWorkspaces)();let s=new URL(e.url).searchParams.get("ws")??e.headers.get("x-workspace")??null;if(s)r=await (0,i.getWorkspace)(s)??null;else{let e=await (0,i.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,i.ensureWorkspaceMounted)(r),r}async function o(e,t="read"){if("1"===process.env.WIKI_NO_AUTH){let r=await n(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 n(e);return d?(0,i.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 n(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])},682643,e=>{"use strict";var t=e.i(364564),r=e.i(102095),s=e.i(691091),a=e.i(475331),i=e.i(490301),n=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),w=e.i(193695);e.i(105888);var _=e.i(530564),v=e.i(912714),R=e.i(750227),g=e.i(702414),A=e.i(660038);async function y(e){try{return(await (0,v.readdir)(e,{withFileTypes:!0})).filter(e=>e.isFile()&&e.name.toLowerCase().endsWith(".md")).map(e=>e.name.slice(0,-3)).sort((e,t)=>e.localeCompare(t))}catch(e){if("ENOENT"===e.code)return[];throw e}}async function E(e){let t=await (0,A.resolveWorkspaceForUser)(e);if(!t.ok)return g.NextResponse.json({error:t.code},{status:t.status});let{rootDir:r}=t;try{let[e,t,s,a]=await Promise.all([y(R.default.join(r,"entities")),y(R.default.join(r,"concepts")),y(R.default.join(r,"comparisons")),y(r)]);return g.NextResponse.json({entities:e,concepts:t,comparisons:s,root:a},{headers:{"Cache-Control":"private, max-age=10"}})}catch{return g.NextResponse.json({error:"Failed to list slugs"},{status:500})}}e.s(["GET",0,E],302066);var k=e.i(302066);let O=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/wiki/slugs/route",pathname:"/api/wiki/slugs",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/wiki/slugs/route.ts",nextConfigOutput:"standalone",userland:k,...{}}),{workAsyncStorage:C,workUnitAsyncStorage:I,serverHooks:P}=O;async function D(e,t,s){s.requestMeta&&(0,a.setRequestMeta)(e,s.requestMeta),O.isDev&&(0,a.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let v="/api/wiki/slugs/route";v=v.replace(/\/index$/,"")||"/";let R=await O.prepare(e,t,{srcPage:v,multiZoneDraftMode:!1});if(!R)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:C,routerServerContext:I,isOnDemandRevalidate:P,revalidateOnlyGenerated:D,resolvedPathname:x,clientReferenceManifest:T,serverActionsManifest:N}=R,S=(0,o.normalizeAppPath)(v),U=!!(C.dynamicRoutes[S]||C.routes[x]),b=async()=>((null==I?void 0:I.render404)?await I.render404(e,t,E,!1):t.end("This page could not be found"),null);if(U&&!k){let e=!!C.routes[x],t=C.dynamicRoutes[S];if(t&&!1===t.fallback&&!e){if(y.adapterPath)return await b();throw new w.NoFallbackError}}let j=null;!U||O.isDev||k||(j="/index"===(j=x)?"/":j);let q=!0===O.isDev||!U,M=U&&!q;N&&T&&(0,n.setManifestsSingleton)({page:v,clientReferenceManifest:T,serverActionsManifest:N});let W=e.method||"GET",K=(0,i.getTracer)(),H=K.getActiveScopeSpan(),F=!!(null==I?void 0:I.isWrappedByNextServer),$=!!(0,a.getRequestMeta)(e,"minimalMode"),L=(0,a.getRequestMeta)(e,"incrementalCache")||await O.getIncrementalCache(e,y,C,$);null==L||L.resetRequestCache(),globalThis.__incrementalCache=L;let B={params:A,previewProps:C.preview,renderOpts:{experimental:{authInterrupts:!!y.experimental.authInterrupts},cacheComponents:!!y.cacheComponents,supportsDynamicResponse:q,incrementalCache:L,cacheLifeProfiles:y.cacheLife,waitUntil:s.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,s,a)=>O.onRequestError(e,t,s,a,I)},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,n=async e=>O.handle(Z,B).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=K.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} ${v}`)}),o=async a=>{var i,o;let l=async({previousCacheEntry:r})=>{try{if(!$&&P&&D&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let i=await n(a);e.fetchMetrics=B.renderOpts.fetchMetrics;let o=B.renderOpts.pendingWaitUntil;o&&s.waitUntil&&(s.waitUntil(o),o=void 0);let l=B.renderOpts.collectedTags;if(!U)return await (0,p.sendResponse)(z,G,i,B.renderOpts.pendingWaitUntil),null;{let e=await i.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(i.headers);l&&(t[f.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==B.renderOpts.collectedRevalidate&&!(B.renderOpts.collectedRevalidate>=f.INFINITE_CACHE)&&B.renderOpts.collectedRevalidate,s=void 0===B.renderOpts.collectedExpire||B.renderOpts.collectedExpire>=f.INFINITE_CACHE?void 0:B.renderOpts.collectedExpire;return{value:{kind:_.CachedRouteKind.APP_ROUTE,status:i.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:s}}}}catch(t){throw(null==r?void 0:r.isStale)&&await O.onRequestError(e,t,{routerKind:"App Router",routePath:v,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:M,isOnDemandRevalidate:P})},!1,I),t}},u=await O.handleResponse({req:e,nextConfig:y,cacheKey:j,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:C,isRoutePPREnabled:!1,isOnDemandRevalidate:P,revalidateOnlyGenerated:D,responseGenerator:l,waitUntil:s.waitUntil,isMinimalMode:$});if(!U)return null;if((null==u||null==(i=u.value)?void 0:i.kind)!==_.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",P?"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(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)(z,G,new Response(u.value.body,{headers:d,status:u.value.status||200})),null};F&&H?await o(H):(a=K.getActiveScopeSpan(),await K.withPropagatedContext(e.headers,()=>K.trace(d.BaseServerSpan.handleRequest,{spanName:`${W} ${v}`,kind:i.SpanKind.SERVER,attributes:{"http.method":W,"http.target":e.url}},o),void 0,!F))}catch(t){if(t instanceof w.NoFallbackError||await O.onRequestError(e,t,{routerKind:"App Router",routePath:S,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:M,isOnDemandRevalidate:P})},!1,I),U)throw t;return await (0,p.sendResponse)(z,G,new Response(null,{status:500})),null}}e.s(["handler",0,D,"patchFetch",0,function(){return(0,s.patchFetch)({workAsyncStorage:C,workUnitAsyncStorage:I})},"routeModule",0,O,"serverHooks",0,P,"workAsyncStorage",0,C,"workUnitAsyncStorage",0,I],682643)},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
+
3
+ //# sourceMappingURL=%5Broot-of-the-server%5D__0yat~ul._.js.map