wiki-viewer 1.14.1 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (559) 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/0ci7khnv7i~7_.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/postbuild.js +21 -0
  202. package/bin/wiki-viewer.js +198 -6
  203. package/package.json +1 -1
  204. package/.next/standalone/.github/workflows/publish.yml +0 -37
  205. package/.next/standalone/.handoffs/archive/handoff-20260612-113332.md +0 -98
  206. package/.next/standalone/.handoffs/archive/handoff-20260612-141032.md +0 -73
  207. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0-.y6im._.js +0 -3
  208. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0-3_t2y._.js +0 -3
  209. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0-kjkzt._.js +0 -3
  210. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0-puax4._.js +0 -4
  211. package/.next/standalone/.next/server/chunks/[root-of-the-server]__01h996g._.js +0 -3
  212. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0329ktu._.js +0 -3
  213. package/.next/standalone/.next/server/chunks/[root-of-the-server]__03_xj4r._.js +0 -3
  214. package/.next/standalone/.next/server/chunks/[root-of-the-server]__05398dt._.js +0 -4
  215. package/.next/standalone/.next/server/chunks/[root-of-the-server]__06lfvxh._.js +0 -3
  216. package/.next/standalone/.next/server/chunks/[root-of-the-server]__06w0aet._.js +0 -3
  217. package/.next/standalone/.next/server/chunks/[root-of-the-server]__070_p2a._.js +0 -4
  218. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0905hi1._.js +0 -21
  219. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0aa63~j._.js +0 -5
  220. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0avcplk._.js +0 -4
  221. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0b8_kyo._.js +0 -16
  222. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0bticq1._.js +0 -3
  223. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0bwevvu._.js +0 -3
  224. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0c__k3q._.js +0 -4
  225. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0cp~z4x._.js +0 -3
  226. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0fmdv9h._.js +0 -20
  227. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0h0qbwr._.js +0 -3
  228. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0jk~oyi._.js +0 -3
  229. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0ndq77b._.js +0 -3
  230. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0nvgpuk._.js +0 -3
  231. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0ocvng2._.js +0 -3
  232. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0ps4h~.._.js +0 -3
  233. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0q7jqwp._.js +0 -12
  234. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0qew~6p._.js +0 -3
  235. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0s_9f-a._.js +0 -3
  236. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0uv7b8u._.js +0 -3
  237. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0uv8.9i._.js +0 -3
  238. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0vfe2io._.js +0 -4
  239. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0w11kjy._.js +0 -3
  240. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0wc-.e4._.js +0 -3
  241. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0ymovmp._.js +0 -3
  242. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0~c6ouv._.js +0 -3
  243. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0~rhs0u._.js +0 -16
  244. package/.next/standalone/.next/server/chunks/[root-of-the-server]__10h9tid._.js +0 -3
  245. package/.next/standalone/.next/server/chunks/[root-of-the-server]__10yk-u1._.js +0 -3
  246. package/.next/standalone/.next/server/chunks/[root-of-the-server]__11105ew._.js +0 -3
  247. package/.next/standalone/.next/server/chunks/[root-of-the-server]__11a3dhw._.js +0 -3
  248. package/.next/standalone/.next/server/chunks/[root-of-the-server]__13420tt._.js +0 -3
  249. package/.next/standalone/.next/server/chunks/[root-of-the-server]__13h~pdf._.js +0 -3
  250. package/.next/standalone/.next/static/chunks/02kg.lbkfi1yc.css +0 -5
  251. package/.next/standalone/.next/static/chunks/0rcwd6-.iu~nd.js +0 -17
  252. package/.next/standalone/.pi/ownership.json +0 -3
  253. package/.next/standalone/AGENTS.md +0 -114
  254. package/.next/standalone/DESIGN.md +0 -521
  255. package/.next/standalone/README.md +0 -821
  256. package/.next/standalone/TODO.md +0 -20
  257. package/.next/standalone/agents/bootstrap-prompt.md +0 -14
  258. package/.next/standalone/agents/wiki-viewer-skill/SKILL.md +0 -456
  259. package/.next/standalone/bin/postbuild.js +0 -78
  260. package/.next/standalone/bin/wiki-viewer.js +0 -922
  261. package/.next/standalone/certificates/localhost-key.pem +0 -28
  262. package/.next/standalone/certificates/localhost.pem +0 -24
  263. package/.next/standalone/docs/agent-collab-plan.md +0 -1615
  264. package/.next/standalone/docs/agent-collab-v2-plan.md +0 -771
  265. package/.next/standalone/docs/agent-fs-plan.md +0 -232
  266. package/.next/standalone/docs/editorial-skin-spec.md +0 -242
  267. package/.next/standalone/docs/file-vs-collab-authority.md +0 -124
  268. package/.next/standalone/docs/mobile-readiness-spec.md +0 -229
  269. package/.next/standalone/docs/workspacing-plan.md +0 -364
  270. package/.next/standalone/packages/wiki-viewer-mcp/README.md +0 -195
  271. package/.next/standalone/packages/wiki-viewer-mcp/bench-e2e.mjs +0 -166
  272. package/.next/standalone/packages/wiki-viewer-mcp/bench-latency.mjs +0 -87
  273. package/.next/standalone/packages/wiki-viewer-mcp/bench-payload.mjs +0 -45
  274. package/.next/standalone/packages/wiki-viewer-mcp/dist/http-client.js +0 -331
  275. package/.next/standalone/packages/wiki-viewer-mcp/dist/index.js +0 -531
  276. package/.next/standalone/packages/wiki-viewer-mcp/dist/register.js +0 -94
  277. package/.next/standalone/packages/wiki-viewer-mcp/dist/state-cache.js +0 -28
  278. package/.next/standalone/packages/wiki-viewer-mcp/package-lock.json +0 -1716
  279. package/.next/standalone/packages/wiki-viewer-mcp/package.json +0 -41
  280. package/.next/standalone/packages/wiki-viewer-mcp/src/http-client.ts +0 -459
  281. package/.next/standalone/packages/wiki-viewer-mcp/src/index.ts +0 -638
  282. package/.next/standalone/packages/wiki-viewer-mcp/src/register.ts +0 -144
  283. package/.next/standalone/packages/wiki-viewer-mcp/src/state-cache.ts +0 -55
  284. package/.next/standalone/packages/wiki-viewer-mcp/tsconfig.json +0 -19
  285. package/.next/standalone/pnpm-lock.yaml +0 -6697
  286. package/.next/standalone/pnpm-workspace.yaml +0 -8
  287. package/.next/standalone/postcss.config.mjs +0 -2
  288. package/.next/standalone/src/app/api/agent/activity/route.ts +0 -59
  289. package/.next/standalone/src/app/api/agent/admin/agents/[agentId]/revoke/route.ts +0 -40
  290. package/.next/standalone/src/app/api/agent/admin/agents/route.ts +0 -33
  291. package/.next/standalone/src/app/api/agent/admin/registrations/[regId]/approve/route.ts +0 -83
  292. package/.next/standalone/src/app/api/agent/admin/registrations/[regId]/deny/route.ts +0 -36
  293. package/.next/standalone/src/app/api/agent/admin/registrations/route.ts +0 -27
  294. package/.next/standalone/src/app/api/agent/events/[...path]/route.ts +0 -148
  295. package/.next/standalone/src/app/api/agent/files/[...path]/route.ts +0 -219
  296. package/.next/standalone/src/app/api/agent/fs/file/[...path]/route.ts +0 -446
  297. package/.next/standalone/src/app/api/agent/fs/ls/[[...path]]/route.ts +0 -152
  298. package/.next/standalone/src/app/api/agent/fs/move/route.ts +0 -130
  299. package/.next/standalone/src/app/api/agent/fs/search/route.ts +0 -272
  300. package/.next/standalone/src/app/api/agent/internal/span/route.ts +0 -121
  301. package/.next/standalone/src/app/api/agent/register/[regId]/route.ts +0 -50
  302. package/.next/standalone/src/app/api/agent/register/route.ts +0 -118
  303. package/.next/standalone/src/app/api/agent/settings/route.ts +0 -34
  304. package/.next/standalone/src/app/api/agent/settings/token/regenerate/route.ts +0 -20
  305. package/.next/standalone/src/app/api/agent/sidecar/[...path]/route.ts +0 -53
  306. package/.next/standalone/src/app/api/agents/install/route.ts +0 -143
  307. package/.next/standalone/src/app/api/agents/skill/route.ts +0 -20
  308. package/.next/standalone/src/app/api/agents/skill.tar.gz/route.ts +0 -87
  309. package/.next/standalone/src/app/api/app-proxy/[...path]/route.ts +0 -247
  310. package/.next/standalone/src/app/api/assets/[...path]/route.ts +0 -75
  311. package/.next/standalone/src/app/api/auth/[...all]/route.ts +0 -7
  312. package/.next/standalone/src/app/api/owner/init/route.ts +0 -14
  313. package/.next/standalone/src/app/api/share/[token]/route.ts +0 -269
  314. package/.next/standalone/src/app/api/share/route.ts +0 -127
  315. package/.next/standalone/src/app/api/system/admins/route.ts +0 -103
  316. package/.next/standalone/src/app/api/system/auth-config/route.ts +0 -22
  317. package/.next/standalone/src/app/api/system/auth-settings/route.ts +0 -86
  318. package/.next/standalone/src/app/api/system/browse/route.ts +0 -82
  319. package/.next/standalone/src/app/api/system/clear-root/route.ts +0 -16
  320. package/.next/standalone/src/app/api/system/config/route.ts +0 -14
  321. package/.next/standalone/src/app/api/system/pins/route.ts +0 -38
  322. package/.next/standalone/src/app/api/system/reveal/route.ts +0 -36
  323. package/.next/standalone/src/app/api/system/root-status/route.ts +0 -13
  324. package/.next/standalone/src/app/api/system/set-root/route.ts +0 -53
  325. package/.next/standalone/src/app/api/system/users/route.ts +0 -120
  326. package/.next/standalone/src/app/api/system/workspaces/[id]/open/route.ts +0 -34
  327. package/.next/standalone/src/app/api/system/workspaces/[id]/refresh/route.ts +0 -32
  328. package/.next/standalone/src/app/api/system/workspaces/[id]/route.ts +0 -78
  329. package/.next/standalone/src/app/api/system/workspaces/route.ts +0 -128
  330. package/.next/standalone/src/app/api/upload/[...path]/route.ts +0 -85
  331. package/.next/standalone/src/app/api/wiki/app/route.ts +0 -60
  332. package/.next/standalone/src/app/api/wiki/backlinks/route.ts +0 -29
  333. package/.next/standalone/src/app/api/wiki/content/route.ts +0 -159
  334. package/.next/standalone/src/app/api/wiki/download/route.ts +0 -100
  335. package/.next/standalone/src/app/api/wiki/file/route.ts +0 -57
  336. package/.next/standalone/src/app/api/wiki/folder/route.ts +0 -34
  337. package/.next/standalone/src/app/api/wiki/git-branches/route.ts +0 -32
  338. package/.next/standalone/src/app/api/wiki/git-checkout/route.ts +0 -45
  339. package/.next/standalone/src/app/api/wiki/git-diff/route.ts +0 -33
  340. package/.next/standalone/src/app/api/wiki/git-file-info/route.ts +0 -27
  341. package/.next/standalone/src/app/api/wiki/git-history/route.ts +0 -27
  342. package/.next/standalone/src/app/api/wiki/git-pull/route.ts +0 -48
  343. package/.next/standalone/src/app/api/wiki/move/route.ts +0 -61
  344. package/.next/standalone/src/app/api/wiki/new-file/route.ts +0 -56
  345. package/.next/standalone/src/app/api/wiki/outlinks/route.ts +0 -76
  346. package/.next/standalone/src/app/api/wiki/page/route.ts +0 -92
  347. package/.next/standalone/src/app/api/wiki/presence/route.ts +0 -56
  348. package/.next/standalone/src/app/api/wiki/route.ts +0 -116
  349. package/.next/standalone/src/app/api/wiki/search/route.ts +0 -44
  350. package/.next/standalone/src/app/api/wiki/slugs/route.ts +0 -54
  351. package/.next/standalone/src/app/api/wiki/upload/route.ts +0 -95
  352. package/.next/standalone/src/app/api/wiki/watch/route.ts +0 -67
  353. package/.next/standalone/src/app/globals.css +0 -1249
  354. package/.next/standalone/src/app/icon.svg +0 -11
  355. package/.next/standalone/src/app/layout.tsx +0 -78
  356. package/.next/standalone/src/app/manifest.ts +0 -30
  357. package/.next/standalone/src/app/page.tsx +0 -3260
  358. package/.next/standalone/src/app/s/[token]/page.tsx +0 -357
  359. package/.next/standalone/src/app/signin/page.tsx +0 -16
  360. package/.next/standalone/src/app/signin/signin-form.tsx +0 -238
  361. package/.next/standalone/src/components/ai-panel/activity-row.tsx +0 -284
  362. package/.next/standalone/src/components/ai-panel/ai-panel.tsx +0 -311
  363. package/.next/standalone/src/components/ai-panel/token-section.tsx +0 -313
  364. package/.next/standalone/src/components/auth-settings-sheet.tsx +0 -474
  365. package/.next/standalone/src/components/confirm-dialog.tsx +0 -56
  366. package/.next/standalone/src/components/dir-picker.tsx +0 -606
  367. package/.next/standalone/src/components/editor/backlinks-panel.tsx +0 -139
  368. package/.next/standalone/src/components/editor/bubble-menu.tsx +0 -346
  369. package/.next/standalone/src/components/editor/callout-extension.ts +0 -36
  370. package/.next/standalone/src/components/editor/comment-pip.tsx +0 -56
  371. package/.next/standalone/src/components/editor/comment-thread.tsx +0 -254
  372. package/.next/standalone/src/components/editor/csv-viewer.tsx +0 -379
  373. package/.next/standalone/src/components/editor/document-outline.tsx +0 -230
  374. package/.next/standalone/src/components/editor/editor-toolbar.tsx +0 -564
  375. package/.next/standalone/src/components/editor/editor.tsx +0 -1327
  376. package/.next/standalone/src/components/editor/extensions/drag-handle.ts +0 -325
  377. package/.next/standalone/src/components/editor/extensions/heading-anchors.ts +0 -55
  378. package/.next/standalone/src/components/editor/extensions/proof-span.ts +0 -60
  379. package/.next/standalone/src/components/editor/extensions/resizable-image.tsx +0 -159
  380. package/.next/standalone/src/components/editor/extensions.ts +0 -150
  381. package/.next/standalone/src/components/editor/file-fallback-viewer.tsx +0 -75
  382. package/.next/standalone/src/components/editor/folder-index.tsx +0 -236
  383. package/.next/standalone/src/components/editor/google-doc-viewer.tsx +0 -73
  384. package/.next/standalone/src/components/editor/image-viewer.tsx +0 -57
  385. package/.next/standalone/src/components/editor/large-file-gate.tsx +0 -108
  386. package/.next/standalone/src/components/editor/link-popover.tsx +0 -111
  387. package/.next/standalone/src/components/editor/media-popover.tsx +0 -212
  388. package/.next/standalone/src/components/editor/media-viewer.tsx +0 -70
  389. package/.next/standalone/src/components/editor/mermaid-viewer.tsx +0 -286
  390. package/.next/standalone/src/components/editor/node-app-viewer.tsx +0 -328
  391. package/.next/standalone/src/components/editor/notebook-viewer.tsx +0 -371
  392. package/.next/standalone/src/components/editor/office/docx-viewer.tsx +0 -93
  393. package/.next/standalone/src/components/editor/office/office-chrome.tsx +0 -83
  394. package/.next/standalone/src/components/editor/office/pptx-viewer.tsx +0 -104
  395. package/.next/standalone/src/components/editor/office/xlsx-viewer.tsx +0 -192
  396. package/.next/standalone/src/components/editor/pdf-viewer.tsx +0 -32
  397. package/.next/standalone/src/components/editor/proof-span-popover.tsx +0 -162
  398. package/.next/standalone/src/components/editor/slash-commands.tsx +0 -629
  399. package/.next/standalone/src/components/editor/source-viewer.tsx +0 -289
  400. package/.next/standalone/src/components/editor/suggest-edit-popover.tsx +0 -229
  401. package/.next/standalone/src/components/editor/suggestion-card.tsx +0 -206
  402. package/.next/standalone/src/components/editor/table-menu.tsx +0 -232
  403. package/.next/standalone/src/components/editor/view-mode-comment-button.tsx +0 -77
  404. package/.next/standalone/src/components/editor/website-viewer.tsx +0 -75
  405. package/.next/standalone/src/components/editor/wiki-link-create-dialog.tsx +0 -189
  406. package/.next/standalone/src/components/editor/wiki-link-decorator.ts +0 -79
  407. package/.next/standalone/src/components/editor/wiki-link-extension.ts +0 -120
  408. package/.next/standalone/src/components/editor/wiki-link-picker.tsx +0 -250
  409. package/.next/standalone/src/components/layout/viewer-toolbar.tsx +0 -54
  410. package/.next/standalone/src/components/search/search-command-dialog.tsx +0 -246
  411. package/.next/standalone/src/components/search/sidebar-search-box.tsx +0 -121
  412. package/.next/standalone/src/components/search/snippet-text.tsx +0 -48
  413. package/.next/standalone/src/components/share-dialog.tsx +0 -307
  414. package/.next/standalone/src/components/theme-provider.tsx +0 -16
  415. package/.next/standalone/src/components/theme-toggle.tsx +0 -24
  416. package/.next/standalone/src/components/ui/badge.tsx +0 -35
  417. package/.next/standalone/src/components/ui/button.tsx +0 -56
  418. package/.next/standalone/src/components/ui/card.tsx +0 -63
  419. package/.next/standalone/src/components/ui/collapsible.tsx +0 -9
  420. package/.next/standalone/src/components/ui/command.tsx +0 -151
  421. package/.next/standalone/src/components/ui/context-menu.tsx +0 -191
  422. package/.next/standalone/src/components/ui/dialog.tsx +0 -119
  423. package/.next/standalone/src/components/ui/dropdown-menu.tsx +0 -194
  424. package/.next/standalone/src/components/ui/input.tsx +0 -22
  425. package/.next/standalone/src/components/ui/label.tsx +0 -25
  426. package/.next/standalone/src/components/ui/popover.tsx +0 -33
  427. package/.next/standalone/src/components/ui/scroll-area.tsx +0 -47
  428. package/.next/standalone/src/components/ui/select.tsx +0 -156
  429. package/.next/standalone/src/components/ui/separator.tsx +0 -30
  430. package/.next/standalone/src/components/ui/sheet.tsx +0 -140
  431. package/.next/standalone/src/components/ui/skeleton.tsx +0 -15
  432. package/.next/standalone/src/components/ui/switch.tsx +0 -28
  433. package/.next/standalone/src/components/ui/tabs.tsx +0 -54
  434. package/.next/standalone/src/components/ui/textarea.tsx +0 -21
  435. package/.next/standalone/src/components/ui/tip.tsx +0 -23
  436. package/.next/standalone/src/components/ui/toggle-group.tsx +0 -41
  437. package/.next/standalone/src/components/ui/tooltip.tsx +0 -27
  438. package/.next/standalone/src/components/view-width-toggle.tsx +0 -70
  439. package/.next/standalone/src/components/wiki/frontmatter-header.tsx +0 -164
  440. package/.next/standalone/src/hooks/use-is-mobile.ts +0 -14
  441. package/.next/standalone/src/lib/app-runner.ts +0 -272
  442. package/.next/standalone/src/lib/auth/admin.ts +0 -120
  443. package/.next/standalone/src/lib/auth/allowlist.ts +0 -50
  444. package/.next/standalone/src/lib/auth/client.ts +0 -4
  445. package/.next/standalone/src/lib/auth/csrf.ts +0 -68
  446. package/.next/standalone/src/lib/auth/server.ts +0 -215
  447. package/.next/standalone/src/lib/cabinets/tree.ts +0 -75
  448. package/.next/standalone/src/lib/config.ts +0 -114
  449. package/.next/standalone/src/lib/embeds/detect.ts +0 -142
  450. package/.next/standalone/src/lib/git-secrets.ts +0 -65
  451. package/.next/standalone/src/lib/git.ts +0 -503
  452. package/.next/standalone/src/lib/google/detect.ts +0 -107
  453. package/.next/standalone/src/lib/markdown/parse-frontmatter.ts +0 -104
  454. package/.next/standalone/src/lib/markdown/remark-wikilinks.ts +0 -100
  455. package/.next/standalone/src/lib/markdown/sanitize-schema.ts +0 -106
  456. package/.next/standalone/src/lib/markdown/to-html.ts +0 -282
  457. package/.next/standalone/src/lib/markdown/to-markdown.ts +0 -252
  458. package/.next/standalone/src/lib/proof/activity-shared.ts +0 -31
  459. package/.next/standalone/src/lib/proof/activity.ts +0 -74
  460. package/.next/standalone/src/lib/proof/audit.ts +0 -88
  461. package/.next/standalone/src/lib/proof/auth.ts +0 -143
  462. package/.next/standalone/src/lib/proof/block-refs.ts +0 -133
  463. package/.next/standalone/src/lib/proof/blocks.ts +0 -73
  464. package/.next/standalone/src/lib/proof/client-auth.ts +0 -23
  465. package/.next/standalone/src/lib/proof/collab-state.ts +0 -81
  466. package/.next/standalone/src/lib/proof/event-bus.ts +0 -47
  467. package/.next/standalone/src/lib/proof/file-lock.ts +0 -43
  468. package/.next/standalone/src/lib/proof/glob.ts +0 -51
  469. package/.next/standalone/src/lib/proof/idempotency.ts +0 -37
  470. package/.next/standalone/src/lib/proof/lease.ts +0 -117
  471. package/.next/standalone/src/lib/proof/mutex.ts +0 -36
  472. package/.next/standalone/src/lib/proof/ops-applier.ts +0 -727
  473. package/.next/standalone/src/lib/proof/owner-auth.ts +0 -2
  474. package/.next/standalone/src/lib/proof/pending.ts +0 -97
  475. package/.next/standalone/src/lib/proof/proof-span.ts +0 -141
  476. package/.next/standalone/src/lib/proof/rate-limit.ts +0 -53
  477. package/.next/standalone/src/lib/proof/raw-fs.ts +0 -197
  478. package/.next/standalone/src/lib/proof/register-rate-limit.ts +0 -53
  479. package/.next/standalone/src/lib/proof/registry.ts +0 -195
  480. package/.next/standalone/src/lib/proof/sidecar.ts +0 -103
  481. package/.next/standalone/src/lib/proof/suggest-capture.ts +0 -69
  482. package/.next/standalone/src/lib/proof/types.ts +0 -182
  483. package/.next/standalone/src/lib/proof-config.ts +0 -14
  484. package/.next/standalone/src/lib/root-dir.ts +0 -35
  485. package/.next/standalone/src/lib/search/indexable-exts.ts +0 -25
  486. package/.next/standalone/src/lib/search/indexer.ts +0 -634
  487. package/.next/standalone/src/lib/search/sanitize.ts +0 -35
  488. package/.next/standalone/src/lib/search/search-db.ts +0 -57
  489. package/.next/standalone/src/lib/search/watcher-pool.ts +0 -79
  490. package/.next/standalone/src/lib/shared-docs/db.ts +0 -177
  491. package/.next/standalone/src/lib/toast.ts +0 -9
  492. package/.next/standalone/src/lib/utils.ts +0 -6
  493. package/.next/standalone/src/lib/wiki-helpers.ts +0 -36
  494. package/.next/standalone/src/lib/workspace-client.ts +0 -82
  495. package/.next/standalone/src/lib/workspace-context.ts +0 -173
  496. package/.next/standalone/src/lib/workspaces.ts +0 -400
  497. package/.next/standalone/src/middleware.ts +0 -44
  498. package/.next/standalone/src/stores/ai-panel-store.ts +0 -79
  499. package/.next/standalone/src/stores/editor-store.ts +0 -439
  500. package/.next/standalone/src/stores/pin-store.ts +0 -56
  501. package/.next/standalone/src/stores/proof-store.ts +0 -124
  502. package/.next/standalone/src/stores/recent-store.ts +0 -51
  503. package/.next/standalone/src/stores/search-store.ts +0 -104
  504. package/.next/standalone/src/stores/show-hidden-store.ts +0 -26
  505. package/.next/standalone/src/stores/sidebar-width-store.ts +0 -39
  506. package/.next/standalone/src/stores/skin-store.ts +0 -42
  507. package/.next/standalone/src/stores/tree-store.ts +0 -52
  508. package/.next/standalone/src/stores/view-width-store.ts +0 -101
  509. package/.next/standalone/src/stores/wiki-slugs-store.ts +0 -75
  510. package/.next/standalone/src/tests/proof/activity-aggregator.test.ts +0 -146
  511. package/.next/standalone/src/tests/proof/admin-create-user.test.ts +0 -43
  512. package/.next/standalone/src/tests/proof/agent-fs.test.ts +0 -973
  513. package/.next/standalone/src/tests/proof/agent-ownership.test.ts +0 -140
  514. package/.next/standalone/src/tests/proof/agent-workspace-scope.test.ts +0 -134
  515. package/.next/standalone/src/tests/proof/agents-install.test.ts +0 -110
  516. package/.next/standalone/src/tests/proof/bench-write.ts +0 -179
  517. package/.next/standalone/src/tests/proof/better-auth.test.ts +0 -68
  518. package/.next/standalone/src/tests/proof/block-refs.test.ts +0 -108
  519. package/.next/standalone/src/tests/proof/blocks.test.ts +0 -92
  520. package/.next/standalone/src/tests/proof/collab-state.test.ts +0 -501
  521. package/.next/standalone/src/tests/proof/comments-ops.test.ts +0 -177
  522. package/.next/standalone/src/tests/proof/editor-roundtrip.test.ts +0 -85
  523. package/.next/standalone/src/tests/proof/external-edit.test.ts +0 -58
  524. package/.next/standalone/src/tests/proof/file-lock.test.ts +0 -80
  525. package/.next/standalone/src/tests/proof/git-branches-checkout.test.ts +0 -136
  526. package/.next/standalone/src/tests/proof/git-read-features.test.ts +0 -473
  527. package/.next/standalone/src/tests/proof/git-secrets.test.ts +0 -138
  528. package/.next/standalone/src/tests/proof/git-sparse.test.ts +0 -257
  529. package/.next/standalone/src/tests/proof/git-workspace.test.ts +0 -135
  530. package/.next/standalone/src/tests/proof/git.test.ts +0 -243
  531. package/.next/standalone/src/tests/proof/glob.test.ts +0 -82
  532. package/.next/standalone/src/tests/proof/helpers/auth-session.ts +0 -27
  533. package/.next/standalone/src/tests/proof/markdown-to-html.test.ts +0 -46
  534. package/.next/standalone/src/tests/proof/ops-applier.test.ts +0 -368
  535. package/.next/standalone/src/tests/proof/owner-init.test.ts +0 -2
  536. package/.next/standalone/src/tests/proof/parse-frontmatter.test.ts +0 -60
  537. package/.next/standalone/src/tests/proof/preload.ts +0 -21
  538. package/.next/standalone/src/tests/proof/proof-span.test.ts +0 -98
  539. package/.next/standalone/src/tests/proof/rate-limit.test.ts +0 -54
  540. package/.next/standalone/src/tests/proof/readonly-enforcement.test.ts +0 -161
  541. package/.next/standalone/src/tests/proof/reconcile-sidecar.test.ts +0 -195
  542. package/.next/standalone/src/tests/proof/registration-flow.test.ts +0 -330
  543. package/.next/standalone/src/tests/proof/registry.test.ts +0 -169
  544. package/.next/standalone/src/tests/proof/routes.test.ts +0 -516
  545. package/.next/standalone/src/tests/proof/search-index.test.ts +0 -376
  546. package/.next/standalone/src/tests/proof/sidecar-lifecycle.test.ts +0 -177
  547. package/.next/standalone/src/tests/proof/sidecar-trim.test.ts +0 -58
  548. package/.next/standalone/src/tests/proof/suggestion-ops.test.ts +0 -280
  549. package/.next/standalone/src/tests/proof/wiki-content-put.test.ts +0 -140
  550. package/.next/standalone/src/tests/proof/wiki-routes-auth.test.ts +0 -208
  551. package/.next/standalone/src/tests/proof/workspace-isolation.test.ts +0 -87
  552. package/.next/standalone/src/tests/proof/workspaces-api.test.ts +0 -227
  553. package/.next/standalone/src/types/index.ts +0 -47
  554. package/.next/standalone/tailwind.config.ts +0 -191
  555. package/.next/standalone/tsconfig.json +0 -41
  556. package/.next/standalone/tsconfig.tsbuildinfo +0 -1
  557. /package/.next/standalone/.next/static/{WMOTgfV82apmdovxzgbMx → ecpoWt_SP3WkUTh0NsnuT}/_buildManifest.js +0 -0
  558. /package/.next/standalone/.next/static/{WMOTgfV82apmdovxzgbMx → ecpoWt_SP3WkUTh0NsnuT}/_clientMiddlewareManifest.js +0 -0
  559. /package/.next/standalone/.next/static/{WMOTgfV82apmdovxzgbMx → ecpoWt_SP3WkUTh0NsnuT}/_ssgManifest.js +0 -0
@@ -1,82 +0,0 @@
1
- import { test } from "node:test";
2
- import assert from "node:assert/strict";
3
- import { matchGlob } from "../../lib/proof/glob.js";
4
-
5
- // ── ** matches ────────────────────────────────────────────────────────────────
6
-
7
- test("** matches file in root", () => {
8
- assert.ok(matchGlob("**/*", "notes.md"));
9
- });
10
-
11
- test("** matches file in subdirectory", () => {
12
- assert.ok(matchGlob("**/*", "work/notes.md"));
13
- });
14
-
15
- test("** matches deeply nested file", () => {
16
- assert.ok(matchGlob("**/*", "a/b/c/d/notes.md"));
17
- });
18
-
19
- test("**/*.md matches only .md files at any depth", () => {
20
- assert.ok(matchGlob("**/*.md", "notes.md"));
21
- assert.ok(matchGlob("**/*.md", "work/notes.md"));
22
- assert.ok(matchGlob("**/*.md", "a/b/notes.md"));
23
- assert.ok(!matchGlob("**/*.md", "notes.txt"));
24
- assert.ok(!matchGlob("**/*.md", "work/notes.txt"));
25
- });
26
-
27
- test("** matches zero path segments (root file)", () => {
28
- assert.ok(matchGlob("**/*", "root.md"));
29
- });
30
-
31
- // ── * does not cross / ────────────────────────────────────────────────────────
32
-
33
- test("* does not match path separator", () => {
34
- assert.ok(!matchGlob("*.md", "work/notes.md"));
35
- assert.ok(matchGlob("*.md", "notes.md"));
36
- });
37
-
38
- test("* matches empty string at same level", () => {
39
- assert.ok(matchGlob("notes*", "notes.md"));
40
- assert.ok(matchGlob("notes*", "notes"));
41
- assert.ok(!matchGlob("notes*", "a/notes.md"));
42
- });
43
-
44
- // ── ? matches single non-slash char ──────────────────────────────────────────
45
-
46
- test("? matches single character", () => {
47
- assert.ok(matchGlob("note?.md", "notes.md"));
48
- assert.ok(matchGlob("note?.md", "notex.md"));
49
- assert.ok(!matchGlob("note?.md", "notexy.md"));
50
- assert.ok(!matchGlob("note?.md", "work/notes.md"));
51
- });
52
-
53
- // ── Literal match ─────────────────────────────────────────────────────────────
54
-
55
- test("Literal pattern matches exact path", () => {
56
- assert.ok(matchGlob("notes/work.md", "notes/work.md"));
57
- assert.ok(!matchGlob("notes/work.md", "notes/other.md"));
58
- });
59
-
60
- test("Literal pattern anchored — no partial match", () => {
61
- assert.ok(!matchGlob("notes", "notes/work.md"));
62
- assert.ok(!matchGlob("notes.md", "xnotes.md"));
63
- });
64
-
65
- // ── Prefix patterns ───────────────────────────────────────────────────────────
66
-
67
- test("work/** matches files under work/", () => {
68
- assert.ok(matchGlob("work/**", "work/notes.md"));
69
- assert.ok(matchGlob("work/**", "work/sub/notes.md"));
70
- assert.ok(!matchGlob("work/**", "other/notes.md"));
71
- assert.ok(!matchGlob("work/**", "notes.md"));
72
- });
73
-
74
- // ── Regex special char escaping ────────────────────────────────────────────────
75
-
76
- test("Dots in pattern treated as literal", () => {
77
- // notes.md pattern: dot is literal, must not match notesXmd
78
- assert.ok(matchGlob("notes.md", "notes.md"));
79
- assert.ok(!matchGlob("notes.md", "notesXmd"));
80
- // Pattern without dots matches its own literal value
81
- assert.ok(matchGlob("notesXmd", "notesXmd"));
82
- });
@@ -1,27 +0,0 @@
1
- /**
2
- * Shared helper: create a signed-in user session for use in route handler tests.
3
- * Callers must set process.env.HOME to an isolated tmpdir before importing auth/server.
4
- */
5
-
6
- export async function makeUserSession(): Promise<string> {
7
- const { auth, authReady } = await import("../../../lib/auth/server.js");
8
- await authReady();
9
- const res = await auth.api.signUpEmail({
10
- body: {
11
- email: `t${Date.now()}${Math.random().toString(36).slice(2, 6)}@test.local`,
12
- password: "test1234!",
13
- name: "Test User",
14
- },
15
- asResponse: true,
16
- });
17
- if (!res.ok) {
18
- const text = await res.text();
19
- throw new Error("signUpEmail failed: " + res.status + " " + text);
20
- }
21
- const setCookie = res.headers.get("set-cookie") ?? "";
22
- const cookies = setCookie
23
- .split(/,(?=[^ ])/)
24
- .map((c) => c.split(";")[0].trim())
25
- .join("; ");
26
- return cookies;
27
- }
@@ -1,46 +0,0 @@
1
- import { test } from "node:test";
2
- import assert from "node:assert/strict";
3
- import { markdownToHtml } from "../../lib/markdown/to-html.js";
4
-
5
- // These tests guard the read-only viewer path (sanitize: true). The sanitize
6
- // pipeline must actually run end to end: a missing HTML parser previously made
7
- // it throw, which blanked the viewer body. Keep runtime coverage here.
8
-
9
- test("sanitize path renders body, tables, and headings", async () => {
10
- const md = `## Section
11
-
12
- <table><tbody><tr><td><p>Cell</p></td></tr></tbody></table>
13
-
14
- Paragraph text.`;
15
- const html = await markdownToHtml(md, { sanitize: true });
16
- assert.ok(html.includes("<h2"), "heading should render");
17
- assert.ok(html.includes("<table"), "raw HTML table should survive");
18
- assert.ok(html.includes("Paragraph text."), "body should not be dropped");
19
- });
20
-
21
- test("sanitize path strips scripts, event handlers, and javascript: urls", async () => {
22
- const md = `<img src=x onerror="alert(1)">
23
- <script>alert(2)</script>
24
-
25
- [x](javascript:alert(3))`;
26
- const html = await markdownToHtml(md, { sanitize: true });
27
- assert.ok(!html.includes("onerror"), "onerror handler must be stripped");
28
- assert.ok(!html.includes("<script"), "script tag must be stripped");
29
- assert.ok(!html.includes("javascript:"), "javascript: url must be stripped");
30
- });
31
-
32
- test("sanitize path preserves the wiki-link contract", async () => {
33
- const html = await markdownToHtml("See [[my-page|Alias]] and [[other#sec]].", {
34
- sanitize: true,
35
- });
36
- assert.ok(html.includes('data-wiki-link="true"'), "wiki-link marker kept");
37
- assert.ok(html.includes('data-slug="my-page"'), "slug kept");
38
- assert.ok(html.includes('data-alias="Alias"'), "alias kept");
39
- assert.ok(html.includes('data-anchor="sec"'), "anchor kept");
40
- });
41
-
42
- test("unsanitized editor path leaves HTML untouched", async () => {
43
- const md = `<table><tbody><tr><td>x</td></tr></tbody></table>`;
44
- const html = await markdownToHtml(md);
45
- assert.ok(html.includes("<table"), "editor path keeps raw HTML");
46
- });
@@ -1,368 +0,0 @@
1
- import { test, before, after } from "node:test";
2
- import assert from "node:assert/strict";
3
- import { mkdtemp, writeFile, readFile, rm } from "node:fs/promises";
4
- import { tmpdir } from "node:os";
5
- import path from "node:path";
6
- import { applyOps, readSnapshot } from "../../lib/proof/ops-applier.js";
7
- import { setRootDir } from "../../lib/root-dir.js";
8
- import { idempotency } from "../../lib/proof/idempotency.js";
9
-
10
- let tmpRoot: string;
11
-
12
- before(async () => {
13
- tmpRoot = await mkdtemp(path.join(tmpdir(), "wiki-proof-test-"));
14
- setRootDir(tmpRoot);
15
- });
16
-
17
- after(async () => {
18
- await rm(tmpRoot, { recursive: true, force: true });
19
- });
20
-
21
- async function writeDoc(name: string, content: string): Promise<void> {
22
- await writeFile(path.join(tmpRoot, name), content, "utf-8");
23
- }
24
-
25
- async function readDoc(name: string): Promise<string> {
26
- return readFile(path.join(tmpRoot, name), "utf-8");
27
- }
28
-
29
- test("readSnapshot returns null for missing file", async () => {
30
- const snap = await readSnapshot(tmpRoot, "nonexistent.md");
31
- assert.equal(snap, null);
32
- });
33
-
34
- test("readSnapshot returns blocks for existing file", async () => {
35
- await writeDoc("snap-test.md", "# Title\n\nParagraph.\n");
36
- const snap = await readSnapshot(tmpRoot, "snap-test.md");
37
- assert.ok(snap !== null);
38
- assert.equal(snap!.blocks.length, 2);
39
- assert.equal(snap!.blocks[0].type, "heading");
40
- assert.equal(snap!.blocks[1].type, "paragraph");
41
- assert.equal(snap!.revision, 0);
42
- });
43
-
44
- test("block.replace happy path", async () => {
45
- await writeDoc("replace.md", "# Title\n\nOriginal paragraph.\n");
46
- const snap = await readSnapshot(tmpRoot, "replace.md");
47
- const paraRef = snap!.blocks[1].ref;
48
-
49
- const result = await applyOps({
50
- rootDir: tmpRoot,
51
- mdPath: "replace.md",
52
- baseRevision: 0,
53
- by: "human",
54
- ops: [{ type: "block.replace", ref: paraRef, markdown: "Replaced paragraph." }],
55
- });
56
-
57
- assert.ok(result.ok, `expected ok: ${JSON.stringify(result)}`);
58
- assert.equal(result.ok ? result.snapshot.revision : -1, 1);
59
- const content = await readDoc("replace.md");
60
- assert.ok(content.includes("Replaced paragraph."), `content: ${content}`);
61
- assert.ok(!content.includes("Original paragraph."), `old content: ${content}`);
62
- });
63
-
64
- test("block.insertAfter happy path", async () => {
65
- await writeDoc("insert.md", "# Title\n\nParagraph.\n");
66
- const snap = await readSnapshot(tmpRoot, "insert.md");
67
- const titleRef = snap!.blocks[0].ref;
68
-
69
- const result = await applyOps({
70
- rootDir: tmpRoot,
71
- mdPath: "insert.md",
72
- baseRevision: 0,
73
- by: "human",
74
- ops: [{ type: "block.insertAfter", ref: titleRef, markdown: "New paragraph." }],
75
- });
76
-
77
- assert.ok(result.ok);
78
- const content = await readDoc("insert.md");
79
- assert.ok(content.includes("New paragraph."), `inserted: ${content}`);
80
- assert.ok(content.includes("# Title"), `title preserved: ${content}`);
81
- });
82
-
83
- test("block.insertBefore happy path", async () => {
84
- await writeDoc("insertbefore.md", "# Title\n\nParagraph.\n");
85
- const snap = await readSnapshot(tmpRoot, "insertbefore.md");
86
- const paraRef = snap!.blocks[1].ref;
87
-
88
- const result = await applyOps({
89
- rootDir: tmpRoot,
90
- mdPath: "insertbefore.md",
91
- baseRevision: 0,
92
- by: "human",
93
- ops: [{ type: "block.insertBefore", ref: paraRef, markdown: "Before." }],
94
- });
95
-
96
- assert.ok(result.ok);
97
- const content = await readDoc("insertbefore.md");
98
- assert.ok(content.includes("Before."), `inserted: ${content}`);
99
- });
100
-
101
- test("block.delete happy path", async () => {
102
- await writeDoc("delete.md", "# Title\n\nTo delete.\n\n## Section\n");
103
- const snap = await readSnapshot(tmpRoot, "delete.md");
104
- const paraRef = snap!.blocks[1].ref;
105
-
106
- const result = await applyOps({
107
- rootDir: tmpRoot,
108
- mdPath: "delete.md",
109
- baseRevision: 0,
110
- by: "human",
111
- ops: [{ type: "block.delete", ref: paraRef }],
112
- });
113
-
114
- assert.ok(result.ok);
115
- const content = await readDoc("delete.md");
116
- assert.ok(!content.includes("To delete."), `deleted: ${content}`);
117
- assert.ok(content.includes("# Title"), `title preserved: ${content}`);
118
- });
119
-
120
- test("block.append adds to end", async () => {
121
- await writeDoc("append.md", "# Title\n");
122
- const result = await applyOps({
123
- rootDir: tmpRoot,
124
- mdPath: "append.md",
125
- baseRevision: 0,
126
- by: "human",
127
- ops: [{ type: "block.append", markdown: "Appended." }],
128
- });
129
-
130
- assert.ok(result.ok);
131
- const content = await readDoc("append.md");
132
- assert.ok(content.includes("Appended."), `appended: ${content}`);
133
- });
134
-
135
- test("block.prepend adds to start", async () => {
136
- await writeDoc("prepend.md", "# Title\n");
137
- const result = await applyOps({
138
- rootDir: tmpRoot,
139
- mdPath: "prepend.md",
140
- baseRevision: 0,
141
- by: "human",
142
- ops: [{ type: "block.prepend", markdown: "Prepended." }],
143
- });
144
-
145
- assert.ok(result.ok);
146
- const content = await readDoc("prepend.md");
147
- assert.ok(content.startsWith("Prepended."), `prepended: ${content}`);
148
- });
149
-
150
- test("STALE_REVISION returned when baseRevision wrong", async () => {
151
- await writeDoc("stale.md", "# Title\n\nParagraph.\n");
152
- const snap = await readSnapshot(tmpRoot, "stale.md");
153
- const paraRef = snap!.blocks[1].ref;
154
-
155
- const result = await applyOps({
156
- rootDir: tmpRoot,
157
- mdPath: "stale.md",
158
- baseRevision: 99, // wrong
159
- by: "human",
160
- ops: [{ type: "block.replace", ref: paraRef, markdown: "New." }],
161
- });
162
-
163
- assert.ok(!result.ok);
164
- assert.equal(result.ok ? "" : result.code, "STALE_REVISION");
165
- assert.equal(result.ok ? 0 : result.status, 409);
166
- });
167
-
168
- test("BLOCK_NOT_FOUND returned for stale ref", async () => {
169
- await writeDoc("notfound.md", "# Title\n");
170
-
171
- const result = await applyOps({
172
- rootDir: tmpRoot,
173
- mdPath: "notfound.md",
174
- baseRevision: 0,
175
- by: "human",
176
- ops: [{ type: "block.replace", ref: "bdeadbeef", markdown: "New." }],
177
- });
178
-
179
- assert.ok(!result.ok);
180
- assert.equal(result.ok ? "" : result.code, "BLOCK_NOT_FOUND");
181
- assert.equal(result.ok ? 0 : result.status, 409);
182
- });
183
-
184
- test("FILE_NOT_FOUND for missing file", async () => {
185
- const result = await applyOps({
186
- rootDir: tmpRoot,
187
- mdPath: "does-not-exist.md",
188
- baseRevision: 0,
189
- by: "human",
190
- ops: [],
191
- });
192
-
193
- assert.ok(!result.ok);
194
- assert.equal(result.ok ? "" : result.code, "FILE_NOT_FOUND");
195
- assert.equal(result.ok ? 0 : result.status, 404);
196
- });
197
-
198
- test("AI insertAfter wraps text in proof-span", async () => {
199
- await writeDoc("ai-wrap.md", "# Title\n\nParagraph.\n");
200
- const snap = await readSnapshot(tmpRoot, "ai-wrap.md");
201
- const titleRef = snap!.blocks[0].ref;
202
-
203
- const result = await applyOps({
204
- rootDir: tmpRoot,
205
- mdPath: "ai-wrap.md",
206
- baseRevision: 0,
207
- by: "ai:claude",
208
- ops: [{
209
- type: "block.insertAfter",
210
- ref: titleRef,
211
- markdown: "AI wrote this content.",
212
- basis: "described",
213
- basisDetail: "user asked for it",
214
- }],
215
- });
216
-
217
- assert.ok(result.ok, `expected ok: ${JSON.stringify(result)}`);
218
- const content = await readDoc("ai-wrap.md");
219
- assert.ok(content.includes("<proof-span"), `proof-span missing: ${content}`);
220
- assert.ok(content.includes('origin="ai"'), `origin missing: ${content}`);
221
- assert.ok(content.includes('by="ai:claude"'), `by missing: ${content}`);
222
- assert.ok(content.includes("AI wrote this content."), `content missing: ${content}`);
223
- });
224
-
225
- test("comment.add and comment.reply ops", async () => {
226
- await writeDoc("comment.md", "# Title\n\nParagraph.\n");
227
- const snap = await readSnapshot(tmpRoot, "comment.md");
228
- const paraRef = snap!.blocks[1].ref;
229
-
230
- const addResult = await applyOps({
231
- rootDir: tmpRoot,
232
- mdPath: "comment.md",
233
- baseRevision: 0,
234
- by: "human",
235
- ops: [{ type: "comment.add", ref: paraRef, text: "Why this?" }],
236
- });
237
- assert.ok(addResult.ok);
238
- const commentId = addResult.ok ? addResult.snapshot.comments[0]?.id : null;
239
- assert.ok(commentId, "comment should have an id");
240
-
241
- const replyResult = await applyOps({
242
- rootDir: tmpRoot,
243
- mdPath: "comment.md",
244
- baseRevision: 1,
245
- by: "ai:claude",
246
- ops: [{ type: "comment.reply", commentId: commentId!, text: "Because of X." }],
247
- });
248
- assert.ok(replyResult.ok);
249
- const comment = replyResult.ok
250
- ? replyResult.snapshot.comments.find((c) => c.id === commentId)
251
- : null;
252
- assert.ok(comment, "comment should be in snapshot");
253
- assert.equal(comment!.turns.length, 2, "should have 2 turns");
254
- assert.equal(comment!.turns[1].text, "Because of X.");
255
- });
256
-
257
- test("suggestion.add and suggestion.accept", async () => {
258
- await writeDoc("suggest.md", "# Title\n\nOriginal.\n");
259
- const snap = await readSnapshot(tmpRoot, "suggest.md");
260
- const paraRef = snap!.blocks[1].ref;
261
-
262
- const addResult = await applyOps({
263
- rootDir: tmpRoot,
264
- mdPath: "suggest.md",
265
- baseRevision: 0,
266
- by: "ai:claude",
267
- ops: [{
268
- type: "suggestion.add",
269
- ref: paraRef,
270
- kind: "replace",
271
- markdown: "Suggested replacement.",
272
- basis: "described",
273
- }],
274
- });
275
- assert.ok(addResult.ok, `add: ${JSON.stringify(addResult)}`);
276
- const sugId = addResult.ok ? addResult.snapshot.suggestions[0]?.id : null;
277
- assert.ok(sugId, "suggestion should have an id");
278
-
279
- const acceptResult = await applyOps({
280
- rootDir: tmpRoot,
281
- mdPath: "suggest.md",
282
- baseRevision: 1,
283
- by: "human",
284
- ops: [{ type: "suggestion.accept", suggestionId: sugId! }],
285
- });
286
- assert.ok(acceptResult.ok, `accept: ${JSON.stringify(acceptResult)}`);
287
- // Suggestion should be gone from pending
288
- const pending = acceptResult.ok ? acceptResult.snapshot.suggestions : [];
289
- assert.equal(pending.length, 0, "no pending suggestions after accept");
290
- // File should have new content
291
- const content = await readDoc("suggest.md");
292
- assert.ok(content.includes("Suggested replacement."), `content: ${content}`);
293
- });
294
-
295
- test("suggestion.reject moves to archive", async () => {
296
- await writeDoc("reject.md", "# Title\n\nOriginal.\n");
297
- const snap = await readSnapshot(tmpRoot, "reject.md");
298
- const paraRef = snap!.blocks[1].ref;
299
-
300
- const addResult = await applyOps({
301
- rootDir: tmpRoot,
302
- mdPath: "reject.md",
303
- baseRevision: 0,
304
- by: "ai:claude",
305
- ops: [{
306
- type: "suggestion.add",
307
- ref: paraRef,
308
- kind: "replace",
309
- markdown: "Rejected suggestion.",
310
- }],
311
- });
312
- assert.ok(addResult.ok);
313
- const sugId = addResult.ok ? addResult.snapshot.suggestions[0]?.id : null;
314
-
315
- const rejectResult = await applyOps({
316
- rootDir: tmpRoot,
317
- mdPath: "reject.md",
318
- baseRevision: 1,
319
- by: "human",
320
- ops: [{ type: "suggestion.reject", suggestionId: sugId! }],
321
- });
322
- assert.ok(rejectResult.ok);
323
- const pending = rejectResult.ok ? rejectResult.snapshot.suggestions : [];
324
- assert.equal(pending.length, 0, "no pending suggestions after reject");
325
- // File should NOT have been changed
326
- const content = await readDoc("reject.md");
327
- assert.ok(content.includes("Original."), `content unchanged: ${content}`);
328
- });
329
-
330
- test("events emitted for ops", async () => {
331
- await writeDoc("events.md", "# Title\n\nParagraph.\n");
332
- const snap = await readSnapshot(tmpRoot, "events.md");
333
- const paraRef = snap!.blocks[1].ref;
334
-
335
- const result = await applyOps({
336
- rootDir: tmpRoot,
337
- mdPath: "events.md",
338
- baseRevision: 0,
339
- by: "human",
340
- ops: [{ type: "block.replace", ref: paraRef, markdown: "New." }],
341
- });
342
-
343
- assert.ok(result.ok);
344
- assert.ok(result.ok && result.emittedEvents.length > 0, "events should be emitted");
345
- assert.equal(result.ok ? result.emittedEvents[0].type : "", "block.replaced");
346
- });
347
-
348
- test("idempotency: same key returns cached response", async () => {
349
- await writeDoc("idem.md", "# Title\n\nParagraph.\n");
350
- const snap = await readSnapshot(tmpRoot, "idem.md");
351
- const paraRef = snap!.blocks[1].ref;
352
-
353
- const key = "test-idem-key-" + Date.now();
354
- const payload = {
355
- payloadHash: "abc",
356
- status: 200,
357
- body: JSON.stringify({ cached: true }),
358
- };
359
- idempotency.set(key, payload);
360
-
361
- const cached = idempotency.get(key);
362
- assert.ok(cached !== null, "cached entry should exist");
363
- assert.equal(cached!.body, JSON.stringify({ cached: true }));
364
- assert.equal(cached!.status, 200);
365
-
366
- // Different key should not be cached
367
- assert.equal(idempotency.get("other-key"), null);
368
- });
@@ -1,2 +0,0 @@
1
- // Removed: /api/owner/init is now a 308 redirect to /signin (Better Auth).
2
- // No tests needed.
@@ -1,60 +0,0 @@
1
- import { test } from "node:test";
2
- import assert from "node:assert/strict";
3
- import { parseFrontmatter } from "../../lib/markdown/parse-frontmatter.js";
4
-
5
- test("parses valid frontmatter and returns body", () => {
6
- const text = `---
7
- title: Hello
8
- status: draft
9
- tags: [a, b, c]
10
- ---
11
-
12
- # Body heading
13
-
14
- Some text.`;
15
- const { data, body } = parseFrontmatter(text);
16
- assert.equal(data.title, "Hello");
17
- assert.equal(data.status, "draft");
18
- assert.deepEqual(data.tags, ["a", "b", "c"]);
19
- assert.ok(body.trimStart().startsWith("# Body heading"));
20
- });
21
-
22
- test("does not swallow body when a stray --- HR appears far below", () => {
23
- // Opening fence, but the content is markdown (heading), and the only later
24
- // `---` is a horizontal rule near the end. The parser must not treat the
25
- // whole document as frontmatter.
26
- const text = `---
27
-
28
- ## title: Collapsed heading not YAML
29
-
30
- # Real Title
31
-
32
- Intro paragraph.
33
-
34
- ---
35
-
36
- **Next step:** trailing line.`;
37
- const { data, body } = parseFrontmatter(text);
38
- assert.deepEqual(data, {}, "no keys should be parsed");
39
- assert.ok(body.includes("# Real Title"), "body must retain the document");
40
- assert.ok(body.includes("Intro paragraph."), "body must not be swallowed");
41
- });
42
-
43
- test("returns empty data when block has no YAML keys", () => {
44
- const text = `---
45
- just some prose
46
- more prose
47
- ---
48
-
49
- Body.`;
50
- const { data, body } = parseFrontmatter(text);
51
- assert.deepEqual(data, {});
52
- assert.equal(body, text, "entire text preserved as body");
53
- });
54
-
55
- test("no frontmatter fence returns text unchanged", () => {
56
- const text = `# Just a doc\n\nNo frontmatter here.`;
57
- const { data, body } = parseFrontmatter(text);
58
- assert.deepEqual(data, {});
59
- assert.equal(body, text);
60
- });
@@ -1,21 +0,0 @@
1
- /**
2
- * Test preload — runs before any test module is imported (via `tsx --import`).
3
- *
4
- * auth/server.ts resolves the SQLite DB path from $HOME at module-load time.
5
- * Several test files import route handlers (and thus auth/server) at the top of
6
- * the file, before their before() hook can override HOME. Without this preload
7
- * those imports freeze the DB path to the real ~/.wiki-viewer/auth.db and the
8
- * suite writes thousands of @test.local users into it.
9
- *
10
- * Forcing HOME to a throwaway tmp dir here, before anything else loads,
11
- * guarantees every test run is isolated from the developer's real config.
12
- */
13
- import { mkdtempSync } from "node:fs";
14
- import { tmpdir } from "node:os";
15
- import path from "node:path";
16
-
17
- if (!process.env.WIKI_TEST_HOME) {
18
- const home = mkdtempSync(path.join(tmpdir(), "wiki-test-home-"));
19
- process.env.HOME = home;
20
- process.env.WIKI_TEST_HOME = home;
21
- }